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等;