zoukankan      html  css  js  c++  java
  • 6.SpringMVC 配置式开发-处理器

    处理器除了实现Controller 接口外,还可以继承自一些其他的类,来完成一些特殊的功能

      1.继承自AbstractController类

      若处理器继承自AbstractController类,那么处理器可以通过属性 supportedMethods 来限制 HTTP 请求的提交方式

    1 <!-- 若处理器继承自 AbstractController 类,该类具有 supportedMethods 属性,所以可以在这里 对 supportedMethods属性 进行赋值,来限制HTTP请求方式()-->
    2     <bean id="myController" class="com.springmvc.handlers.MyController">
    3         <property name="supportedMethods" value="POST"/>  <!-- POST 必须大写 --> <!-- 只能通过表单 和 AJAX 方式请求 -->
    4
    5     </bean>

      

      2.继承自 MultiActionController类

      MultiActionController 类继承自 AbstractController,所以继承自 MultiActionController 的子类也可以设置 HTTP 请求提交方式。

      除此之外,继承自该类的处理器中可以定义多个处理方法。这些方法的签名为公共的方法,

      返回值为 ModelAndView,包含参数 HttpServletRequest HttpServletResponse,抛出 Exception 异常,方法名随意。

      

     1 //继承 MultiActionController ,这个类是继承自 AbstractController的,所以它也可以限定提交方式
     2 //继承 MultiActionController ,可以定义多个处理方法,方法名随意,但其他(权限,参数,返回值,异常)必须保持一致
     3 public class MyController extends MultiActionController {
     4     
     5     public ModelAndView doFirst(HttpServletRequest request,HttpServletResponse response) throws Exception {
     6         
     7         ModelAndView mv = new ModelAndView();
     8         mv.addObject("message", "Hello doFirst Method!");
     9         mv.setViewName("/WEB-INF/jsp/hello.jsp");
    10         return mv;
    11         
    12     }
    13     
    14     public ModelAndView doLast(HttpServletRequest request,HttpServletResponse response) throws Exception {
    15         
    16         ModelAndView mv = new ModelAndView();
    17         mv.addObject("message", "Hello doLast Method!");
    18         mv.setViewName("/WEB-INF/jsp/hello.jsp");
    19         return mv;
    20         
    21     }
    22 
    23     
    24 }

      A、InternalPathMethodNameResolver方法名解析器

        方法名以URI中资源名称的身份出现    /***/方法名

      

     1 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    
     2         <property name="urlMap">
     3             <map>
     4             <!-- 
     5                 MultiActionControllern 类具有一个属性 methodNameResolver,方法名解析器    
     6                 其具有默认值InternalPathMethodNameResolver,该解析器将方法名作为资源名称进行解析
     7                 那就意味着,我们提交请求时,要将方法名作为资源名称出现
     8              -->
     9                 <entry key="/my/*.do" value="myController"></entry>  <!-- 将方法名写在 url 地址中 ,SpringMVC_07_MultiActionController/my/doLast.do -->
    10             </map>
    11         </property>
    12         
    13     </bean>

      B、PropertiesMethodNameResover方法名解析器

        方法名作为URI资源名称中的一部分出现   /***_doFirst

      

    
    
     1 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     2         <property name="urlMap">
     3             <map>
     4             <!-- 
     5                 MultiActionControllern 类具有一个属性 methodNameResolver,方法名解析器    
     6                 其具有默认值InternalPathMethodNameResolver,该解析器将方法名作为资源名称进行解析
     7                 那就意味着,我们提交请求时,要将方法名作为资源名称出现
     8              -->
     9                 <entry key="/my_*.do" value="myController"></entry>  <!-- 将方法名写在 url 地址中 ,SpringMVC_07_MultiActionController/my/doLast.do -->
    10             </map>
    11         </property>
    12         
    13     </bean>
    
    
    

    1
    <!-- 配置方法名解析器 --> <!-- 如果是写成 /my/*.do 这种,不写这个方法名解析器也没什么区别--> 2 <!-- 因为 默认的InternalPathMethodNameResolver是根据 方法名 作为资源名称--> 3 <!-- 如果是写成 /my_*.do 就可以采用这种方式,因为这样写 找不到 找到的资源名称 和 方法名 是对应不上的--> 4 <bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"> 5 <property name="mappings"> 6 <props> 7 <prop key="/my_doFirst.do">doFirst</prop> 8 <prop key="/my_doLast.do">doLast</prop> 9 </props> 10 </property> 11 </bean>

      C、ParameterMethodNameResover方法名解析器

        方法名作为请求参数的值出现    /***?action=doFirst

    1 <!-- 配置 ParameterMethodNameResolver 方法名解析器 (方法名作为请求参数值出现) --> 
    2     <!-- http://localhost:8080/SpringMVC_09_MultiActionController_3/my.do?method=doFirst -->
    3     <bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
    4         <!-- 如果 这里不配置 paramName 属性 ,该属性会有一个默认 值action  (?action=doFirst)--> 
    5         <!-- <property name="paramName" value="method" /> -->
    6     </bean>
  • 相关阅读:
    Matlab图像处理函数:regionprops
    Java的 volatile关键字的底层实现原理
    SQL学习(一.索引)
    solr7.7.0搜索引擎使用(四)(搜索语法)
    solr7.7.0搜索引擎使用(三)(添加文件索引)
    singleton单例模式小结
    多态小结
    quartz定时任务时间设置
    EditPlus编译运行java文件
    NoClassDefFoundError错误发生的原因
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7405694.html
Copyright © 2011-2022 走看看