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