博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc03 非注解和注解处理器映射器和适配器
阅读量:5864 次
发布时间:2019-06-19

本文共 4796 字,大约阅读时间需要 15 分钟。

1其它非注解处理器映射器和适配器1.1BeanNameUrlHandlerMapping(映射器)根据请求url(XXXX.action)匹配spring容器bean的 name找到对应的bean(程序编写的Handler)1.2SimpleUrlHandlerMapping(映射器)
itemController1
itemController2
注意:在springmvc.xml配置了多个处理器映射器,多个处理器映射器可以共存。哪个映射成功就用哪个。1.3SimpleControllerHandlerAdapter(适配器)要求程序编写的Handler(Controller)需要实现 Controller接口。
1.4HttpRequestHandlerAdapter(适配器)在springmvc.xml配置:HttpRequestHandlerAdapter
要求Handler 实现 HttpRequestHandler接口1.4.1开发Handlerpublic class ItemController2 implements HttpRequestHandler { @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 使用静态数据将商品信息列表显示在jsp页面 // 商品列表 List
itemsList = new ArrayList
(); Items items_1 = new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setCreatetime(new Date()); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); request.setAttribute("itemsList", itemsList); //转发到jsp页面 request.getRequestDispatcher("/WEB-INF/jsp/itemsList.jsp").forward(request, response); }}1.4.2配置Handler
使用简单url映射器:
itemController1
itemController2
映射器是根据url查找handler,当有多个映射器相同的url的时候,所有的映射器在一个list队列当中,映射url的时候从集合中拿,拿到了就使用,后面就不管了。

 1 DispatcherServlet.properoties

Springmvc的包:

DispatcherServlet前端控制器加载 DispatcherServlet.properoties 配置文件,从而默认加载各个组件,properoties文件如下:org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolverorg.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.DefaultAnnotationHandlerMappingorg.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapterorg.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolverorg.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslatororg.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolverorg.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager如果在springmvc.xml中配置了处理器,映射器和适配器则以sprintmvc.xml中配置的为准。
1注解映射器和适配器1.1注解映射器    spring3.1之前默认加载映射器是org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping,3.1之后要使用:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping在springmvc.xml中配置RequestMappingHandlerMapping:    
使用RequestMappingHandlerMapping需要在Handler 中使用@controller标识此类是一个控制器(Handler),使用@requestMapping指定Handler方法所对应的url。1.2注解适配器spring3.1之前默认加载映射器是org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter,3.1之后要使用:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
RequestMappingHandlerAdapter,不要求Handler实现任何接口,它需要和RequestMappingHandlerMapping注解映射器配对使用,主要解析Handler方法中的形参。1.3注解开发Hanlder注解的handler(Controller)只能通过注解的映射器和适配器来调用。@Controller//标识他是一个控制器

1.1配置Handler    
建议使用组件扫描,组件扫描可以扫描@Controller、@Service、@component(不是service也不是dao)、@Repsitory
1小结DispatcherServlet:前端控制器,相当于中央调度器,可以降低组件之间的耦合度。HandlerMapping:处理器映射器,负责根据url查找HandlerHandlerAdapter:处理器适配器,负责根据适配器要求的规则去执行处理器(Controller)。可以通过扩展适配器支持不同类型的Handler。viewResolver:视图解析器,根据逻辑视图名解析成真正的视图,
配置前缀
配置后缀
真正视图地址==前缀+逻辑视图名+后缀1、DispatcherServlet通过HandlerMapping查找Handler返回一个Chain,for循环是从多个HandlerMapping中找,哪个适用了就用哪个,

2、DispatcherServlet通过适配器去执行Handler,得到ModelAndview

3、视图解析视图解析完成得到一个view:

 

4、进行视图渲染将Model中的数据 填充到request域。

转载地址:http://frunx.baihongyu.com/

你可能感兴趣的文章
【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot 实现自动化部署
查看>>
网络数据传输需要注意的两个问题
查看>>
Stage6--Python简单爬虫
查看>>
ENVI显示GDAL创建GeoTiff文件的一个问题及其思考
查看>>
ES6新特性
查看>>
python unittest框架中doCleanups妙用
查看>>
如何学习cocos2d-x
查看>>
在Word 2007中添加参考文献及其引用的方法
查看>>
面试题
查看>>
C++把引用作为返回值
查看>>
【js】我们需要无限滚动列表吗?
查看>>
mysql添加类似oracle的伪列及查看表信息
查看>>
POJ 3279 DFS
查看>>
SGU 191.Exhibition(模拟)
查看>>
如何编译Apache Hadoop2.6.0源代码
查看>>
Maven中settings.xml的配置项说明
查看>>
【字符串问题】求一个字符串中重复出现的最长的子串
查看>>
文件缓存
查看>>
时间管理之“二”定律
查看>>
NYOJ71:独木舟上的旅行(简单贪心)
查看>>