1. 程式人生 > 其它 >spring boot控制層controller詳解

spring boot控制層controller詳解

Controller的使用

@Controller 處理http請求
@RestController Spring4之後新加的註解,原來返回json需要@ResponseBody配合@Controller
@RequestMapping 配置url對映

專案前後臺互動的話 無非兩種方式

一種普通整體頁面提交,比如form提交;

還有一種區域性重新整理,或者叫做非同步重新整理,ajax提交;

@Controller就是整體頁面重新整理提交的處理註解

@RestController就是ajax提交,一般返回json格式

各有用處的;

這裡我們分別來演示上面兩種互動

首先演示下@Controller整體頁面互動

這裡的話請求後臺,必須返回一個檢視,以前我們一般用Jsp,

但是SpringBoot不推薦我們實用jsp,主要是強調前後臺分離;

官方推薦的是這幾種模版檢視引擎,我一般推薦Freemarker和Velocity;


後面專門推出一起Freemarker或者Velocity教程;

我們用Freemarker來演示下;

首先第一步,新增Freemarker支援,我們有兩種方式,

第一種 直接找依賴 然後貼到pom.xml裡,這種費時間

我們用第二種,直接工具,開啟pom.xml

alt+/ 提示

點下 Edit Starters

選擇Freemarker,然後點“OK”即可

這樣就自動添加了依賴,

< dependency >      < groupId >org.springframework.boot</ groupId >      < artifactId >spring-boot-starter-freemarker</ artifactId > </
dependency >

然後我們新建一個新的Controller類 HelloWorldFreemakerController

package  com.gaoxue;   import  org.springframework.stereotype.Controller; import  org.springframework.web.bind.annotation.RequestMapping; import  org.springframework.web.servlet.ModelAndView;   /**   * 返回到freemaker檢視   * @author user   *   */ @Controller @RequestMapping ( "/freemarker" ) public  class  HelloWorldFreemakerController {        /**       * 設定資料,返回到freemarker檢視       * @return       */          @RequestMapping ( "/say" )      public  ModelAndView say(){          ModelAndView mav= new  ModelAndView();          mav.addObject( "message" "hello,spring boot!" );          mav.setViewName( "helloWorld" );          return  mav;      } }

定義一個message,設定返回檢視helloWorld

對應的,我們在templates下新建一個helloWorld.ftl模版檔案

檔案內容:

<!DOCTYPE html> < html > < head > < meta  charset = "UTF-8" > < title >Insert title here</ title > </ head > < body > show:${message} </ body > </ html >

我們測試下,啟動HelloWorldApplication

然後瀏覽器輸入:http://localhost:8888/HelloWorld/freemarker/say

頁面顯示結果:


我們在演示下@RestController,ajax方式

我們新建一個HelloWorldAjaxController類

package  com.gaoxue;   import  org.springframework.web.bind.annotation.RequestMapping; import  org.springframework.web.bind.annotation.RestController;     /**   * 返回ajax json格式   * @author user   *   */ @RestController//必須通過json格式傳遞 @RequestMapping ( "/ajax" ) public  class  HelloWorldAjaxController {        @ResponseBody
     @RequestMapping ( "/hello" )      public  String say(){          return  "{'message1': 'SpringBoot1','message2','SpringBoot2'}" ;      } }

返回json串

這裡我們用的是jquery,隨便找個jquery.js

再新建一個index.html


index.html程式碼:

<!DOCTYPE html> < html > < head > < meta  charset = "UTF-8" > < title >Insert title here</ title > < script  src = "jQuery.js" ></ script > < script  type = "text/javascript" >      function show(){          $.post("ajax/hello",{},                  function(result){                      alert(result);                  }              );      }       </ script > </ head > < body > < button  onclick = "show()" >Json資訊</ button > </ body > </ html >

一個ajax請求

啟動HelloWorldApplication類

頁面先請求index.html

瀏覽器輸入:http://localhost:8888/HelloWorld/index.html


點選 按鈕,


       當然這裡的json比較簡單,可以直接返回;

       實際專案Json格式複雜,要藉助於一些json框架,比如Json-lib等;


原文出處:https://blog.csdn.net/gao__xue/article/details/80744563