SpringMVC的映射器,适配器,控制器
一、各司其职
(1)HandlerMapping映射器
根据客户端请求的url,找到处理本次请求的处理器,即将请求的路径和controller关联起来
(2)HandlerAdapter适配器
对映射器查找到的controller中的方法进行调用,包括对实现了Controller接口的控制器适配,HttpRequestHandler适配,和Controller注解适配等
(3)HandlerController控制器
执行核心的业务逻辑
二、部分功能概述
(1)映射器 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping:通过所配置的Action的name属性路径,路由到指定的控制器。
<bean name="/beanurl.action" class="com.jyk.springmvc.BeanNameUrlHanderMapping.HelloHAE"></bean>
<bean name="/delete.action" class="com.jyk.springmvc.BeanNameUrlHanderMapping.HelloHAE"></bean>
<bean name="/update.action" class="com.jyk.springmvc.BeanNameUrlHanderMapping.HelloHAE"></bean>
<bean name="/find.action" class="com.jyk.springmvc.BeanNameUrlHanderMapping.HelloHAE"></bean>
(2)映射器 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping:xx.action,yy.action,oo.action等请求路径都交由标签为id的控制器处理,即多个路径映射到一个Action
<!--
映射器,此部分配置用以取代上面复杂配置
1、首先注册业务实现类
2、接着配置映射器(Simple)
-->
<bean id="userAction" class="com.jyk.springmvc.BeanNameUrlHanderMapping.HelloHAE">
</bean> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/beanurl.action">userAction</prop>
<prop key="/delete.action">userAction</prop>
<prop key="/update.action">userAction</prop>
<prop key="/find.action">userAction</prop>
</props>
</property>
</bean>
(2)适配器 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter:因此Spring定义了一个适配接口,使得每一种Controller有一种对应的适配器实现类,
让适配器代替controller执行相应的方法。这样在扩展Controller 时,只需要增加一个适配器类就完成了SpringMVC的扩展了,springmvc适配器的精妙设计详情请见https://www.cnblogs.com/tongkey/p/7919401.html或https://blog.csdn.net/u010288264/article/details/53835185,感谢作者。
(3)控制器 org.springframework.web.servlet.mvc.ParameterizableViewController 如果请求是A.jsp的请求路径,希望跳转到B.jsp页面,不经过定义的控制器处理
<!-- jsp到jsp页面的转发控制器 -->
<bean name="/index.action" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="/index.jsp"/>
</bean>
(4)控制器 org.springframework.web.servlet.mvc.AbstractCommandController : 能够以实体的形式,收集客户端参数
<bean name="/add.action" class="com.jyk.springmvc.controller.AdminAction"> </bean>
public class AdminAction extends AbstractCommandController{
public AdminAction(){
this.setCommandClass(Admin.class);
}
@Override
protected ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object obj, BindException bindException)throws Exception {
System.out.println("AdminAction::handle");
ModelAndView modelAndView = new ModelAndView();
Admin admin = null;
if(obj instanceof Admin){
admin = (Admin) obj;
}
modelAndView.addObject("username",admin.getUsername());
modelAndView.addObject("gender",admin.getGender());
modelAndView.addObject("hiredate",admin.getHiredate());
modelAndView.setViewName("/jsp/success.jsp");
return modelAndView;
}
}
SpringMVC的映射器,适配器,控制器的更多相关文章
- SpringMVC的映射器、适配器、解析器
1.处理器和适配器 1.1springmvc的映射器 根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来 1.2springmvc的适配器 对映 ...
- SpringMVC处理器映射器和方法名称解析器
所谓配置式开发是指,“处理器类是程序员手工定义的,实现了特定接口的类,然后再在SpringMVC配置文件中对该类进行显式的,明确的注册”的开发方式” 1.处理器映射器HandlerMapping Ha ...
- springMVC入门(三)------springMVC的处理器映射器和处理器适配器配置
简介 springMVC的处理器映射器和处理器适配器存在多种配置,因此在此专门做一个总结 常见处理器映射器.适配器的配置 springmvc多个映射器多个处理器可以并存 所有的映射器都实现了Handl ...
- Spring映射器、适配器、解析器
1 springmvc的映射器和适配器 1.1springmvc的映射器 根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来 1.2spring ...
- SpringMVC 学习笔记(处理器映射器的配置)
前端控制器(dispatchServlet) 在web.xml中配置前端控制器,在服务器启动时就被创建,用来对请求和响应进行接收 和 分发处理,其在配置时可以设置一个初始化参数,用来定位SpringM ...
- springmvc(2)处理器设配器和映射器
非注解的处理器 映射器 和 适配器 一.处理器映射器 1.BeanNameUrlHandlerMapping <bean class="org.springframework.web ...
- springMVC控制器,处理器,映射器,适配器
前端控制器DispatcherServlet <!--定义spring mvc 的前端控制器Servlet --><servlet> <!--Servlet的名称--&g ...
- springMVC非注解常用的"处理器映射器"、"适配器"、"处理器"
非注解处理器映射器1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping url 到bean name的映射2. or ...
- SpringMVC由浅入深day01_5注解的处理器映射器和适配器
5 注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandle ...
随机推荐
- 时钟.html
<!DOCTYPE html><html charset="utf-8"> <head> <title>时钟</title&g ...
- SQL之Join的使用
一.基本概念 关于sql语句中的连接(join)关键字,是较为常用而又不太容易理解的关键字,下面这个例子给出了一个简单的解释 –建表user1,user2: table1 : create table ...
- 【BZOJ】1068: [SCOI2007]压缩(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1068 发现如果只设一维的话无法转移 那么我们开第二维,发现对于前i个来说,如果确定了M在哪里,第i个 ...
- 【BZOJ】1699: [Usaco2007 Jan]Balanced Lineup排队(rmq/树状数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1699 我是用树状数组做的..rmq的st的话我就不敲了.. #include <cstdio& ...
- PyQt的QString 和 QStringList
在Qt的C++实现中的QString 和 QStringList 在Python的实现中等效替换为 "str1" 和 ["str1","str2&qu ...
- MySQL的外键约束:Cascade/Restrict/No action/SET NULL :级联操作
转自:http://blog.csdn.net/cnjsnt_s/article/details/5548280 具体使用时需要参考:http://blog.csdn.net/codeforme/ar ...
- 通过公网IP主机建立ssh隧道
环境描述 hostA: 有公网IP的linux主机 hostB: 私有路由器后端无公网IPlinux主机,能够ssh连接到hostA hostC: 个人pc机 隧道创建步骤 step1 在hostB上 ...
- springmvc 发送PUT 和 DELETE 请求
一: 发送 DELETE 或者 PUT 请求: 1.在表单中加入一个隐藏的参数: _method , 值是 DELETE (或者PUT) <form action="springmv ...
- Json与数组
今天趁着看源代码的同时,记录学习的小知识. 一.String.Split 方法有6个重载函数: 1) public string[] Split(params char[] separator)2) ...
- zoj3696(泊松分布)
p(k)=(y^k) / (k!) * e^(-y) 其中的y就是平均值 k就是我们要求的大小. Alien's Organ Time Limit: 2 Seconds Memory Lim ...