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

  1.继承自AbstractController类

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

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

  

  2.继承自 MultiActionController类

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

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

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

  

 //继承 MultiActionController ,这个类是继承自 AbstractController的,所以它也可以限定提交方式
//继承 MultiActionController ,可以定义多个处理方法,方法名随意,但其他(权限,参数,返回值,异常)必须保持一致
public class MyController extends MultiActionController { public ModelAndView doFirst(HttpServletRequest request,HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView();
mv.addObject("message", "Hello doFirst Method!");
mv.setViewName("/WEB-INF/jsp/hello.jsp");
return mv; } public ModelAndView doLast(HttpServletRequest request,HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView();
mv.addObject("message", "Hello doLast Method!");
mv.setViewName("/WEB-INF/jsp/hello.jsp");
return mv; } }

  A、InternalPathMethodNameResolver方法名解析器

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

  

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

  B、PropertiesMethodNameResover方法名解析器

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

  


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

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

  C、ParameterMethodNameResover方法名解析器

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

 <!-- 配置 ParameterMethodNameResolver 方法名解析器 (方法名作为请求参数值出现) -->
<!-- http://localhost:8080/SpringMVC_09_MultiActionController_3/my.do?method=doFirst -->
<bean id="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<!-- 如果 这里不配置 paramName 属性 ,该属性会有一个默认 值action (?action=doFirst)-->
<!-- <property name="paramName" value="method" /> -->
</bean>

6.SpringMVC 配置式开发-处理器的更多相关文章

  1. 4.SpringMVC 配置式开发-处理器映射器

    处理器映射器 HandlerMapping HandlerMapping 接口负责根据request请求找到对应的Handler处理器及Interceptor拦截器, 并将它们封装在HandlerEx ...

  2. 5.SpringMVC 配置式开发-处理器适配器

    处理器适配器HandlerAdapter 1.SimpleControllerHandlerAdapter(默认) 所有实现了 Controller 接口的处理器 Bean,均是通过SimpleCon ...

  3. 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

    上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...

  4. 3.2.2 SpringMVC配置式开发

    SpringMVC配置式开发 1. SpringMVC运行原理(执行过程) 2. 需求 用户提交一个请求, 服务端处理器接收到请求后, 给出一条信息,在相应页面中显示该条信息 3. 开发步骤 (1) ...

  5. 《SpringMVC从入门到放肆》四、SpringMVC配置式开发(处理器映射器)

    上一篇我们讲解了DispatcherServlet的url-pattern配置详解,今天我们来真正对SpringMVC进行配置式开发.所谓配置式开发是指“处理器类是程序员自己定义的.实现了特定接口的类 ...

  6. SpringMVC配置式开发

    所谓配置式开发是指“处理器类是程序员手工定义,实现了特定接口的类,然后再在SpringMVC 配置文件中对该类进行显示的.明确的注册”的开发方式. 一.处理器映射器HandlerMapping Han ...

  7. 《SpringMVC从入门到放肆》五、SpringMVC配置式开发(处理器适配器)

    上一篇我们大致讲解了处理器映射器的处理流程以及跟了一下源码的执行流程.今天我们来了解一下处理器适配器. 一.适配器模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapt ...

  8. 11.SpringMVC注解式开发-处理器方法的返回值

    处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...

  9. 7.SpringMVC 配置式开发-ModelAndView和视图解析器

    ModelAndView 1.Model(模型) 1.model的本质就是HashMap,向模型中添加数据,就是往HashMap中去添加数据 2.HashMap 是一个单向查找数组,单向链表数组 3. ...

随机推荐

  1. c++自定义数组越异常 ArrayIndexOutOfBoundsException (学习)

    #include <iostream> using namespace std; const int DefaultSize = 10; class Array{public: Array ...

  2. delete和析构函数

    new一个类的时候,调用这个类的构造函数,然后在这个类的生命周期内可能会动态生成很多指向堆上的内存,所以应该在析构函数里回收这些内存: 当delete这个类的时候,会首先调用这个类的析构函数,即回收生 ...

  3. [Scikit-learn] Yield miniBatch for online learning.

    From: Out-of-core classification of text documents Code:  """ ======================= ...

  4. 浅析 Nodejs 模块化

    本文只讨论 CommonJS 规范,不涉及 ESM 我们知道 JavaScript 这门语言诞生之初主要是为了完成网页上表单的一些规则校验以及动画制作,所以布兰登.艾奇(Brendan Eich)只花 ...

  5. CALL 'SYSTEM' ID 'COMMAND'

    CALL 'SYSTEM' ID 'COMMAND' 语句创建 AL11文件夹 , line(), END OF tabl. DATA: lt_string TYPE STANDARD TABLE O ...

  6. Spring Security(3):配置与自动配置的介绍及源码分析

    基于注解的配置(Java Configuration)从Spring Security 3.2开始就已经支持,本篇基于Spring boot注解的配置进行讲解,如果需要基于XML配置(Security ...

  7. list列表转tree树方法

    list转tree递归转换 /** * 递归遍历节点 * @param sourceList * @param parentCode * @return */ public List<Offic ...

  8. ubuntu 右上角网络图标不见了

    sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service ...

  9. HanLP-命名实体识别总结

    人名识别 在HanLP中,基于角色标注识别了中国人名.首先系统利用隐马尔可夫模型标注每个词语的角色,之后利用最大模式匹配法对角色序列进行匹配,匹配上模式的即为人名.理论指导文章为:<基于角色标注 ...

  10. nginx+uwsgi02---django部署(推荐)

    参考  https://blog.csdn.net/weixin_39198406/article/details/79277580 https://www.cnblogs.com/alex3714/ ...