Spring的核心控制器DispatcherServlet

  • Post author:
  • Post category:其他



1.spring mvc在做功能分组时在web.xml文件中使用配置多个


DispatcherServlet形式,因为


DispatcherServlet


是一个Servlet,所以可以配置多个DispatcherServlet,只要把servlet的名字与映射区分开来即可,在容器启动时,每个


DispatcherServlet实例将其配置文件都加载到自己的应用程序上下文中,并引用根应用程序上下文作为它的父上下文,即继承。



这个上下文继承了








根上下文


中所有东西。


保存在


ServletContext中,key是”org.springframework.web.servlet.FrameworkServlet.CONTEXT”+Servlet名称。




当一个Request对象产生时,会把这个


WebApplicationContext上下文保存在Request对象中,key是DispatcherServlet.class.getName() + “.CONTEXT”。可以使用工具类取出上下文:RequestContextUtils.getWebApplicationContext(request);



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


2.


如果你使用了listener监听器来加载配置,即ContextLoaderListener,



Spring会创建一个全局的



WebApplicationContext上下文,称为




根上下文




,保存在





ServletContext中,key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE属性的值。可以使用工具类取出上下文:WebApplicationContextUtils.getWebApplicationContext(ServletContext);



3.dwr框架的前端控制器与其一样的道理配置即可。



版权声明:本文为longjie_happy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。