spring web.xml之DispatcherServlet初总结

来源:互联网 发布:刘诗诗演技知乎 编辑:程序博客网 时间:2024/05/03 23:11

和其它web框架一样,Spring的web框架是一个请求驱动的web框架,其设计围绕一个中心的servlet进行,它能将请求分发给控制器,并提供其它功能帮助web应用开发。然而,Spring的DispatcherServlet所做的不仅仅是这些,它和Spring的IoC容器完全集成在一起,从而允许你使用Spring的其它功能。

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结尾的请求都会由名为exampleDispatcherServlet处理。这只是配置Spring Web MVC的第一步。接下来需要配置DispatcherServlet本身和Spring Web MVC 框架用到的其他的bean。

Spring中的ApplicationContext可以被限制在不同的作用域(scope)中。在web MVC框架中,每个DispatcherServlet有它自己的WebApplicationContext,这个context继承了根 WebApplicationContext的所有bean定义。这些继承的bean也可以在每个serlvet自己的所属的域中被覆盖(override),覆盖后的bean可以被设置成只有这个servlet实例自己才可以使用的属性。

DispatcherServlet的初始化过程中,Spring会在web应用的WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml的配置文件,生成文件中定义的bean。这些bean会覆盖在全局范围(global cope)中定义的同名的bean。

下面这个例子展示了在web.xmlDispatcherServlet的配置:

<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的初始化参数来更改。

<servlet><servlet-name>springMvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:resources/spring/ApplicationContext-mvc.xml</param-value><!-- 相当于默认的xxx-servlet.xml,不过这里手动修改为ApplicationContext-mvc.xml --></init-param><load-on-startup>1</load-on-startup><!-- 启动时就加载这个servlet --></servlet><servlet-mapping><servlet-name>springMvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>



0 0
原创粉丝点击