Spring 官方文档第十六章笔记(2):DispatcherServlet
2016-04-01 18:04
579 查看
http://my.oschina.net/pkpk1234/blog/60428
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转换为了需要的视图格式
IOC容器集成在一起,所以可以使用Spring IOC容器的功能。
DispatcherServlet处理请求的过程如下:图中的Front
Controller就是DispatcherServlet。
![](http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/images/mvc.png)
DispatcherServlet就是一个J2EE servelt,需要在web.xm中就行配置:
?
所有以/example开头的请求,都会被名称为example的DispatcherServlet实例处理。
Spring MVC中,容器使用bean来处理请求,这些bean定义在[DispatcherServlet-name]-servlet.xml文件中。
在Spring MVC中,每一个DispatcherServlet都拥有自己的WebApplicationContext,都继承自root WebApplicationContext。
继承图如下:
![](http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/images/mvc-contexts.gif)
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指定。
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。
可以通过在web.xml中使用servelet初始化参数,可以客制化DispatcherServlet。
使用<init-param>进行配置。可以配置的参数如下:
contextClass:实现了WebApplicationContext的类,用于创建Servlet关联的context,默认为XmlWebApplicationContext。
contextConfigLocation:指定配置文件存放路径。可以使用逗号分隔,用于指定多个context。如果在不同的context中定义了相同的bean,使用最后定义的那一个。
namespace:配置WebApplicationContext的namespace,默认为[ DispatcherServlet-name]-servlet
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。
![](http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/images/mvc.png)
配置DispatcherServlet
DispatcherServlet就是一个J2EE servelt,需要在web.xm中就行配置:?
创建和配置[DispatcherServlet-name]-servlet.xml文件
Spring MVC中,容器使用bean来处理请求,这些bean定义在[DispatcherServlet-name]-servlet.xml文件中。在Spring MVC中,每一个DispatcherServlet都拥有自己的WebApplicationContext,都继承自root WebApplicationContext。
继承图如下:
![](http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/images/mvc-contexts.gif)
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
相关文章推荐
- Java中的堆、栈和常量池
- Java集合类之ArrayList
- Nutch编译及集成eclipse+mysql开发环境的部署总结
- java反射的一些应用,望各大神给予指正
- spring mvc获取请求的参数的几种方式
- java学习第五天
- Java高级之1.5之后atomic包
- Java入门到精通——调错篇之Eclipse No Java virtual machine was found after searching the following locations
- [Java学习] Expression Add Operators 添加运算符
- 离线在Eclipse上安装ADT
- 建立一个简单的SpringMvc程序
- 用Condition条件变量实现生产者消费者模式
- JAVA的ReentrantLock与synchronized 的区别
- 【JAVA开发之IO流1-6】IO流之File类的用法
- Java 技术新手入门-Java 初学者的入门指南
- java基础知识总结(一)
- Struts2方法调用的三种方式
- shiro 与spring集成
- C#调用java的jar文件的方法(转)
- eclipse构建maven的web项目