您的位置:首页 > 编程语言 > Java开发

Spring 官方文档第十六章笔记(2):DispatcherServlet

2016-04-01 18:04 579 查看
http://my.oschina.net/pkpk1234/blog/60428


Spring Reference第十六章笔记(1)Introduction to Spring Web MVC framework

Spring MVC的核心是DispatcherServlet。DispatcherServlet根据配置文件的配置将请求分发给各个 Controller 。

使用 @Controller和@RequestMapping注解配置Spring MVC中的 Controller 。

在Spring MVC中,可以使用任意对象作为command或者form-backing对象,不需要实现任何框架相关的接口或者父类。

Spring MVC中的Controller负责 preparing a model Map with data 和选择一个视图名称。同时,Controller也可以直接操作response流并完成一次请求。

Spring MVC中的Model就是一个Map接口,对View层完全抽象。

Spring MVC中的View可以采用多种技术:JSP、Velocity 、Freemarker, 或者直接生成 XML, JSON, Atom或者其他类型的结果。Spring MVC将Model转换为了需要的视图格式


Spring 官方文档第十六章笔记(2):DispatcherServlet

DispatcherServlet的责任:接受请求,根据配置将请求转发给相应的Controller。因为
DispatcherServlet和Spring
IOC容器集成在一起,所以可以使用Spring IOC容器的功能。

DispatcherServlet处理请求的过程如下:图中的Front
Controller就是DispatcherServlet。








配置DispatcherServlet

DispatcherServlet就是一个J2EE servelt,需要在web.xm中就行配置:

?
所有以/example开头的请求,都会被名称为example的DispatcherServlet实例处理。


创建和配置[DispatcherServlet-name]-servlet.xml文件

Spring MVC中,容器使用bean来处理请求,这些bean定义在[DispatcherServlet-name]-servlet.xml文件中。

在Spring MVC中,每一个DispatcherServlet都拥有自己的WebApplicationContext,都继承自root WebApplicationContext。

继承图如下:





Spring MVC在初始化DispatcherServlet时,会读取[DispatcherServlet-name]-servlet.xml
文件,使用里面定义的bean覆盖继承来的同名的bean。

因为定义的DispatcherServlet的名称为example,所以创建example-servlet.xm文件。

DispatcherServlet使用特定的bean来process requests和render
the appropriate views。这些特定的bean是Spring MVC的一部分。

可以在[DispatcherServlet-name]-servlet.xml中指定使用哪些bean。Spring
MVC默认会配置一些bean,配置哪些bean在org.springframework.web.servlet包中的DispatcherServlet.properties指定。


DispatcherServlet处理请求的流程

1、WebApplicationContext将request封装为一个attribute,提供给controller和流程中其他元素使用。封装时的默认key为DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE。

2、The locale resolver is bound
to the request to enable elements in the process to resolve the locale to use when processing the request (rendering the view, preparing data, and so on). 如果不需要,可以不使用。(如何配置,才能不使用?)

3、The
theme resolver is bound to the request to let elements such as views determine which theme to use。如果不需要,可以不使用。(如何配置,才能不使用?)

4、如果配置了multipart
file resolver,Spring MVC会检查request是否为multiparts,如果是,request会被包装为MultipartHttpServletRequest。

5、查询是否有相应的handler。如果有,则执行handler相关的execution chain(preprocessors, postprocessors, and controllers)。

6、如果返回了Model,则render view。反之则不render。


客制化DispatcherServlet

可以通过在web.xml中使用servelet初始化参数,可以客制化DispatcherServlet。

使用<init-param>进行配置。可以配置的参数如下:

contextClass:实现了WebApplicationContext的类,用于创建Servlet关联的context,默认为XmlWebApplicationContext。

contextConfigLocation:指定配置文件存放路径。可以使用逗号分隔,用于指定多个context。如果在不同的context中定义了相同的bean,使用最后定义的那一个。

namespace:配置WebApplicationContext的namespace,默认为[ DispatcherServlet-name]-servlet
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: