springmvc―handlermapping三種映射
handlermapping負責映射中央處理器轉發給controller的映射策略,簡單說就是控制中央處理器的請求觸發哪一個controller。
handlermapping的配置也是在springmvc的配置文件中。
三種映射方式
1.BeanNameUrlHandlerMapping(默認)
按照controller的name來映射尋找controlller,它是默認存在的。
<!-- 配置controller --> <bean id="testController" name="/hello.do" class="com.roy.controller.TestController"/> <!-- 按照controller的name來映射尋找controlller,默認存在的 --> <beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
2.SimplerUrlHandlerMapping
使用簡單url映射,與默認的映射可以各自獨立存在,但是默認的不存在的時候,配置的controller不能使用。
可以使用此映射來分類配置controller和配置url的各自職責
<!-- 配置controller --> <bean id="testController" class="com.roy.controller.TestController"/> <!-- 按照url來映射 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.do">testController</prop> </props> </property> </bean>
3.contraollerClassNameHandlerMapping
控制類的類名控制器,訪問時類名首字母需要小寫,需要加入.do,直接使用controller的首字母小寫類名訪問
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
controller中的代碼
package com.roy.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class TestController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { System.out.println("hello controller"); return new ModelAndView("index"); } }
三種hanlermapping的配置
- 第一種是直接默認存在的,可以不需要在配置文件中配置;
- 第二種可以使用此映射來分類配置controller和配置url 的各自職責;
- 第三種直接使用controller的首字母小寫類名訪問。
對handlermapping的理解
handlerMapping:DispatcherServlet通過handlerMapping,為請求的url指向對應的controll,也就是在瀏覽器地址欄輸入url請求之后,servlet.xml的<bean>節點會把請求映射到到對應的controll
例如
用戶在輸入hehe之后,AbcControll就會被調用到
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/suneqing/article/details/50944754