什麼是spring MVC
Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的SpringMVC框架或集成其他MVC開發框架,如Struts1(現在一般不用),Struts2(一般老項目使用)等。
spring mvc簡介
springmvc是spring的一個模塊,提供web層解決方案(基於mvc設計架構)
採用springmvc的好處
- Spring MVC中提供一個DispatcherServlet, 無需額外開發。
- springMVC中使用基於xml的配置文件,可以編輯,無需重新編譯應用程序。
- springMVC實例化控制器,並根據用戶輸入來構造bean。
- springMVC可以自動綁定用戶輸入,並正確的轉換數據類型。例如,springMVC能自動解析字 符串,並設置float或decimal類型的屬性。
- springMVC可以檢驗用戶輸入,若校驗不通過,則重定向回輸入表單。輸入校驗是可選的, 支持編碼方式以及聲明。關於這一點,springMVC內置了常見的校驗器。
- springMVC是spring框架的一部分。可以利用spring提供的其它能力。
- springMVC支持國際化和本地化,支持根據用戶區域顯示多國語言。
- springMVC支持多種視圖技術,最常見的JSP技術以及其它技術包括Velocity和FreeMarker。
使用springMVC的優勢
1、清晰的角色分配: 前段控制器(dispatcherServlet) , 請求到處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver),
處理器和頁面控制器(Controller),驗證器(Validator),命令對象(Command),
表單對象(FromObject)
2、分工明細
3、和Spring框架無縫結合
spring mvc框架流程圖
SpringMvc整個的執行流程:
1、發起請求到前端控制器(DispatcherServlet )
2、前端控制器請求HandlerMapping查找Handler(可以根據xml、註解進行查找)
3、處理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler
4、前端控制器DispatcherServlet 調用處理器適配器HandlerAdapter 執行Handler
5、處理器適配器HandlerAdapter 執行Handler
6、Handler執行完給處理器適配器返回ModelAndView
7、處理器適配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底層對象 包括model和view)
8、前端控制器請求視圖解析器去解析視圖
根據邏輯視圖名解析成真正的視圖(jsp)
9、視圖解析器向前端控制器返回view
10、前端控制器進行視圖渲染
視圖渲染將模型數據(模型數據在ModelAndView對象中)填充到request域
11、前端控制器向用戶響應結果
組件:
1、前端控制器DispatcherServlet(不需要程序員開發)
作用接收請求,響應結果,相當於轉發器,中央處理器。
有了DispatcherServlet減少了其它組件之間的耦合度。
2、處理器映射器HandlerMapping(不需要程序員開發)
作用:根據請求的url查找Handler
3、處理器適配器HandlerAdapter
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
4、處理器Handler(需要程序員開發)
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執行Handler
5、視圖解析器View resolver(不需要程序員開發)
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
6、視圖View(需要程序員開發jsp)
View是一個接口,實現類支持不同的View類型(jsp、freemarker、pdf...)
springMVC常用註解
1. 在 struts-config.xml 文件中加入
2.在 applicationContext.xml 文件中加入
3.cn.base.GetPersonListAction 實現請求響應代碼
可以看出一次請求需求如此多的步驟,在加上一個項目下來有很多這樣的請求響應,將給配置文件管理帶來很大的麻煩。
經過對 Spring 的深入應用, Spring 本身提供的 URL 請求控制,對其天然支持可以讓我們不需要 applicationContext.xml 再次聲明一次 URL 請求 Bean ,即減少了 Struts 的聲明 URL ,達到減少些繁瑣的配置。但只是少了一些而已,同樣也會面臨著配置文件的管理問題。
Spring 註解將給我們的工作帶來些輕鬆,利用反射機制原理出現的註解就是為了解決配置大量的配置問題。請看下處理一次簡單的請求響應代碼
@Controller --聲明控制器
@RequestMapping("/person") –聲明URL
public class PersonControl extends BaseController {
@Autowired –業務接口注入
private personServices personServices;/*** 獲得人員列表*@param request* @param response* @throws Exception*/
@RequestMapping(params = "method=geList") --即處理/person.do? method=geList方法
public void getnodeList(HttpServletRequest request,HttpServletResponse response) throws Exception { //處理請求//處理響應}}
可以看出,在代碼上加入註解可以省去我們上面說的多個配置文件的工作,達到簡便的 MVC 處理請求響應。
再配上簡單的配置文件聲明,即可輕鬆處理項目的全部請求控制工作。
閱讀更多 Java填坑之路 的文章