天天看点

springMVC教程初级(二)初始springmvc(详细分析)一、前言二、非注解处理器映射器与适配器三、注解处理器映射器与适配器四、SpringMVC总结分析

前一章节对springMVC初步讲解了,我们得知它由C-Dispatcher;M-HanlderMapping、HandlerAdapter、Handler;V-ViewResolver三部分组成;其中我们加入了一个spring的字符集拦截器CharacterEncodingFilter在我们的Web.xml里面,构成为SpringMVC。我们只有记住spring的这几个大结构,即使其中的某个部分换了组件,依然能够知道怎么去配置,例如struts2的整合。接下来首先讲一下映射器HandlerMapping与HandlerAdapter。

  匹配Spring容器Bean的Name找到的Bean(程序员编写Hanlder)

  2.1.2  SimpleUrlHandlerMapping

BeanNameHandlerMapping的升级版,因为它可以统一配置Controller里面对应Url

注意:benaname与simple两者同时配置,那么两者同时有效。

要求程序编写的Handler(Controller)需要实现 Controller接口。

要求Handler 实现 HttpRequestHandler接口

提醒:我用的时候需要加全路径

spring3.1版本之前加载映射器org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

spring3.1之后用org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping

也是源码解读:/org/springframework/spring-webmvc/4.2.0.RELEASE/spring-webmvc-4.2.0.RELEASE.jar!/org/springframework/web/servlet/DispatcherServlet.properties里面清楚记载了先加载谁

在springmvc.xml中配置RequestMappingHandlerMapping:

使用RequestMappingHandlerMapping需要在Handler 中使用@controller标识此类是一个控制器,使用@requestMapping指定Handler方法所对应的url。

spring3.1版本之前org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

spring3.1版本之后org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter

访问结果url:http://localhost:8080/spring01/queryItems

前面我们清楚了一下流程,现在我们看看spring源码分析,到底这些流程是怎么来的。

DispatcherServlet:前端控制器,中央指挥机器,降低组件之间的耦合度。

HandlerMappring: 负责处理器映射,根据url找到Handle

HandlerAdapter:处理器适配器,根据处理器需求执行适配器。可以通过扩展适配器支持不同类型的Handler 例如:Struts2

ViewResolver:视图解析器,根据逻辑视图解析为真正的视图。视图地址=前缀+逻辑视图名+后缀

视图解析器配置:

执行流程:

1、DispatcherServlet

我们进入该类看到doDispatch这个方法有个注释:

这个就是我们的中心处理程序方法:

1】 Dispatcher通过Hander查询handle

springMVC教程初级(二)初始springmvc(详细分析)一、前言二、非注解处理器映射器与适配器三、注解处理器映射器与适配器四、SpringMVC总结分析

2】Dispatcher 通过适配器执行Handler,得到ModelAndView

springMVC教程初级(二)初始springmvc(详细分析)一、前言二、非注解处理器映射器与适配器三、注解处理器映射器与适配器四、SpringMVC总结分析

3】得到ModelAndView,解析视图

springMVC教程初级(二)初始springmvc(详细分析)一、前言二、非注解处理器映射器与适配器三、注解处理器映射器与适配器四、SpringMVC总结分析

解析视图最里层我们看看。再往里,其实就是网request里面放置属性了。

springMVC教程初级(二)初始springmvc(详细分析)一、前言二、非注解处理器映射器与适配器三、注解处理器映射器与适配器四、SpringMVC总结分析

jiangmodle数据填充到request中

springMVC教程初级(二)初始springmvc(详细分析)一、前言二、非注解处理器映射器与适配器三、注解处理器映射器与适配器四、SpringMVC总结分析