所谓配置式开发是指,“处理器类是程序员手工定义的,实现了特定接口的类,然后再在SpringMVC配置文件中对该类进行显式的,明确的注册”的开发方式”

1.处理器映射器HandlerMapping

HandlerMapping接口负责根据request请求找到对应的Handler处理器即Interceptor拦截器,并将它们封装在HandlerExecutionChain对象中,返回给中央调度器。

其常用的实现类有两种:

01BeanNameUrlHandlerMapping

02SimpleUrlHandlerMapping

01BeanNameUrlHandlerMapping

BeanNameUrlHandlerMapping处理器映射器,会根据请求的url与spring容器中所定义的处理器bean的name属性值进行匹配,从而在spring容器中找到处理器bean的实例

  1. <!--处理器 映射器-->
  2. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
  3. <!--处理器-->
  4. <bean id="/hello.do" class="cn.happy.day01.FirstController"></bean>

02.SimpleUrlHandlerMapping

SimpleUrlHandlerMapping处理器映射器,不仅可以将url与处理器的定义分离,还可以对url进行统一的映射管理

SimpleUrlHandlerMapping处理器映射器,会根据请求的url与Spring容器中定义的处理器映射器自标签的key属性进行匹配,匹配上后,再将该key的value值与处理器bean的id值进行匹配,从而在spring容器中找到处理器bean

只需修改springmvc.xml文件即可

第一种方式

  1. <!--处理器映射器-->
  2. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  3. <property name="urlMap">
  4. <map>
  5. <entry key="/*.do" value="multiActionController"></entry>
  6. </map>
  7. </property>
  8. </bean>
  9. <!--处理器-->
  10. <bean id="firstController" class="cn.happy.day02.MyAbstractController">
  11. </bean>

第二种方式

  1. <bean id="propertyNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
  2. <property name="mappings">
  3. <props>
  4. <prop key="/first.do">doFirst</prop>
  5. <prop key="/second.do">doSecond</prop>
  6. </props>
  7. </property>
  8. </bean>
  9.  
  10. <!--处理器-->
  11. <bean id="firstController" class="cn.happy.day02.MyAbstractController">
  12. </bean>

三种方法名称解析器

01.默认方法名称解析器 MultiActionController

MyMultiActionController :

  1. public class MyMultiActionController extends MultiActionController {
  2. public String doFirst(HttpServletRequest request, HttpServletResponse response){
  3. return "first";
  4. }
  5. public String doSecond(HttpServletRequest request, HttpServletResponse response){
  6. return "second";
  7. }
  8. }

spring.mvc.xml

  1. <!--处理器映射器-->
  2. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  3. <property name="urlMap">
  4. <map>
  5. <entry key="/*.do" value="multiActionController"></entry>
  6. </map>
  7. </property>
  8. </bean>
  9. <!--默认视图解析器的名称-->
  10. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  11. <property name="prefix" value="/"></property>
  12. <property name="suffix" value=".jsp"></property>
  13. </bean>
  14.  
  15. <bean id="multiActionController" class="cn.happy.day03.MyMultiActionController"></bean>

02属性方法名称解析器  PropertiesMethodNameResolver

MyMultiActionController :与上一案例相同

springmvc.xml

  1. <!--处理器映射器-->
  2. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  3. <property name="urlMap">
  4. <map>
  5. <entry key="/*.do" value="multiActionController"></entry>
  6. </map>
  7. </property>
  8. </bean>
  9.  
  10. <!--属性方法名称解析器 PropertiesMethodNameResolver
  11. 访问格式:first.do / second.do
  12. -->
  13. <bean id="propertyNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
  14. <property name="mappings">
  15. <props>
  16. <prop key="/first.do">doFirst</prop>
  17. <prop key="/second.do">doSecond</prop>
  18. </props>
  19. </property>
  20. </bean>
  21. <bean id="multiActionController" class="cn.happy.day03.MyMultiActionController">
  22. <property name="methodNameResolver" ref="propertyNameResolver" ></property>
  23. </bean>

03参数方法名称解析器

springmvc.xml

  1. <!--处理器映射器-->
  2. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  3. <property name="urlMap">
  4. <map>
  5. <entry key="/hello.do" value="multiActionController"></entry>
  6. </map>
  7. </property>
  8. </bean>
  9. <!--参数方法名称解析器 ParameterMethodNameResolver
  10. 访问格式: /hello.do?actionName=doFirst/doSecond value不写默认为action-->
  11. <bean id="parameterNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
  12. <property name="paramName" value="actionName"[value不写默认为action]></property>
  13. </bean>
  14. <!--默认视图解析器的名称-->
  15. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  16. <property name="prefix" value="/"></property>
  17. <property name="suffix" value=".jsp"></property>
  18. </bean>
  19.  
  20. <bean id="multiActionController" class="cn.happy.day03.MyMultiActionController">
  21. <property name="methodNameResolver" ref="parameterNameResolver" ></property>
  22. </bean>

value不写默认为action 源码解析

三种视图解析器

01视图解析器  InternalResourceViewResolver

  1. <!--默认视图解析器的名称-->
  2. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3. <property name="prefix" value="/"></property>
  4. <property name="suffix" value=".jsp"></property>
  5. </bean>

02视图解析器  BeanNameViewResolver

RedirectView:定义外部资源视图对象
JstlView:定义内部资源视图对象

  1. <!--内部视图对象-->
  2. <bean id="innerView" class="org.springframework.web.servlet.view.JstlView">
  3. <property name="url" value="/index.jsp"></property>
  4. </bean>
  5. <!--外部视图对象-->
  6. <bean id="jd" class="org.springframework.web.servlet.view.RedirectView">
  7. <property name="url" value="https://www.jd.com/"></property>
  8. </bean>
  9. <!--BeanNameViewResolver视图解析器-->
  10. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>

03视图解析器  XMLViewResolver

可以将部分配置信息提取到另一个配置文件中

myview.xml

  1. <!--内部视图对象-->
  2. <bean id="innerView" class="org.springframework.web.servlet.view.JstlView">
  3. <property name="url" value="/index.jsp"></property>
  4. </bean>
  5. <!--外部视图对象-->
  6. <bean id="jd" class="org.springframework.web.servlet.view.RedirectView">
  7. <property name="url" value="https://www.jd.com/"></property>
  8. </bean>

在原位配置文件(springmvc.xml)引入

  1. <bean class="org.springframework.web.servlet.view.XmlViewResolver">
  2. <property name="location" value="classpath:myview.xml"></property>
  3. </bean>

SpringMVC处理器映射器和方法名称解析器的更多相关文章

  1. SSM-SpringMVC-11:SpringMVC中ParameterMethodNameResolver参数方法名称解析器

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 或许曾经的我们也见过一种方式http://localhost:8080/项目名/后台servlet?actio ...

  2. SSM-SpringMVC-10:SpringMVC中PropertiesMethodNameResolver属性方法名称解析器

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 上次的以继承MultiActionController可以实现一个处理器中多个处理方法,但是局限出来了,他们的 ...

  3. SpringMVC03 ParameterMethodNameResolver(参数方法名称解析器) And XmlViewResolver(视图解析器)

    参数方法名称解析器 1.配置依赖包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  4. spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping

    spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...

  5. spring mvc: 属性方法名称解析器(多动作控制器)MultiActionController/ControllerClassNameHandlerMapping/PropertiesMethodNameResolver

    spring mvc: 属性方法名称解析器(多动作控制器) 加入控制器是StudentContrller.java,里面有3个方法 index,add,remove 那么访问地址是: http://l ...

  6. Spring MVC参数方法名称解析器

    以下示例显示如何使用Spring Web MVC框架来实现多动作控制器的参数方法名称解析器. MultiActionController类可在单个控制器中分别映射多个URL到对应的方法. 所下所示配置 ...

  7. Spring MVC属性方法名称解析器

    以下示例显示如何使用Spring Web MVC框架来实现多动作控制器的属性方法名称解析器. MultiActionController类可在单个控制器中分别映射多个URL到对应的方法. 所下所示配置 ...

  8. Spring MVC-控制器(Controller)-参数方法名称解析器(Parameter Method Name Resolver )示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_parametermethodnameresolver.htm 说明:示例基于Sp ...

  9. Spring MVC-控制器(Controller)-属性方法名称解析器(Properties Method Name Resolver )示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_propertiesmethodnameresolver.htm 说明:示例基于S ...

随机推荐

  1. markdown 相关零碎知识

    1.尖括号<>在markdown会被当做html符号,解决办法:用转义字符,如:<测试>  可以写作&lt:测试>

  2. 集腋成裘-02-css基础-01

    CSS 层叠样式表(Cascading Style Sheets)(级联样式表) 1 选择器 1.1 写法 选择器是一个选择标签的过程. 选择器{属性:值;...} 1.2 基础选择器 标签选择器 类 ...

  3. Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器

    https://www.cnblogs.com/saneri/p/7772641.html

  4. H.265:网络视频的高清时代

    去年八月,爱立信公司推出了首款H.265编解码器,而在仅仅六个月之后,国际电联(ITU)就正式批准通过了HEVC/H.265标准,标准全称为高效视频编码(High Efficiency Video C ...

  5. CentOS7下Django环境的搭建安装python3.6.5,virtualenv django1.11.14

    1.帖子1https://blog.csdn.net/a249900679/article/details/51527200 2.virtualenv https://www.cnblogs.com/ ...

  6. python全栈开发day59-Django基础

    一.今日内容总结 1.HTTP协议: 请求:浏览器发给服务端的消息 格式: 请求方法 URL 协议版本\r\n k1: v1\r\n k2: v2\r\n \r\n 请求体(请求数据) 响应:服务端返 ...

  7. gitlab之一: gitlab安装配置使用

    参考: gitlab 安装和配置 gitlab下载地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/ 官方教程: https://about.gitl ...

  8. 解决背景图文字盖住html里面的dom元素

    width:100%; background: url('../images/res.jpg') no-repeat 0 0px; background-attachment:fixed; backg ...

  9. CodeForces 516C Drazil and Park 线段树

    原文链接http://www.cnblogs.com/zhouzhendong/p/8990745.html 题目传送门 - CodeForces 516C 题意 在一个环上,有$n$棵树. 给出每一 ...

  10. Linux下的Sreen命令使用

    详细的介绍请参看:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html 一.简介 GNU Screen是一款由GNU计划开发的用于 ...