`
herman_liu76
  • 浏览: 96789 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

WebApplicationContext、DispatcherServlet与web容器的ServletContext关系

 
阅读更多
    用spring框架开发web应用少不了理解WebApplicationContext、DispatcherServlet与web容器的ServletContext关系。

发现很多贴子,分析了代码,写了一大堆关系,最后还是让人看的云里雾里的。
我相信,一个产品的基本设计思路都是简单明了的,在这个指导下,才写出了复杂的代码。
分析代码最后应该回归到作者的原始思路,这样才能知其然,又知其所以然。


具体代码不贴了,总结如下:

1.web容器可以说就是Servlet容器:ServletContext,启动tomcat必然有这个。web.xml中配置有具体的Servlet,这些都会放在Servlet容器中。

2. dispatcherServlet只是一个具体的Servlet,必然装在Servlet容器里。当然Servlet容器可以装其它任何Servlet,不一定必须有dispatcherServlet。

3. WebApplicationContext是IOC容器,里面是装spring的依赖注入产生的各种bean组件的。可以说与上面的Servlet容器及具体的Servlet没有任何直接联系。通常的IOC容器本来就不仅是给web应用用的。

4. 但是web应用中具体的Servlet处理业务中一般都会使用IOC容器里的组件,所以两个容器之间要有直接引用关系。但是两个容器里的具体内容不应该有直接的引用关系。如同你跨部门协调的时候,总要找他们的领导,不会直接找具体的人员。

5. 所以WebApplicationContext容器会放在ServletContext容器中,这个过程是web.xml中的监听器,监听Servlet容器的启动过程中,先产生IOC容器,并放置在ServletContext里面的。

6. 如果是做其它java应用,可以使用其它IOC容器,比如ApplicationContext (ClasspathXmlApplicationContext,FileSystemXmlApplicationContext),可以在你启动自己应用的时候初始化这个IOC容器对象,并放在一个全局的地方引用着。其它代码就可以从IOC里取自己要的组件了。

引申:
    当我看红黑树的时候,也是一直看不进去,规则多,转换多。但是当我看了2-3树后,就比较理解了红黑树。

    后来进一步想,1972年鲁道夫·贝尔如何去思考发明红黑树呢?平衡二叉树为了平衡,就是平民选择领导的过程,从下到上的逐步平衡的过程,但又不是急于平衡而变动太大,类似2-3树的局部通过加一个节点来缓平衡提高性能。而不是先定好领导,再自上而下的安排座次的过程。社会的平衡也许也是这样。
0
1
分享到:
评论

相关推荐

    在web容器(WebApplicationContext)中获取spring中的bean

    Spring把Bean放在这个容器中,普通的类在需要的时候,直接用getBean()方法取出

    spring源代码解析

    //对WebApplicationContext来说,需要得到Web容器的ServletContext ServletContext getServletContext(); } public interface WebApplicationContext extends ApplicationContext { //这里定义的常量用于在...

    构建支持Ajax的轻量级J2EE框架

    本文是在Spring+Struts构建的轻量级框架基础上,通过让Buffalo用Spring放在ServletContext里面的 WebApplicationContext(ContextLoaderPlugIn实现把WebApplicationContext的实例放在了 ServletContext中来实现了一...

    spring-web-2.5.jar

    org.springframework.web.context.support.ServletContextResource.class org.springframework.web.context.support.ServletContextResourceLoader.class org.springframework.web.context.support....

    spring-web-5.3.6 jar包.rar

    这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...

    SpringMVC中的RootApplicationContext上下文和WebApplicationContext上下文,通过注解配置SpringMVC的完整解决方案

    注解配置SpringMVC原理简述1. 准备知识1.1 两个应用上下文1.2 ServletContext配置方法(Configuration Methods)1.3 运行时插拔1.4 SpringServletContainerInitializer1.4.1 AbstractContextLoaderInitializer1.4.2 ...

    spring-simple-web:使用 Spring Framework 的简单 Web (WAR) 项目

    这个简单的例子演示了在 web 应用程序中使用的 Spring 容器,即org.springframework.web.context.WebApplicationContext Web 应用程序使用 Spring Web 侦听器初始化,例如web.xml org.springframework.web.context...

    Spring获取webapplicationcontext,applicationcontext几种方法详解

    Spring获取webapplicationcontext,applicationcontext几种方法详解

    Spring.html

    WebApplicationContext:web环境使用的容器 注解 创建对象 Component:不分层的注解 Controller:web层 Service:service层 Repository:dao层 管理对象 注入 AutoWired Qualifier Resource ...

    Struts2+Spring3+MyBatis3完整实例

    - Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher.xml] - JSR-330 'javax.inject.Named' annotation found and supported for component scanning - JSR-330 'javax.inject....

    Spring面试题含答案.pdf

    9. 解释对象/关系映射集成模块 10. 解释 WEB 模块 12. Spring 配置文件 13. 什么是 Spring IOC 容器? 14. IOC 的优点是什么? 15. ApplicationContext 通常的实现是什么? 16. Bean 工厂和 Application contexts ...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar  这个...

    Spring中文帮助文档

    4.3.4. ServletContextResource 4.3.5. InputStreamResource 4.3.6. ByteArrayResource 4.4. ResourceLoader接口 4.5. ResourceLoaderAware 接口 4.6. 把Resource作为属性来配置 4.7. Application context 和...

    Spring API

    4.3.4. ServletContextResource 4.3.5. InputStreamResource 4.3.6. ByteArrayResource 4.4. ResourceLoader接口 4.5. ResourceLoaderAware 接口 4.6. 把Resource作为属性来配置 4.7. Application context 和...

    spring chm文档

    17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...

    Spring MVC之WebApplicationContext_动力节点Java学院整理

    主要介绍了Spring MVC之WebApplicationContext的相关资料,需要的朋友可以参考下

    开源框架 Spring Gossip

    Hibernate 宣告式交易管理 <br> Web 层 Spring 提供了 MVC Web 框架,您可以善用 IoC 容器在依赖注入上的好处,另一方面,Spring 也致力于与其它的 Web 框架的整合。 Spring MVC 入门 从一...

    Spring TestContext

    Spring TestContext Framework是spring-test模块中提供的一个测试框架,能够用于单元测试和集成测试。

    在action以外的地方获取dao

    ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(); 或者 ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(); 这是在action以外的地方拿...

    ssh(structs,spring,hibernate)框架中的上传下载

     LobHandler必须注入到Hibernate会话工厂sessionFactory中,因为sessionFactory负责产生与数据库交互的Session。LobHandler的配置如代码 5所示:  代码 5 Lob字段的处理句柄配置 1. 2. … 3. 4. class="org....

Global site tag (gtag.js) - Google Analytics