6.SpringMVC 配置式开发-处理器
处理器除了实现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 配置式开发-处理器相关推荐
- 7.SpringMVC 配置式开发-ModelAndView和视图解析器
ModelAndView 1.Model(模型) 1.model的本质就是HashMap,向模型中添加数据,就是往HashMap中去添加数据 2.HashMap 是一个单向查找数组,单向链表数组 3. ...
- 二、SpringMVC 注解式开发学习笔记
1.@RequestMapping 定义请求规则 通过@RequestMapping 注解可以定义处理器对于请求的映射规则.该注解可以注解在方法上,也可以注解在类上,但意义是不同的.value 属性值 ...
- SpringMVC (六)注解式开发
之前我们写springmvc的案例的时候所有的操作都是用配置文件配置的,现在我们来说另一种写案例的方式,使用注解式开发,在后面的开发中我们也都是这种方式进行开发 首先我先用注解式开发写springmv ...
- eclipse maven 搭建 SSM(Spring+SpringMVC+MyBatis)开发环境 和 MyBatis 自动生成的 maven 插件配置
最近研究java web开发,首先需要配置好开发环境,查阅网上各位大神的文章后搭建完成,记录下来作为备忘. 1.安装Maven Maven下载地址:http://maven.apache.org/do ...
- Spring+SpringMVC+Mybatis(开发必备技能)01、基础idea环境配置
Spring+SpringMVC+Mybatis(开发必备技能) 01.基础idea环境配置 环境: 数据库:MySQL 开发工具:IntelliJ IDEA 2020.1.3 x64 框架:SSM( ...
- spring boot web开发------自定义springmvc配置
1.如何自定义springmvc配置 旧的springmvc配置文件 <?xml version="1.0" encoding="UTF-8"?> ...
- 从零开始实现 ASP.NET Core MVC 的插件式开发(七) - 问题汇总及部分问题解决方案...
标题:从零开始实现 ASP.NET Core MVC 的插件式开发(七) - 问题汇总及部分问题解决方案 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/ ...
- SpringMVC配置静态资源加载, 中文乱码处理,注解驱动
常规配置(Controller加载控制) SpringMVC的处理器对应的bean必须按照规范格式开发,未避免加入无效的bean可通过bean加载过滤器进行包含设定或排除设定,表现层bean标注通常设 ...
- (转)SpringMVC学习(八)——SpringMVC中的异常处理器
http://blog.csdn.net/yerenyuan_pku/article/details/72511891 SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常 ...
- Shiro授权--注解式开发
目录 一.授权角色,权限 UserMapper.xml 添加查询方法 UserMapper UserBiz UserBizImpl MyRealm 重新MyRealm 编写授权方法 配置文件 ap ...
最新文章
- python网上编程课程-什么是Python编程课程
- apigw鉴权分析(1-2)腾讯开放平台 - 鉴权分析
- linux进程命令解释,linux 进程命令top详解
- isis simple 运行Maven是报错: No goals have been specified for this build.
- php7 memcached sasl,Mac安装memcached扩展支持sasl
- react native 组件汇总整理,点击链接至GitHub
- python装饰器详解-python装饰器使用实例详解
- 让go语言调用外部程序时支持管道符
- 手机 物理分辨率 逻辑分辨率
- Java中涉及线程和并发相关的内容
- masOS上使用Java 3D解决方案
- 如何使用Navicat将psc备份导入到MySQL
- Python3中的可迭代类型
- mybatis表不存在的解决办法
- MySQL高级-(存储引擎、索引、锁)
- windows输入法英文字体间距比平常大,按照设置里按下"shift+space“键,也依然如此
- 智能枕头的功能及工作原理
- ctf-web-秋名山车神
- 就凭这些,蕴含清华百年历史的《无问西东》唤起了一片赤子之心
- 生物学重复好不好--看看样本相关性
热门文章
- Single Number 只出现一次的数字 python实现 - ...
- 决策树ID3算法的不足
- pycharm设置工程运行环境
- Python sys.argv[]详解
- 《How to Write and Publish a Scientfic Paper》 Chapter 1
- 【SPOJ - DQUERY】D-query【主席树 —— 区间中不同数的个数】
- tail -f 命令卡住
- 对于xfire动态调用webservice接口
- 能力提升综合题单 Part 8.3.3 最近公共祖先
- 使用threading多线程访问baidu,输出状态码及访问时间