WebMVC 介紹
1)MVC是什么?
2)常用的MVC框架有哪些?
a.Struts
b.SpringMVC
SpringMVC通過一套MVC注解,讓POJO成為處理請求的控制器,無需實現任何接口。同事iSpringMVC還支持REST風格的URL請求:注解驅動以及REST風格的SpringMVC是Spring3.0最出色的功能之一。此外,SpringMVC在數據綁定,視圖解析,本地化處理以及靜態資源出阿里上都有許多不俗的表現。在框架設計,擴展性,靈活性等方面禪悅了Struts,WebWork等MVC框架,從原來的追趕者變為了MVC的領跑者。
SpringMVC和Structs很相似。
3)MVC模式優缺點
耦合性低,重用性高,生命周期成本低,部署快,可維護性高,有利于工程化管理
4) SpringMVC簡介
優秀的Web框架,基于MVC設計理念。SpringMVC在數據綁定,師徒解析,本地化處理以及靜態資源處理上都有許多不俗的表現。
SpringMVC 框架圍繞DispatcherServlet這個核心展開,DispatcherServlet是SpringMVC的總導演,總策劃,負責截獲請求并且分派給相應的處理器處理。
SpringMVC體系結構
SpringMVC是基于Model2實現的技術框架。
Model2就是:JSP+Servlet+JavaBean,是經典的MVC模型的Web應用變體。這個改變主要源于http的無狀態性,Model2的目的也是為了達到不同層級間松耦合的效果,提高系統靈活性。
DispatcherServlet類
- 配置DispatcherServlet
- DispatcherServlet的體系結構
DispatcherServlet負責接收http請求,并且協助SpringMVC的各種組件,完成工作。
思考:
a)DispatcherServlet如何接收特定url請求,并且交給SpringMVC處理?
b)如何初始化SpringMVC的各個組件,并且實現在DispatherServlet的過程中?
1)配置DispatcherServlet
DispatcherServlet核心是一個Servlet。
要使用SpringMVC,必須在web.xml中配置好這個DispatcherServlet類。
我們可以在web.xml中配置多個DispatcherServlet類。
DispatcherServlet有一些配置參數,默認情況下我們不需要指定,如若需要我們可以通過<servlet>的<init-param>指定。
常見的有:
namespace:是默認的命名空間。
contextConfigLocation:與namescpace有一樣的功效。
publishContext:
2)DispatcherServlet類的運行體系:
SpringMVC常用注解
@Controller
負責注冊一個bean 到spring 上下文中。
@RequestMapping
注解為控制器指定可以處理哪些 URL 請求。
@RequestBody
該注解用于讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上 ,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上。
@ResponseBody
該注解用于將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區。
@ModelAttribute
在方法定義上使用 @ModelAttribute 注解:Spring MVC 在調用目標處理方法前,會先逐個調用在方法級上標注了@ModelAttribute 的方法。
在方法的入參前使用 @ModelAttribute 注解:可以從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數–綁定到對象中,再傳入入參將方法入參對象添加到模型中。
@RequestParam
在處理方法入參處使用 @RequestParam 可以把請求參 數傳遞給請求方法。
@PathVariable
綁定 URL 占位符到入參。
@ExceptionHandler
注解到方法上,出現異常時會執行該方法。
@ControllerAdvice
使一個Contoller成為全局的異常處理類,類中用@ExceptionHandler方法注解的方法可以處理所有Controller發生的異常。
Spring Boot
可以通過spring Boot來幫助簡化Spring MVC開發Web Application。
Spring Boot又是做什么的呢?Spring框架固然有其好處,但是隨著項目規模的擴大,配置文件(組)會變得相當龐大,項目中新增或者修改一個功能時,幾乎都要從這么龐大的配置文件(組)中去建立或修改相應的配置,這其中的工作量是可想而知的,并且,配置文件(組)的維護此時也變得復雜了。于是Spring Boot便應運而生了。Spring Boot可以看作是利用了與程序員之間的一些“約定”,即當程序員遵循這些約定的時候,Spring Boot便會給出基于這些“約定”的默認的配置,從而減少了程序員在維護配置文件(組)上的工作量。這也是最近很流行的“約定優于配置”(Convention Over Configuration) 思想的體現。
注意:application.properties文件:我們把我們的數據庫配置放在這里:
spring.datasource.url=jdbc:mysql://localhost:3306/srt
spring.datasource.username=root
spring.datasource.password=root
jsp中的
${requestScope.message}
對應
Controller中的ModelAndView的message
工作流
- SpringMVC注解版本
多個路徑映射一個方法:
