一、SpringMVC簡介
SpringMVC也叫Spring Web mvc,屬於表現層的框架。Spring MVC是Spring框架的一部分,是在Spring3.0後釋出的
二、Spring結構圖
三、SpringMVC架構圖
四、SpringMVC請求流程圖
五、SpringMVC請求流程文字描述:
request-------->DispatcherServler(中央排程器/前端控制器)-----> HandlerMapping(處理器對映器)------>返回一個執行鏈----->將執行鏈轉交給HandlerAdaptor(處理器介面卡)----->排程Handler(處理器)-----> ModelAndView----->先將結果交給HandlerAdaptor,然後再由HandlerAdaptor轉交給 DispatcherServler--------->DispatcherServler排程ViewResolver(檢視解析器)---->交給DispatcherServler-------> 尋找View---->View做出響應(response)
六、第一個入門案例:
案例:使用者提交一個請求,伺服器端處理器在接收到這個請求後,給出一條歡迎資訊,在頁面中顯示。
步驟:
①在web.xml中配置前端控制器
②處理器對映器(HandlerMapping)
③處理器介面卡 (HandlerAdaptor)
④處理器
⑤檢視解析器(ViewResolver)
1、引入jar檔案
2、註冊中央排程器[Web.xml]
3、控制器
4、applicationContext.xml配置檔案。配置檢視解析器以及註冊處理器
5、jsp頁面
實現效果:
七、關於urlpattern
最好配成*.do
不能配成/* ===[無法訪問*.jsp等動態資源]
最好也不要配成/ === [無法訪問靜態資源]
不得不配成/
如果url-pattern配成/*,則無法訪問動態資源,出現404. 如果配成/ ,則無法訪問靜態資源,圖片無法顯示。
不能配成/*緣由:
DispatcherServlet會將向動態頁面請求,即向jsp頁面的跳轉請求也當做是一個普通的Controller請求。中央排程器會呼叫處理器對映器為其查詢相應的處理器。當然是找不到的。jsp頁面會報404錯誤
結論:/*會攔截動態資源
不能配成/:
方案一:使用Tomcat預設的Servlet解決
方案二:使用MVC的default-servlet-handler
會將對靜態資源的訪問請求通過HandlerMapping對映到預設Servlet請求處理器DefaultServletRequestHandler物件。而該處理器呼叫了Tomcat的DefaultServlet來處理靜態資源的訪問請求。當然需要引入mvc約束
方式三:使用MVC的resource解決
在Spring3.0.4之後,Spring定義了專門用於處理靜態資源請求的處理器ResourceHttpRequestHandler。並且新增了<mvc:resources/>標籤,專門用於解決靜態資源無法訪問問題。
Location:靜態資源所在目錄
mapping: 對資源的請求
注意:需要Tomcat7支援
效果圖:
八、配置式開發--BeanNameUrlHandlerMapping