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

1.处理器映射器HandlerMapping

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

其常用的实现类有两种:

01BeanNameUrlHandlerMapping

02SimpleUrlHandlerMapping

01BeanNameUrlHandlerMapping

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

 <!--处理器 映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!--处理器-->
<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文件即可

第一种方式

 <!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/*.do" value="multiActionController"></entry>
</map>
</property>
</bean>
<!--处理器-->
<bean id="firstController" class="cn.happy.day02.MyAbstractController">
</bean>

第二种方式

 <bean id="propertyNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/first.do">doFirst</prop>
<prop key="/second.do">doSecond</prop>
</props>
</property>
</bean> <!--处理器-->
<bean id="firstController" class="cn.happy.day02.MyAbstractController">
</bean>

三种方法名称解析器

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

MyMultiActionController :

 public class MyMultiActionController extends MultiActionController {
public String doFirst(HttpServletRequest request, HttpServletResponse response){
return "first";
}
public String doSecond(HttpServletRequest request, HttpServletResponse response){
return "second";
}
}

spring.mvc.xml

 <!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/*.do" value="multiActionController"></entry>
</map>
</property>
</bean>
<!--默认视图解析器的名称-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean> <bean id="multiActionController" class="cn.happy.day03.MyMultiActionController"></bean>

02属性方法名称解析器  PropertiesMethodNameResolver

MyMultiActionController :与上一案例相同

springmvc.xml

 <!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/*.do" value="multiActionController"></entry>
</map>
</property>
</bean> <!--属性方法名称解析器 PropertiesMethodNameResolver
访问格式:first.do / second.do
-->
<bean id="propertyNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/first.do">doFirst</prop>
<prop key="/second.do">doSecond</prop>
</props>
</property>
</bean>
<bean id="multiActionController" class="cn.happy.day03.MyMultiActionController">
<property name="methodNameResolver" ref="propertyNameResolver" ></property>
</bean>

03参数方法名称解析器

springmvc.xml

 <!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/hello.do" value="multiActionController"></entry>
</map>
</property>
</bean>
<!--参数方法名称解析器 ParameterMethodNameResolver
访问格式: /hello.do?actionName=doFirst/doSecond value不写默认为action-->
<bean id="parameterNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="actionName"[value不写默认为action]></property>
</bean>
<!--默认视图解析器的名称-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean> <bean id="multiActionController" class="cn.happy.day03.MyMultiActionController">
<property name="methodNameResolver" ref="parameterNameResolver" ></property>
</bean>

value不写默认为action 源码解析

三种视图解析器

01视图解析器  InternalResourceViewResolver

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

02视图解析器  BeanNameViewResolver

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

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

03视图解析器  XMLViewResolver

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

myview.xml

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

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

 <bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location" value="classpath:myview.xml"></property>
</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. C/C++中二进制与文本方式打开文件的区别

    二进制与文本文件主要有两个大的区别: 1.换行符的区别: Windows平台下  对于Windows文本文件,它们使用回车和换行来表示换行符:如果以“文本”方式打开文件,当读取文件的时候,系统会将所有 ...

  2. C++ Primer 笔记——数组

    1.数组的大小是固定不变的,声明时必须指定大小(或者使用列表初始化),而且大小必须大于0,C++ Primer里面也建议,如果不确定元素的个数,请使用vector. ]; , , }; //数组长度固 ...

  3. Python深度学习案例1--电影评论分类(二分类问题)

    我觉得把课本上的案例先自己抄一遍,然后将书看一遍.最后再写一篇博客记录自己所学过程的感悟.虽然与课本有很多相似之处.但自己写一遍感悟会更深 电影评论分类(二分类问题) 本节使用的是IMDB数据集,使用 ...

  4. python 垃圾回收

    # 垃圾回收 # 小整数对象池 # a = 100# python对小整数的定义是[-5,257],这些证书对象是提前创建好的,不会被垃圾回收,再一个python的程序中,所有位于这个范围内的正式使用 ...

  5. python字符串之join

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join():连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连 ...

  6. proc/net/dev实时网速统计实例

    https://blog.csdn.net/dosthing/article/details/80384541 http://www.l99.com/EditText_view.action?text ...

  7. golang 请求带验证信息的坑

    最近用golang 和python对接接口,由于之前验证那块没有设置好,然后又为了进度,最近决定用http自带的basic 验证, php的代码很快就验证通过了 /** * @param $url * ...

  8. javascript OOP(下)(九)

    一.javascript模拟重载 java中根据参数类型和数量的区别来实现重载,javascript弱类型,没有直接的机制实现重载,javascript中参数类型不确定和参数个数任意,通过判断实际传入 ...

  9. centos7 yum install redis

    直接yum 安装的redis 不是最新版本 yum install redis 如果要安装最新的redis,需要安装Remi的软件源,官网地址:http://rpms.famillecollet.co ...

  10. chkconfig命令 centos 开机启动命令

    .利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd.mysqld.postfix等,安装后系统默认不会自动启动的.就算手动执行 / ...