spring-mvc入门(三):映射处理器

发表于:2011-3-21 09:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:86asm(JavaEye)    来源:51Testing软件测试网采编

分享:

  步骤五:启动服务器,输入…/message.do访问测试。

  简析执行过程

  (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)后端控制器进行处理,并返回视图。

  3、实例:SimpleUrlHandlerMapping

  步骤一:建立后端控制器UserContrller.java.代码如下:

  Java代码

  • package com.asm;     
  • //...省略导入的相关类     
  • public class UserController extends SimpleFormController {     
  •     protected ModelAndView processFormSubmission(HttpServletRequest request, HttpServletResponse response,     
  •             Object command, BindException errors) throws Exception {     
  •         System.out.println("调用逻辑层,处理表单");     
  •         ModelAndView mav = new ModelAndView("loginSuc");     
  •         return mav;     
  •     }     
  • }
  •   步骤二:在spmvc-servlet.xml中增加如下配置:

      Xml代码

  • <bean id="simpleUrlHandlerMapping"       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    
  •     
  •         <property name="interceptors">    
  •             <list>    
  •                 <ref bean="workTimeInterceptor" />    
  •             list>    
  •         property>    
  •         <property name="mappings">    
  •             <props>    
  •                 <prop key="/op/*/login.do">userControllerprop>    
  •             props>    
  •         property>    
  •     bean>    
  •     
  •     <bean id="userController" class="com.asm.UserController">    
  •         <property name="commandClass" value="com.asm.User"/>    
  •     bean>    
  •     
  •         
  •     <bean id="workTimeInterceptor"    
  •         class="com.asm.LoginTimeInterceptor">    
  •         <property name="startTime" value="6" />    
  •         <property name="endTime" value="18" />    
  •     bean>
  •   说明:(1)通过前面实例我们可以知道,SimpleController这样的后端控制器必须绑定一个commandClass对象,在这里我们通过配置文件 绑定。

      (2) userController配置说明只要访问是以op开头,中间*可以是任意字符,并以login.do结尾的请求,便能访问到userController 控制器。

      (3)SimpleUrlHandlerMapping是一个更强大的映射处理器,它除了支持上面 的这种配置,还支持Ant风格的路径匹配。另外也可以进行如下形式的配置:

  • <property name="mappings"> 
  •        <value> 
  •            /op/*/login.do=userController 
  •        value> 
  • property>
  •   (4)拦截器:为了为某些特殊请求提供特殊功能,spring为映射处理器提供了拦截器支持。它的配置文件很简单:一是把拦截器类纳入spring容器管理,二是在映射处理器引入配置的拦截器bean。

    42/4<1234>
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号