本文共 3478 字,大约阅读时间需要 11 分钟。
1、DispatcherServlet说明
Spring的web MVC框架,就像许多其他webMVC框架,request-driven,围绕一个中心分派请求的Servlet控制器设计,并提供其他功能,促进了web应用程序的开发。然而,Spring MVC中的的DispatcherServlet
不仅仅是只包含那些.它完全集成Spring IoC容器,因此允许你使用Spring所包含的特性。
2、Spring MVC处理流程
Spring Web MVC DispatcherServlet
的请求处理流程见下图。懂模式的读者会认识到DispatcherServlet
是一个“前端控制器”的表达等式的设计模式(这个模式是Spring Web MVC和其他许多领先的Web框架共有的)。
3、声明式DispatcherServlet
DispatcherServlet
实际是一个Servlet
(从继承基类HttpServlet
),并可以声明在web.xml
的web application。你需要映射你想DispatcherServlet
处理request,通过同一个的web.xml
文件的URL映射。这是标准Java EE Servlet配置;下面的例子显示了一个DispatcherServlet
声明和映射:
example org.springframework.web.servlet.DispatcherServlet 1 example /example/*
4、编程式DispatcherServlet
在前面的示例中,所有请求以/example
开始命名的例子将由DispatcherServlet
实例控制。在Servlet 3.0 +环境中,你也可以选择通过编程方式配置Servlet容器。下面通过编程式实现与上面web.xml
效果一样的例子:
public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet()); registration.setLoadOnStartup(1); registration.addMapping("/example/*"); }}
WebApplicationInitializer
是Spring MVC提供的是一个接口,用来确保您的基于代码配置能够被自动检测并用来自动初始化Servlet 3容器。实现WebApplicationInitializer的抽象类AbstractDispatcherServletInitializer
使得更容易注册DispatcherServlet
,只需指定它的servlet映射。更多细节请参见基于代码的Servlet容器初始化。
以上仅仅是第一步设置Spring Web MVC。你现在需要配置Spring Web MVC框架所使用的各种bean(超过DispatcherServlet
本身)。
DispatcherServlet
有自己的WebApplicationContext
,并且继承定义已经配置在root WebApplicationContext
的所有bean。这些继承的beans可以servlet-specific范围中被覆盖,你可以在给定Servlet实例定义新的scope-specific beans。下图就是典型的Spring Web MVC中的上下文层次结构: 在初始化DispatcherServlet
,Spring MVC会在web应用程序的WEB - INF
目录查找一个名为[servlet-name]-servlet.xml的文件。并创建定义的bean,覆盖定义在全局作用域具有相同名称的beans。
考虑以下DispatcherServlet
Servlet配置(在web.xml
文件):
golfing org.springframework.web.servlet.DispatcherServlet 1 golfing /golfing/*
与上面的Servlet配置对比,你会需要一个文件名为/WEB-INF/ golfing-servlet.xml
应用程序中,该文件将包含所有Spring Web MVC特殊组件(bean)。你可以改变这个配置文件的确切位置通过Servlet初始化参数(详情见下文)。如果你的命名方式不是按照[servlet-name]-servlet.xml来的,你同样可以使用contextConfigLocation
来指定你的配置文件。
dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/dispatcher-servlet.xml 1 dispatcher /
5、配置其它Spring Beans
一个web application中还包含MVC三层对应的bean可以通过配置contextConfigLocation来引用Root WebApplicationContext.其中结构如下图所示:
这可以通过设置一个空的contextConfigLocation来配置servlet init参数,如下所示:
dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/o2o-servlet.xml 1 dispatcher /
WebApplicationContext
是ApplicationContext
的扩展,其中有一些web应用程序所必需的额外功能。与一个普通的ApplicationContext
的不同之处在于,它能够解析themes(主题),并且它知道与哪个Servlet关联起来(通过与ServletContext
关联)。 WebApplicationContext
与ServletContext
绑定,如果你需要访问WebApplicationContext
可以通过使用RequestContextUtils
类中的静态方法你可以查找它。
因为水平有限,翻译不足之处还望见谅。
原文地址:转载地址:https://carlzone.blog.csdn.net/article/details/51834350 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!