后端 | SSM框架 | SpringMVC
筆記來(lái)源:黑馬程序員SSM框架教程_Spring+SpringMVC+Maven高級(jí)+SpringBoot+MyBatisPlus企業(yè)實(shí)用開(kāi)發(fā)技術(shù)
一、SpringMVC概述
SpringMVC技術(shù)與Servlet技術(shù)功能等同,均屬于web層開(kāi)發(fā)技術(shù)。
SpringMVC是一種基于Java實(shí)現(xiàn)MVC模型的輕量級(jí)Web框架。
優(yōu)點(diǎn):
使用簡(jiǎn)單,開(kāi)發(fā)便捷(相對(duì)于Servlet)。
靈活性強(qiáng)。
入門(mén)注解:
@Controller:類注解,SpringMVC控制類定義上方,設(shè)定SpringMVC的核心容器bean。
@RequestMapping:方法注解,SpringMVC控制器方法定義上方,設(shè)置當(dāng)前控制器方法請(qǐng)求的訪問(wèn)路徑。
@ResponseBody:方法注解,SpringMVC控制器方法定義上方,設(shè)置當(dāng)前控制器方法響應(yīng)內(nèi)容為當(dāng)前返回值,無(wú)需解析。
@RequestParam:形參注解,SpringMVC控制器方法形參定義前面,用于接收url地址或表單傳參。
@PathVariable:形參注解,SpringMVC控制器方法形參定義前面,綁定路徑參數(shù)與處理器方法形參間的關(guān)系,要求路徑參數(shù)與形參名一一對(duì)應(yīng)。
@RestController:類注解,基于SpringMVC的RESTful開(kāi)發(fā)控制器類定義上方,設(shè)置當(dāng)前控制器類為RESTful風(fēng)格,等同于@Controller與@ResponseBody兩個(gè)注解組合功能。
@PostMapping、@DeleteMapping、@PutMapping、@GetMapping:方法注解,基于SpringMVC的RESTful開(kāi)發(fā)控制器方法定義上方,設(shè)置當(dāng)前控制器方法請(qǐng)求訪問(wèn)路徑與請(qǐng)求動(dòng)作,每種對(duì)應(yīng)一個(gè)請(qǐng)求動(dòng)作,例如@GetMapping對(duì)應(yīng)GET請(qǐng)求。
二、REST風(fēng)格
1、REST簡(jiǎn)介
REST(Representational State Transfer),表現(xiàn)形式狀態(tài)轉(zhuǎn)換
傳統(tǒng)風(fēng)格資源描述形式:
REST風(fēng)格資源描述形式:
優(yōu)點(diǎn):
隱藏資源的訪問(wèn)行為,無(wú)法通過(guò)地址得知對(duì)資源是何種操作。
書(shū)寫(xiě)簡(jiǎn)化。
按照REST風(fēng)格訪問(wèn)資源時(shí)使用行為動(dòng)作(GET、DELETE、PUT、POST)區(qū)分對(duì)資源進(jìn)行了何種操作。
根據(jù)REST風(fēng)格對(duì)資源進(jìn)行訪問(wèn)稱為RESTful。
三、SSM整合
1、異常處理器
集中的、統(tǒng)一的處理項(xiàng)目中出現(xiàn)的異常。
@RestControllerAdvice:
類注解,Rest風(fēng)格開(kāi)發(fā)的控制器增強(qiáng)類定義上方,為Rest風(fēng)格開(kāi)發(fā)的控制器類做增強(qiáng)。
此注解自帶@ResponseBody和@Component注解。
@ExceptionHandler:
方法注解,專用于異常處理的控制器方法上方,設(shè)置指定異常的處理方案,功能等同于控制器方法,出現(xiàn)異常后終止原始控制器執(zhí)行,并轉(zhuǎn)入當(dāng)前方法執(zhí)行。
此類方法可以根據(jù)處理的異常不同,制作多個(gè)方法分別處理對(duì)應(yīng)的異常。
四、攔截器
1、攔截器簡(jiǎn)介
攔截器(Interceptor)是一種動(dòng)態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動(dòng)態(tài)攔截控制器方法的執(zhí)行。
作用:
在指定的方法調(diào)用前后執(zhí)行預(yù)先設(shè)定的代碼。
阻止原始方法的執(zhí)行。
2、攔截器與過(guò)濾器的區(qū)別
歸屬不同:Filer屬于Servlet技術(shù),Interceptor屬于SpringMVC技術(shù)。
攔截內(nèi)容不同:Filter對(duì)所有訪問(wèn)進(jìn)行增強(qiáng),Interceptor僅針對(duì)SpringMVC的訪問(wèn)增強(qiáng)。
3、攔截器入門(mén)案例
聲明攔截器的bean,并實(shí)現(xiàn)HandlerInterceptor接口。
定義配置類,繼承WebMvcConfigurationSupport,實(shí)現(xiàn)addInterceptor方法。
添加攔截器并設(shè)定攔截器的訪問(wèn)路徑,路徑可以通過(guò)可變參數(shù)設(shè)置多個(gè)。
4、攔截器鏈
當(dāng)配置多個(gè)攔截器時(shí),形成攔截器鏈。
攔截器鏈的運(yùn)行順序參照攔截器添加順序?yàn)闇?zhǔn)。
preHandle:與配置順序相同,必定運(yùn)行。
postHandle:與配置順序相反,可能不運(yùn)行。
afterCompletion:與配置順序相反,可能不運(yùn)行。
當(dāng)攔截器中出現(xiàn)對(duì)原始處理器的攔截,后面的攔截器均終止運(yùn)行。
當(dāng)攔截器運(yùn)行中斷,僅運(yùn)行配置在前面的攔截器的afterCompletion操作。