处理器除了实现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>

转载于:https://www.cnblogs.com/xuzekun/p/7405694.html

6.SpringMVC 配置式开发-处理器相关推荐

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

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

  2. 二、SpringMVC 注解式开发学习笔记

    1.@RequestMapping 定义请求规则 通过@RequestMapping 注解可以定义处理器对于请求的映射规则.该注解可以注解在方法上,也可以注解在类上,但意义是不同的.value 属性值 ...

  3. SpringMVC (六)注解式开发

    之前我们写springmvc的案例的时候所有的操作都是用配置文件配置的,现在我们来说另一种写案例的方式,使用注解式开发,在后面的开发中我们也都是这种方式进行开发 首先我先用注解式开发写springmv ...

  4. eclipse maven 搭建 SSM(Spring+SpringMVC+MyBatis)开发环境 和 MyBatis 自动生成的 maven 插件配置

    最近研究java web开发,首先需要配置好开发环境,查阅网上各位大神的文章后搭建完成,记录下来作为备忘. 1.安装Maven Maven下载地址:http://maven.apache.org/do ...

  5. Spring+SpringMVC+Mybatis(开发必备技能)01、基础idea环境配置

    Spring+SpringMVC+Mybatis(开发必备技能) 01.基础idea环境配置 环境: 数据库:MySQL 开发工具:IntelliJ IDEA 2020.1.3 x64 框架:SSM( ...

  6. spring boot web开发------自定义springmvc配置

    1.如何自定义springmvc配置 旧的springmvc配置文件 <?xml version="1.0" encoding="UTF-8"?> ...

  7. 从零开始实现 ASP.NET Core MVC 的插件式开发(七) - 问题汇总及部分问题解决方案...

    标题:从零开始实现 ASP.NET Core MVC 的插件式开发(七) - 问题汇总及部分问题解决方案 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/ ...

  8. SpringMVC配置静态资源加载, 中文乱码处理,注解驱动

    常规配置(Controller加载控制) SpringMVC的处理器对应的bean必须按照规范格式开发,未避免加入无效的bean可通过bean加载过滤器进行包含设定或排除设定,表现层bean标注通常设 ...

  9. (转)SpringMVC学习(八)——SpringMVC中的异常处理器

    http://blog.csdn.net/yerenyuan_pku/article/details/72511891 SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...

  10. Shiro授权--注解式开发

    目录 一.授权角色,权限 UserMapper.xml 添加查询方法 UserMapper UserBiz UserBizImpl MyRealm  重新MyRealm 编写授权方法 配置文件  ap ...

最新文章

  1. python网上编程课程-什么是Python编程课程
  2. apigw鉴权分析(1-2)腾讯开放平台 - 鉴权分析
  3. linux进程命令解释,linux 进程命令top详解
  4. isis simple 运行Maven是报错: No goals have been specified for this build.
  5. php7 memcached sasl,Mac安装memcached扩展支持sasl
  6. react native 组件汇总整理,点击链接至GitHub
  7. python装饰器详解-python装饰器使用实例详解
  8. 让go语言调用外部程序时支持管道符
  9. 手机 物理分辨率 逻辑分辨率
  10. Java中涉及线程和并发相关的内容
  11. masOS上使用Java 3D解决方案
  12. 如何使用Navicat将psc备份导入到MySQL
  13. Python3中的可迭代类型
  14. mybatis表不存在的解决办法
  15. MySQL高级-(存储引擎、索引、锁)
  16. windows输入法英文字体间距比平常大,按照设置里按下"shift+space“键,也依然如此
  17. 智能枕头的功能及工作原理
  18. ctf-web-秋名山车神
  19. 就凭这些,蕴含清华百年历史的《无问西东》唤起了一片赤子之心
  20. 生物学重复好不好--看看样本相关性

热门文章

  1. Single Number 只出现一次的数字 python实现 - ...
  2. 决策树ID3算法的不足
  3. pycharm设置工程运行环境
  4. Python sys.argv[]详解
  5. 《How to Write and Publish a Scientfic Paper》 Chapter 1
  6. 【SPOJ - DQUERY】D-query【主席树 —— 区间中不同数的个数】
  7. tail -f 命令卡住
  8. 对于xfire动态调用webservice接口
  9. 能力提升综合题单 Part 8.3.3 最近公共祖先
  10. 使用threading多线程访问baidu,输出状态码及访问时间