DispatcherServlet的用途
DispatcherServlet实际上是一个Servlet(它从HttpServlet继承而来)。和其它Servlet一样,DispatcherServlet定义在web应用的web.xml文件里。DispatcherServlet处理的请求必须在同一个web.xml文件里使用url-mapping定义映射。下面的例子演示了如何配置DispatcherServlet。
<web-app>
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
</web-app>
在上面的例子里,所有以.form结尾的请求都会由名为example的DispatcherServlet处理。这只是配置Spring Web MVC的第一步。接下来需要配置DispatcherServlet本身和Spring Web MVC 框架用到的其他的bean。
正如在第 3.8 节 “ApplicationContext”中所描述的,Spring中的ApplicationContext可以被限制在不同的作用域(scope)中。在web MVC框架中,每个DispatcherServlet有它自己的WebApplicationContext,这个context继承了根 WebApplicationContext的所有bean定义。这些继承的bean也可以在每个serlvet自己的所属的域中被覆盖(override),覆盖后的bean可以被设置成只有这个servlet实例自己才可以使用的属性。
Spring Web MVC中的Context体系
在DispatcherServlet的初始化过程中,Spring会在web应用的WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml的配置文件,生成文件中定义的bean。这些bean会覆盖在全局范围(global cope)中定义的同名的bean。
下面这个例子展示了在web.xml中DispatcherServlet的配置:
<web-app>
...
<servlet>
<servlet-name>golfing</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>golfing</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
要进行如上的servlet配置,你还需要配置/WEB-INF/golfing-servlet.xml这样一个文件。golfing-servlet.xml这个文件应该声明你在Spring Web MVC 框架中需要的bean。 这个文件的路径也可以通过web.xml中servlet的初始化参数来更改。(详情见下面的例子。)
WebApplicationContext仅仅是一个拥有web应用必要功能的普通ApplicationContext。它与一个标准的ApplicationContext的不同之处在于,它能够解析theme(参考第 13.7 节 “使用主题”),并且它知道自己与哪个servlet相关联(通过ServletContext)。WebApplicationContext被绑定在ServletContext上,当你需要的时候,可以使用RequestContextUtils提供的静态方法找到WebApplicationContext。
Spring的DispatcherServlet有一组特殊的bean,用来处理请求和渲染相应的视图。这些bean包含在Spring的框架里,可以在WebApplicationContext中配置,配置方式与配置其它bean相同。这些bean中的每一个都在下文作详细描述。此刻读者只需知道它们的存在,便继续对DispatcherServlet进行讨论。对大多数bean,Spring都提供了合理的缺省值,所以在开始阶段,你不必担心如何对其进行配置。
DispatcherServlet的用途相关推荐
- Spring MVC的DispatcherServlet – Java开发人员应该知道的10件事
如果您使用过Spring MVC,那么您应该知道什么是DispatcherServlet? 它实际上是Spring MVC的心脏,确切地说是MVC设计模式或控制器的C语言. 应该由Spring MVC ...
- r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
r中rep 在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repositor ...
- 使用Spring开发Java RESTful Web服务的7个理由
REST现在已成为开发Web服务的标准方法,涉及Java时,可以使用许多框架和库,例如JAX-RS,Restlet,Jersey,RESTEasy,Apache CFX等,但是我鼓励Java开发人员使 ...
- Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...
- Spring MVC中@RequestParam和@PathVariable批注之间的区别?
Spring MVC框架是在Java世界中开发Web应用程序最流行的框架之一,它还提供了一些有用的注释,可以从传入的请求中提取数据并将请求映射到控制器,例如@ RequestMapping,@ Req ...
- Java深入 - servlet和Spring的DispatcherServlet详解
Servlet是什么 1. Servlet是服务器端运行的一个程序,是一个被编译好的Java类.它不是框架等. 2. Web容器的启动,需要依赖Servlet.当web服务器开始执行时,servlet ...
- Java的反射作用_浅析Java 反射机制的用途和缺点
反射的用途 Uses of Reflection Reflection is commonly used by programs which require the ability to examin ...
- typedef的四个用途和两大陷阱
typedef的四个用途和两个陷阱 --------------------------------- 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: c ...
- android怎么监听多点触摸_什么是多点触控技术,有哪些用途
自从乔布斯将触控技术用于苹果手机上,很多的手机厂商纷纷效仿,触控技术几乎成为手机的"标配".其实,触控技术早就存在,只是一直未能大面积用于各种设备中,本文将带您认识神奇的触控技术. ...
最新文章
- Oracle 数据库名、实例名、服务名详解
- 二、 elasticsearch安装和概念
- 软件业的作业示意流程图
- ssh linux 配置文件详解,Linux ssh服务常用配置的详细描述及建议配置
- (亲测)vue-cli项目添加骨架屏多种方式,自动生成骨架屏
- 信息学奥赛一本通(1399:甲流病人初筛)
- Shopify:删除版权信息 Powered by Shopify 在网站底部
- Segment Tree Beats 区间最值问题
- 微型计算机原理第二版学习辅导,微型计算机原理及应用学习辅导.pdf
- 1000道Python题库系列分享八(29道)
- stm32中断优先级_浅谈STM32串口USART1的使用
- Easyui datagrid加载本地Json数据
- SQL Server中使用索引性能的比较
- 时间复杂度和空间复杂度详解
- python+xlrd做数字组合
- 基于winform的GIS离线地图
- 二次开发是什么意思_为什么说初学者都需要一台云服务器
- rcs仿真matlab,雷达截面积(Radar Cross Section,RCS)(MATLAB部分仿真+Code)
- 360安全卫士直达 卸载软件的位置
- 万年历编写(从公元元年算起 考虑儒略历与格里历的变换)
热门文章
- MyBatis处理多参数及原理分析
- OpenCASCADE:Foundation Classes使用句柄编程
- wxWidgets:wxPropertyGridManager类用法
- wxWidgets:wxAboutDialogInfo类用法
- boost::spirit模块实现一个复数微生成器的测试程序
- boost::process::throw_on_error相关的测试程序
- boost::math::quadrature::trapezoidal用法的测试程序
- boost::gil::detail::convolve_2d用法的测试程序
- boost::fusion::nil用法的测试程序
- DCMTK:DcmDecimalString类的测试程序