映射处理器 HandlerMapping

重点:   学会配置常见的HandlerMapping

 

HandlerMapping :

     映射处理器

     管理URL和Controller 映射关系的处理器

 

工作原理

  • 注册

   IOC容器初始化的时候,初始化映射处理器的HashMap<String, Object>, 其中 key 是 http 请求的 path 信息;

   Value 可以是一个字符串,或者是一个处理请求的 HandlerExecutionChain ,如果时String 类型,则会将其视为 Spring的bean 名称

   不同的映射处理器在初始化时会按照不同的算法进行处理。

  • 获取

   HandlerMapping 对象被创建的时候,即完成url 到 handler 之间的映射关系的注册。映射处理器的 HashMap<String , Object> 已经被赋值,可以使用了。

   这时前端控制器调用映射处理器时就可以使用 getHandler() 方法,根据http 请求获得handler 对象了

 

HandlerMapping 类型

 BeanNameUrlHandlerMapping                    默认的 bean name 映射器

 ControllerClassNameHandlerMapping        类名映射

 SimpleUrlHandlerMapping                           简单url处理器映射

 

BeanNameUrlHandlerMapping
 

   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">

            <property name="order" value="10"></property>

   </bean>

   <!-- 验证beanNameUrlHandlerMapping的控制器        可以加通配符*     -->

   <bean name="/className.do" class="com.kgc.controllers.WelcomeController"></bean>

 

ControllerClassNameHandlerMapping
    

 <!-- 类名映射器   -->

<bean id="classNameHandlerMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">

      <property name="caseSensitive" value="true"></property>

      <property name="order" value="1"></property>

</bean>

<!-- 验证classNameHandlerMapping的控制器       -->

<bean class="com.kgc.controllers.ClassNameController" />

实际上是去掉Controller 这个单词进行匹配,并把去掉后的剩余部分全部变成小写,不严格区分大小写,加上  <property name="caseSensitive" value="true" />

 

 SimpleUrlHandlerMapping

三种方法:

 <!-- 简单Url -->

 <!-- prop key 方式 -->

 <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 

      <property name="mappings"> 

         <props>

            <!-- key 就是url value:控制器的名字 -->

            <prop key="/className.do">simpleUrlController</prop> 

        </props> 

     </property> 

 </bean> 
 <!--  value写法 -->

 <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 

     <property name="mappings"> 

         <value> 

             /className.do = simpleUrlController 

         </value> 

     </property> 

 </bean> 
<!-- map配法   -->

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="urlMap">

        <map>

            <entry key="/className.do" value-ref="simpleUrlController" />

        </map>

    </property>

    <property name="order" value="9"></property>

</bean>

    java 代码 模版如下:

public class WelcomeController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
//		创建ModelAndView对象
		ModelAndView mav = new ModelAndView();
//		添加要在页面上显示的数据
		mav.addObject("msg","beanNameUrlHandlerMapping");
		
//		要返回的逻辑视图名
		mav.setViewName("welcome");
		
		return mav;
	}

}

 

设置Mapping 的优先级

 <property name="order" value="9"></property>

 用order 来设置, 值小的优先匹配  值不能为负数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值