一、Spring MVC概述
1.MVC:Model + View + Controller(數據模型 + 視圖 + 控制器)
2.三層架構:Presentation tier + Application tier + Data tier(展示層 + 應用層 + 數據訪問層)
3.MVC和三層架構的關系,MVC只存在三層架構的展示層。
M實際是數據模型,是包含數據的對象。在Spring MVC里,有一個專門的類叫Model,用來和V之間的數據交互、傳值。
V指的是視圖界面,包含JSP、freeMarker、Velocity、Thymeleaf、Tile等。
C就是控制器(Spring MVC的注解@Controller的類)。
三層架構是整個應用的的架構,是由Spring框架負責管理的,一般項目結構中都由Service層、Dao層,這兩個反饋在應用層和數據訪問層。
二、Spring MVC項目快速搭建
三、Spring MVC的常用注解
1.@Controller
@Controller注解在類上,表明這個類是Spring MVC里的Controller,將其聲明為Spring的一個Bean,Dispatcher Servlet會自動掃描注解了此注解的類(原理類似AOP),并將Web請求映射到注解了@RequestMapping的方法上。
2.@RequestMapping
@RequestMapping注解是用來映射Web請求(訪問路徑和參數)、處理類和方法的。
@RequestMapping可以注解在類或方法上。注解在方法上的@RequestMapping路徑會繼承注解在類上的路徑,@RequestMapping支持Servlet的request和response作為參數,也支持對request和response的媒體類型進行配置。
3.@ResponseBody
@ResponseBody支持將返回值放在response體內,而不是返回一個頁面。此注解可放置在返回值前或者方法上。
4.@RequestBody
@RequestBody允許request的參數在request體中,而不是在直接鏈接在地址后面。此注解放置在參數前。
5.@PathVariable
@PathVariable用來接收路徑參數,如/mfq/001,可接收001作為參數,此注解放置在參數前。
6.@RestController
@RestController是一個組合注解,組合了@Controller和ResponseBody。
四、Spring MVC基本配置
1.靜態資源映射、攔截器配置
2.@ControllerAdvice
通過@ControllerAdvice,可以將對于控制器的全局配置放置在同一個位置,注解了@Controller的類的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,對所有注解了@RequestMapping的控制器內的方法有效。
1)@ExceptionHandler:用于全局處理控制器里的異常。
2)@InitBinder:用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。
3)@ModelAttribute:本來的作用是綁定鍵值對到Model里,此處是讓全局的@RequestMapping都能獲得在此處設置的鍵值對。
3.其它配置
1)快捷的ViewController
2)路徑匹配參數配置
3)更多配置
查看WebMvcConfigurerAdapter、WebMvcConfigurer類的API。