所谓配置式开发是指,“处理器类是程序员手工定义的,实现了特定接口的类,然后再在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. favicon.ico--网站标题小图片二三事

    前言: 什么是favicon? 直接用图说话:这个就是favicon favicon.ico 是一种格式,一般用于网页地址栏前或者在标签上以缩略方式显示网站标志,也可以拖曳favicon到桌面以建立到 ...

  2. 使用powerdesigner导入sql脚本,生成物理模型

    有些时候我们的powerdesigner以jdbc的形式链接本地数据库可能会失败,这时候我觉得从sql文件中生成物理模型是个很不错的方法 1.打开powerdesigner,文件->->r ...

  3. Centos7上实现不同网段的服务器文件共享

    目的:实现不同网段的服务器实现文件共享 前提:服务器1可以和共享服务器互通,共享服务器和服务器2互通 拓扑如下: 思路: 一般文件共享有涉及windown系统的用samba,纯类centos系统就用n ...

  4. php归档格式:phar文件详解(创建、使用、解包还原提取)

    转载一篇,突然遇到一个冷知识,phar的东东,貌似和jar.war是一种鬼. 重点使用一下下面这个东东,就能解包出来东东了. $phar = new Phar('lib/yunke.phar', 0) ...

  5. #Plugin 数字滚动累加动画插件

    数字滚动累加动画插件  NumScroll 1.使用前先引入jquery2.前端学习群:814798690 下载地址 https://github.com/chaorenzeng/jquery.num ...

  6. rabbitmq3.7.5 centos7 集群部署笔记

    1. 准备3台 centos服务器  192.168.233.128    192.168.233.130    192.168.233.131 防火墙放开 集群端口, 这里一并把所有rabbitmq ...

  7. golang 的glide包管理使用技巧教程

    安装glide ➜ wemall git:(master) ✗ go get github.com/Masterminds/glide ➜ wemall git:(master) ✗ go insta ...

  8. Git Flow,Git团队协作最佳实践

    规范的Git使用 Git是一个很好的版本管理工具,不过相比于传统的版本管理工具,学习成本比较高, 实际开发中,如果团队成员比较多,开发迭代频繁,对Git的应用比较混乱,会产生很多不必要的冲突或者代码丢 ...

  9. HTML文本格式化与HTML 超链接

    文本格式化<b>加粗文本</b><i>斜体文本</i><code>电脑自动输出</code><sub> 下标< ...

  10. bzoj2961 共点圆 bzoj 4140

    题解: 比较水的一道题 首先我们化简一下式子发现是维护xxo+yyo的最值 显然是用凸包来做 我们可以直接用支持插入删除的凸包 也是nlogn的 因为没有强制在线,我们也可以cdq,考虑前面一半对答案 ...