处理器除了实现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. 16 Flutter仿京东商城项目 跳转到搜索页面实现搜索功能 以及搜索筛选

    ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; imp ...

  2. Consul 随记

    consul 包含多个组件,但是作为一个整体对外提供服务发现和服务配置工具: 提供的关键特性有: 服务发现:发现的是服务对应的IP地址和PORT端口号 健康检查:检查服务节点状态 Key/Value存 ...

  3. 超详细的EM算法理解

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

  4. leetcode 区间合并

    个区间若能合并,则第一个区间的右端点一定不小于第二个区间的左端点.所以先把区间集合按照左端点从小到大进行排序,接着从第一个区间开始遍历,对每个区间执行如下操作: 1.首先保存该区间的左端点start和 ...

  5. 解决 nginx 单点问题的方案【h】

    一.问题域 nginx.lvs.keepalived.f5.DNS轮询,每每提到这些技术,往往讨论的是接入层的这样几个问题: 1)可用性:任何一台机器挂了,服务受不受影响 2)扩展性:能否通过增加机器 ...

  6. 解决升Win10系统后VMware虚拟机不能联网的问题

    刚升级到Win10系统,打开虚拟机发现不能联网,其实是系统服务项里缺少两个用到的服务,不能联网了,下面教大家解决联网问题. 1.打开VMware虚拟机主页,点击“编辑——虚拟网络编辑器”. 2.点击左 ...

  7. 通过bat批处理程序如何实现在多个txt文件后面加上相同的一行文字

    通过bat批处理程序如何实现在多个txt文件后面加上相同的一行文字 set/p a=输入要增加的文字 for /f "delims=" %%i in ('dir /b *.txt' ...

  8. SQL注入(字符型)

       靶场:sqli-labs @SQLi最重要的一点:别上来就对着输入框注入,完整语句写出来,始终在语句中写完整的,最后把完整的一部分截取出来作为输入 @URL编码:为避免歧义,URL中,如 %2b ...

  9. CF1187E Tree Painting

    思路: 树形dp,首先使用dp计算以1为根的时候的最大分数,同时得到各个子树i的最大分数dp[i].然后利用前面得到的dp数组分别计算以其他每个点作为根的时候的最大分数. 实现: #include & ...

  10. spring中@Profile的作用

    根据系统环境的不同,Profile可以用来切换数据源.例如切换开发,测试,生产环境的数据源. 举个例子: 先创建配置类MainProfileConfig: @Configuration @Proper ...