spring boot控制層controller詳解


Controller的使用

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

項目前后台交互的話 無非兩種方式

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

還有一種局部刷新,或者叫做異步刷新,ajax提交;

@Controller就是整體頁面刷新提交的處理注解

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

各有用處的;

這里我們分別來演示上面兩種交互

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

這里的話請求后台,必須返回一個視圖,以前我們一般用Jsp,

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

QQ鎴浘20170807113225.jpg

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


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

我們用Freemarker來演示下;

首先第一步,添加Freemarker支持,我們有兩種方式,

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

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

alt+/ 提示

QQ鎴浘20170807113650.jpg

點下 Edit Starters

QQ鎴浘20170807113908.jpg

選擇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模版文件

QQ鎴浘20170807114230.jpg

文件內容:

<!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

QQ鎴浘20170807123942.jpg


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM