springmvc(2)处理器设配器和映射器
非注解的处理器 映射器 和 适配器
一.处理器映射器
1.BeanNameUrlHandlerMapping
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
Handler的实现:
<!-- 配置Handler --> <bean name="/queryItems.action" class="com.MrChengs.controller.ItemsController"></bean>
2.SimpleUrlHandlerMapping
<!-- 处理器映射器2 -->
<bean id="itemsController" class="com.MrChengs.controller.ItemsController"></bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/queryItems1.action">itemsController</prop><prop key="/queryItems2.action">itemsController</prop></props></property>
</bean>
此时可以访问一下两个都可以得到结果
queryItems1.action
queryItems2.action
注意: 多个映射器可以并存,前端控制器判断能让那些映射器映射,就让正确的映射器处理。
二.处理器适配器
1.SimpleControllerHandlerAdapter
<!-- 处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
注意: 要求是编写的Handler必须实现Controller接口
public class ItemsController implements Controller {
...
}
2.HttpRequestHandlerAdapter
<!-- 处理器适配器2 -->
<!-- 要求编写的Handler实现 HttpRequestHandler接口。 -->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
看源码:
可以看出这个类需要实现 HttpRequestHandler 接口
public class ItemsController2 implements HttpRequestHandler {@Overridepublic void handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {List<Items> itemsList = new ArrayList<Items>();//向list中填充静态数据 Items items_1 = new Items();items_1.setName("手机");items_1.setPrice(6000f);items_1.setDetail("这是一个新的手机"); //设置模型数据arg0.setAttribute("itemsList", itemsList);//设置转发视图arg0.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(arg0, arg1);} }
在springmvc.xml
<!-- 处理器适配器2 -->
<!-- 要求编写的Handler实现 HttpRequestHandler接口。 -->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<bean id="itemsController2" class="com.MrChengs.controller.ItemsController2"></bean><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/queryItems1.action">itemsController</prop><prop key="/queryItems2.action">itemsController</prop>
<prop key="/queryItems3.action">itemsController2</prop>
</props></property>
</bean>
访问上面红色的地址即可得到正确的答案!!
关于DispatcherServlet.properties
在springmvc中去除这些代码依然可以执行
<!-- 处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 处理器适配器2 --> <!-- 要求编写的Handler实现 HttpRequestHandler接口。 --> <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
# Default implementation classes for DispatcherServlet's strategy interfaces. # Used as fallback when no matching beans are found in the DispatcherServlet context. # Not meant to be customized by application developers. org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
注解的处理器映射器和适配器
1.配置注解映射器/适配器
在springmvc.xml文件
<!-- 注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <!-- 注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> <!-- mvc:annotation-driven: 代替上面注解映射器&注解适配器的配置 其默认加载很多的参数绑定方法 实际开发使用mvc:annotation-driven --> <mvc:annotation-driven></mvc:annotation-driven>
2.Handler
@Controller public class ItemsController3{//商品查询@RequestMapping("/queryItemsByMapping")public ModelAndView queryItems() throws Exception{List<Items> itemsList = new ArrayList<Items>();//向list中填充静态数据 Items items_1 = new Items();items_1.setName("手机");items_1.setPrice(6000f);items_1.setDetail("这是一个手机"); itemsList.add(items_1);ModelAndView modelAndView = new ModelAndView();//相当于request的setAttributemodelAndView.addObject("itemsList", itemsList);//指定视图modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;} }
3.在容器中加载Handler
<!-- 对于注解的Handler可以单独配置 --> <!-- 建议使用组建扫描...... --> <context:component-scan base-package="com.MrChengs"></context:component-scan>
测试时访问@RequestMapping("/queryItemsByMapping")中的queryItemsByMapping
源码追踪一探究竟:
小结:
<mvc:annotation-driven></mvc:annotation-driven>可以代替下边的配置: <!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
视图解析器配置前缀和后缀:
<!-- 视图显示器 --> <!-- 解析jsp视图 --> <!-- 默认使用jstl的包 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/items"></property><property name="suffix" value=".jsp"></property> </bean>
@Controller
public class ItemsController3{@RequestMapping("/queryItemsByMapping")public ModelAndView queryItems() throws Exception{......//指定视图 modelAndView.setViewName("/itemsList");return modelAndView;}
}
到这里基本的就结束了...
转载于:https://www.cnblogs.com/Mrchengs/p/9940491.html
springmvc(2)处理器设配器和映射器相关推荐
- 管理springmvc组件——前端控制器、控制器映射器和适配器、视图解析器、文件上传的、拦截器||消息转化
管理springmvc组件 概述 在使用springmvc时要配置哪些东西 前端控制器 控制器映射器和适配器 映射器 Map<Set<String>,Object> Set& ...
- SSM-SpringMVC-07:SpringMVC中处理器映射器
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping BeanN ...
- 非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)
非注解的处理器映射器和适配器 非注解的处理器映射器 之前的入门Demo中使用的就是非注解的处理器映射器: org.springframework.web.servlet.handler.BeanNam ...
- 【SpringMVC框架】注解的处理器映射器和适配器配置
下面我们来探讨注解的处理器映射器和适配器 1.注解的处理器映射器和适配器 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.De ...
- 【SpringMVC框架】非注解的处理器映射器和适配器
非注解的处理器映射器和适配器 1.非注解的处理器映射器 之前的处理器映射器: org.springframework.web.servlet.handler.BeanNameUrlHandlerMap ...
- SpringMVC学习记录二——非注解和注解的处理器映射器和适配器
3 非注解的处理器映射器和适配器 3.1 非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUr ...
- SpringMVC处理器映射器HandlerMapping
前言 在SpringMVC中会有很多请求,每个请求都需要一个HandlerAdapter处理,具体接收到一个请求之后使用哪个HandlerAdapter进行处理呢,他们的过程是什么.本文将对此问题进行 ...
- springmvc自定义处理器映射器和处理器适配器
springmvc通过处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter)来处理http请求,当一个请求经过DispatcherServlet后,Dispatch ...
- SpringMVC 处理器映射器详解
0x00:介绍 关于 SPring MVC 的详细介绍可参考之前的文章,SpringMVC 工作原理. 在 SpringMVC 中,处理器映射器有两种配置方式,一种是基于 XML 的资源配置,也就是常 ...
最新文章
- 矿Spring入门Demo
- [bbk2908]第4集 - Chapter 03 - 介绍RAC的体系结构
- 电商领袖战:马云虚,东哥实
- DOS 入侵、群发邮件、心脏起搏器……病毒攻击简史!
- Go WebSocket开发与测试实践【gorilla/websocket】
- matlab里面画离散信号怎么画_一、基本离散信号的MATLAB产生和图形实现
- 51单片机中外部中断使用示例(Protues仿真)
- Studio3T连接远程服务器上的mongo数据库
- 图灵奖得主都写过哪些书?
- [人脸关键点检测] Wing loss 论文解读
- Vimium --- 将你的Chrome变成Vim
- threejs 特效 自定义发光围栏,发光墙体,闪烁动画
- 2015合肥市第 32 届青少年信息学(计算机)奥林匹克竞赛小学组试题
- android 摄像头检测工具,检摄app下载-检摄软件(检测摄像头)下载 v1.0.7安卓版_5577安卓网...
- java.util.Date的getYear()
- 计算机窗口演示,认识电脑窗口
- Java基于springboot+vue的流浪动物救助收养平台 nodejs 前后端分离
- 聚类分析:原型K-Means/K-Means++聚类、层次聚类;密度聚类DBSCAN
- HTML入门---慕课网
- 服务器内存 知乎_内存的差距——服务器内存和普通PC内存的区别