zoukankan      html  css  js  c++  java
  • Spring学习八

    1: Tomcat容器四个等级?

            Container, Engine,  Servlet容器, Context

    真正管理Servlet的容器是Context容器:一个context对应一个web工程。

    <Context path="/projectOne " docBase="D:projectsprojectOne"  source=“XXX”  reloadable="true" />

    2:Servet是如何被加载的?

             Context 容器才是真正运行 Servlet 的 Servlet 容器

      A: 创建 Servlet 对象:

        DispatcherServlet需要被实例化才能让Spring MVC 工作。

        如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化.

      B: 初始化 Servlet:  Servlet 的 init

        这样 Servlet 对象就初始化完成了。

    3:  Servlet体系结构:

      Servlet 主动关联的是三个类,分别是 ServletConfig、ServletRequest 和 ServletResponse。

      ServletConfig 是在 Servlet 初始化时就传给 Servlet 了,而后两个是在请求达到时调用 Servlet 时传递过来的。 

            ServletConfig 接口中声明的方法发现,这些方法都是为了获取这个 Servlet 的一些配置属性,而这些配置属性可能在 Servlet 运行时被用到。

      而 ServletContext 又是干什么的呢? Servlet 的运行模式是一个典型的“握手型的交互式”运行模式。所谓“握手型的交互式”就是两个模块为了交换数据通常都会准备一个交易场景,这个场景一直跟随个这个交易过程直到这个交易完成为止。这个交易场景的初始化是根据这次交易对象指定的参数来定制的,这些指定参数通常就会是一个配置类。所以对号入座,交易场景就由 ServletContext 来描述,而定制的参数集合就由 ServletConfig 来描述。而 ServletRequest 和 ServletResponse 就是要交互的具体对象了,它们通常都是作为运输工具来传递交互结果。

    Servlet 类时通常使用的都是 HttpServletRequest 和 HttpServletResponse,它们继承了 ServletRequest 和 ServletResponse

    4: DispatcherServlet  ContextLoaderListener 关系?

    ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;

    DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。

    对于contextConfigLocation参数,有2个地方可以配置:
    1)context-param 是全局性配置
    2)servlet下的init-param 是局部性配置
    若以上两处都设置了一个相同的bean配置文件路径,那么该文件内配置的bean会被初始化2次,所以一个配置文件只能选择一种配置位置
     
    项目中使用spring框架有2种方式:
    1)listener下的ContextLoaderListener 是一种引入方式,默认读取/WEB-INF/applicationContext.xml
    2)若是spring-web项目,DispatcherServlet 也是一种引入方式,默认读取/WEB-INF/${servlet-name}-servlet.xml
     

    ContextLoaderListener中创建ApplicationContext主要用于整个Web应用程序需要共享的一些组件,比如DAO,数据库的ConnectionFactory等。而由DispatcherServlet创建的ApplicationContext主要用于和该Servlet相关的一些组件,比如Controller、ViewResovler等。

    对于作用范围而言,在DispatcherServlet中可以引用由ContextLoaderListener所创建的ApplicationContext,而反过来不行。

    5:  Session与 Cookie 关系

    6: Servlet中的listener:

      整个 Tomcat 服务器中 Listener 使用的非常广泛,它是基于观察者模式设计的,Listener 的设计对开发 Servlet 应用程序提供了一种快捷的手段,能够方便的从另一个纵向维度控制程序和数据。目前 Servlet 中提供了 5 种两类事件的观察者接口,它们分别是:4 个 EventListeners 类型的,ServletContextAttributeListener、ServletRequestAttributeListener、ServletRequestListener、HttpSessionAttributeListener 和 2 个 LifecycleListeners 类型的,  

    ServletContextListener、HttpSessionListener

    它们基本上涵盖了整个 Servlet 生命周期中,你感兴趣的每种事件。这些 Listener 的实现类可以配置在 web.xml 中的 <listener> 标签中。当然也可以在应用程序中动态添加 Listener,需要注意的是 ServletContextListener 在容器启动之后就不能再添加新的,因为它所监听的事件已经不会再出现。掌握这些 Listener 的使用,能够让我们的程序设计的更加灵活。

              

           

  • 相关阅读:
    690. Employee Importance 员工重要性
    682. Baseball Game 棒球比赛计分
    680. Valid Palindrome II 有效的回文2
    553. Optimal Division 最佳分割
    服务器oracle数据库定时备份
    数据类型和抽象数据类型
    静态链表和动态链表的区别:
    it网站
    java 移动开发获取多级下拉框json数据的类和mobile-select-area插件
    redis持久化之aof篇
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7586847.html
Copyright © 2011-2022 走看看