处理器除了实现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. Apache损坏无法使用怎么办

    已经 find / -name httpd | xargs rm -rf删光了httpd相关文件,但是使用yum install httpd 无法正常安装. 查看Httpd的状态是 解决办法: yum ...

  2. L1、L2正则化详解

    正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束.调整或缩小.也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险. 一. ...

  3. C# 实现启用或停止本地网络连接

    获取本机网络连接列表 public static List<string> GetNetList() { List<string> ls = new List<strin ...

  4. python基础----条件判断与循环

    一.python数据类型 1.整数(包括整数.负数) 2.浮点数(小数) 3.字符串(需要用单引号‘’或双引号“”括起来) 注:当字符串中含有单引号时,用双引号括起来(now="let's ...

  5. 【Web】利用jquery实现百度新闻导航菜单滑动动画

    前言 前两天,群里有人问百度新闻导航是如何实现的,当时由于忙于工作,没有来得及细看,恰好今天有空闲时间,索性就实现一下这个效果吧: 思路与步骤 1.利用UL创建简单横向导航: <!DOCTYPE ...

  6. nginx 解决session一致性

    session 粘滞性每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题. upstream backserver {ip_hash;server ...

  7. Flutter的布局方法

    重点是什么? Widgets 是用于构建UI的类. Widgets 用于布局和UI元素. 通过简单的widget来构建复杂的widget Flutter布局机制的核心就是widget.在Flutter ...

  8. 从物联网防火墙himqtt源码谈哈希和红黑树的应用场景区别

    从物联网防火墙himqtt源码谈哈希和红黑树的应用场景区别 himqtt是首款完整源码的高性能MQTT物联网防火墙 - MQTT Application FireWall,C语言编写,很多数据结构适合 ...

  9. XSS 攻击的预防

    XSS 攻击有两大要素: 1.攻击者提交恶意代码. 2.浏览器执行恶意代码. 针对第一个要素:我们是否能够在用户输入的过程,过滤掉用户输入的恶意代码呢? 输入过滤 在用户提交时,由前端过滤输入,然后提 ...

  10. Windows系统Python直接调用C++ DLL

    环境:Window 10,VS 2019, Python 2.7.12, 64bit 1,打开 VS 2019,新建C++ Windows 动态链接库工程 Example,加入下列文件,如果Pytho ...