处理器除了实现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. linux简单命令6---挂载

  2. selenium历史版本下载

    python历史版本下载 https://pypi.org/project/selenium/#history java历史版本下载  http://selenium-release.storage. ...

  3. 利用redis 分布式锁 解决集群环境下多次定时任务执行

    定时任务: @Scheduled(cron= "0 39 3 * * *") public void getAllUnSignData(){ //检查任务锁,若其它节点的相同定时任 ...

  4. 清理mac缓存

    1. 查看当前目录文件大小 du -sh * 2. 查看当前目录文件大小在前十的文件 du -s * | sort -nr | head 3. 删除所有系统日志文件(有风险) sudo rm -rf ...

  5. 使用 mencoder 制作幻灯片

    首先安装相关依赖: sudo apt-get install mencoder sudo apt-get install imagemagick 编辑 test.sh 脚本如下: #!/bin/bas ...

  6. HOSTS大法解决Github Clone太慢

    经常要clone github中的一些项目,无奈如果不爬梯子的话速度实在是龟速,经常1k/s,于是搜了下解决方法,改HOSTS大法. Windows下在C:/Windows/system32/driv ...

  7. 超详细的EM算法理解

    众所周知,极大似然估计是一种应用很广泛的参数估计方法.例如我手头有一些东北人的身高的数据,又知道身高的概率模型是高斯分布,那么利用极大化似然函数的方法可以估计出高斯分布的两个参数,均值和方差.这个方法 ...

  8. glide包管理工具

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  9. 10-2 分区管理和RAID

    分区管理和RAID 处理交换文件和分区 swap交换分区是系统RAM的补充,swap 分区支持虚拟内存.当没有足够的 RAM 保存系统处理的数据时会将数据写入 swap 分区 当系统缺乏 swap 空 ...

  10. 慎用rm -rf

    首先,搞个回收站在~下 .bashrc或者.bash_profile加入 mkdir -p ~/.trash alias rm=trash alias r=trash alias rl='ls ~/. ...