1.簡析映射處理器前端
在spring mvc中,使用映射處理器能夠把web請求映射到正確的處理器上,spring內置了不少映射處理器,並且咱們也能夠自定義映射處理器。下面的實例展現spring中最經常使用的兩個映射處理器:BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping。在正式開始前有必要了解如下相關要點:java
(1)映射處理器都能把請求傳遞處處理器執行連接(HandlerExecutionChain)上,而且處理器執行連接必須包含能處理該請求的處理器(實質就是處理器鏈上動態添加了了此處理器,能夠結合filter工做原理理解),並且處理器連接也能包含一系列攔截器。web
(2)上面列舉的spring最經常使用的兩種處理器都是繼承自AbstractHandlerMapping類,於是它們具有父類的屬性。spring
2.實例:BeanNameUrlHandlerMapping後端
創建springMVC_03_handlerMappingsweb項目,並導入相關jar包。服務器
步驟一:創建後端控制器MessageController.java,代碼以下:mvc
package com.asm; //...省略導入的相關類 public class MessageController implements Controller { public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { ModelAndView mav = new ModelAndView("message"); mav.addObject("message", "您好!spring MVC"); return mav; } }
步驟二:配置web.xml,代碼以下:app
"1.0" encoding="UTF-8"?> "2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> spmvc class> org.springframework.web.servlet.DispatcherServlet class> 1 spmvc *.do
步驟三:配置spmvc-servlet.xml,代碼以下:jsp
"1.0" encoding="UTF-8"?> "http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> "viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> "prefix" value="/WEB-INF/page/" /> "suffix" value=".jsp" /> "/message.do" class="com.asm.MessageController">
步驟四:在WEB-INF/page目錄下創建message.jsp,主要代碼以下:測試
<body> Message:${message} body>
步驟五:啓動服務器,輸入…/message.do訪問測試。
更多資料歡迎球球2042849237
簡析執行過程
(1)啓動服務器後,當咱們向服務器發送message.do請求時,首先被在web.xml中配置的前端控制器DispatcherServlet攔截到。
(2)前端控制器把此請求轉交給後端控制器,下面分析轉交過程:當在spmvc-servlet.xml中查找能執行message.do請求的映射處理器時,發現沒有能處理此請求的映射處理器,這時便使用默認的映射處理器BeanNameUrlHandlerMapping:This is the default implementation used by the DispatcherServlet, along with DefaultAnnotationHandlerMapping (on Java 5 and higher). 咱們還需注意:這種後端控制器的bean Name必須以「/」開頭,而且要結合DispatcherServlet的映射配置。同時beanName支持通配符配置。好比若是配置: 時,當訪問messasge.do時也能夠成功訪問到MessageController類。
(3)BeanNameUrlHandlerMapping處理器,會查找在spring容器中是否在名爲「message.do」的bean實例。當查找到此實例後,則把此bean做爲處理此請求的後端控制器。同時把自身加到映射處理器鏈上,並向處理器鏈傳遞此請求。
(4)後端控制器進行處理,並返回視圖。