一席爽、Spring MVC概述
1.MVC:Model + View + Controller(數(shù)據(jù)模型 + 視圖 + 控制器)
2.三層架構(gòu):Presentation tier + Application tier + Data tier(展示層 + 應用層 + 數(shù)據(jù)訪問層)
3.MVC和三層架構(gòu)的關(guān)系意荤,MVC只存在三層架構(gòu)的展示層。
M實際是數(shù)據(jù)模型只锻,是包含數(shù)據(jù)的對象玖像。在Spring MVC里,有一個專門的類叫Model齐饮,用來和V之間的數(shù)據(jù)交互捐寥、傳值。
V指的是視圖界面握恳,包含JSP捺僻、freeMarker、Velocity束昵、Thymeleaf、Tile等巴比。
C就是控制器(Spring MVC的注解@Controller的類)。
三層架構(gòu)是整個應用的的架構(gòu)轻绞,是由Spring框架負責管理的政勃,一般項目結(jié)構(gòu)中都由Service層稼病、Dao層掖鱼,這兩個反饋在應用層和數(shù)據(jù)訪問層戏挡。
二褐墅、Spring MVC項目快速搭建
三洪己、Spring MVC的常用注解
1.@Controller
@Controller注解在類上答捕,表明這個類是Spring MVC里的Controller,將其聲明為Spring的一個Bean艘款,Dispatcher Servlet會自動掃描注解了此注解的類(原理類似AOP)沃琅,并將Web請求映射到注解了@RequestMapping的方法上。
2.@RequestMapping
@RequestMapping注解是用來映射Web請求(訪問路徑和參數(shù))晌柬、處理類和方法的。
@RequestMapping可以注解在類或方法上年碘。注解在方法上的@RequestMapping路徑會繼承注解在類上的路徑盛泡,@RequestMapping支持Servlet的request和response作為參數(shù)傲诵,也支持對request和response的媒體類型進行配置。
3.@ResponseBody
@ResponseBody支持將返回值放在response體內(nèi)悟衩,而不是返回一個頁面栓拜。此注解可放置在返回值前或者方法上。
4.@RequestBody
@RequestBody允許request的參數(shù)在request體中挑势,而不是在直接鏈接在地址后面潮饱。此注解放置在參數(shù)前诫给。
5.@PathVariable
@PathVariable用來接收路徑參數(shù)中狂,如/mfq/001,可接收001作為參數(shù)盛险,此注解放置在參數(shù)前勤晚。
6.@RestController
@RestController是一個組合注解赐写,組合了@Controller和ResponseBody。
四揉忘、Spring MVC基本配置
1.靜態(tài)資源映射、攔截器配置
2.@ControllerAdvice
通過@ControllerAdvice疲眷,可以將對于控制器的全局配置放置在同一個位置狂丝,注解了@Controller的類的方法可以使用@ExceptionHandler几颜、@InitBinder蛋哭、@ModelAttribute注解到方法上涮母,對所有注解了@RequestMapping的控制器內(nèi)的方法有效。
1)@ExceptionHandler:用于全局處理控制器里的異常沪蓬。
2)@InitBinder:用來設置WebDataBinder来候,WebDataBinder用來自動綁定前臺請求參數(shù)到Model中吠勘。
3)@ModelAttribute:本來的作用是綁定鍵值對到Model里剧防,此處是讓全局的@RequestMapping都能獲得在此處設置的鍵值對辫樱。
3.其它配置
1)快捷的ViewController
2)路徑匹配參數(shù)配置
3)更多配置
查看WebMvcConfigurerAdapter鸡挠、WebMvcConfigurer類的API搬男。