DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
1、文件上传解析,如果请求类型是multipart将通过MultipartResolver 进行文件上传解析;
2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个
HandlerInterceptor 拦截器);
3、通过 HandlerAdapter 支持多种类型的处理器(HandlerExecutionChain中的处理器);
4、通过ViewResolver 解析逻辑视图名到具体视图实现;
5、本地化解析;
6、渲染具体的视图等;
7、如果执行过程中遇到异常将交给HandlerExceptionResolver 来解析。
DispatcherServlet在web.xml中的配置:
<servlet> <servlet-name>chapter2</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>chapter2</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
该 DispatcherServlet 默认使用WebApplicationContext 作为上下文, Spring 默认配置文件为
“/WEB-INF/[servlet名字]-servlet.xml”。
我们也可以通过添加初始化参数,而非上面的默认配置文件:
<servlet> <servlet-name>chapter2</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet-config.xml</param-value> </init-param> </servlet>
而如果配置是Spring集成Web环境的通用配置;一般用于加载除Web 层的Bean(如DAO、Service等),以便于与其他任何Web框架集成。则是这样的通用上下文配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-common-config.xml, classpath:spring-budget-config.xml </param-value> </context-param> <listener> <listenerclass> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
创建完毕后会将该上下文放在ServletContext:
servletContext.setAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
此图来自“跟开涛学习SpringMVC”
ContextLoaderListener 初始化的上下文加载的Bean 是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;
DispatcherServlet 初始化的上下文加载的Bean 是只对Spring Web MVC 有效的Bean,如Controller、
HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。
拦截的配置:
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="handerInterceptor1"/> <ref bean="handerInterceptor2"/> </list> </property> </bean>
执行的顺序:
handerInterceptor1.preHandle
handerInterceptor2.preHandle
handerAdapter
handerInterceptor1.postHandle
handerInterceptor2.postHandle
view render
handerInterceptor1.afterCompletion
handerInterceptor2.afterCompletion
相关推荐
通俗移动的Spring MVC入门书籍。请尊重版权,禁止用于商业目的。
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
以下这个学习案例是我最近学习Spring MVC时跟从一本 书上的示例,原文中的示例代码有一些小错误,不过我 在调试的过程中已经给予了修正,如还有其它错误,还 请各位批评指正。 对于现有较成熟的Model-View-...
Spring MVC 学习记录总结Spring MVC 是目前主流的实现MVC设计模式的框架,是Spring 框架的一个分支产品,以 Spring IoC 容器
servlet , jsp和spring MVC学习指南电子书,spring MVC学习指南系列书籍。
spring mvc学习笔记spring mvc学习笔记spring mvc学习笔记spring mvc学习笔记spring mvc学习笔记
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
传智播客 Spring MVC 学习笔记
spring mvc学习经典教材
Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF
Spring MVC学习(二)-------Spring MVC入门.
Spring MVC 学习指南 非扫描版,清晰版,非常的清晰,适合电脑上阅读
spring MVC框架用于web应用快速开发的一个模块。作为当今最主流的web开发框架,开发技能相当热门,值得大家掌握应用。
Spring MVC 学习代码 + PDF文档 学习代码 可以 直接运行 有对应PDF学习 Spring Framework Reference 可快速 学习 上手
Spring MVC学习(三)-------DispatcherServlet详解
Spring.MVC学习指南.pdf。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的... 《Spring MVC学习指南》是一本Spring MVC的教程,内容细致、讲解清晰,非常适合Web开发者和想要使用Spring MVC开发基于Java的Web应用的读者阅读。