Java ADF 运行原理剖析(1)

首先我们直奔web.xml,打开可以看到

<servlet>

        <servlet-name>Faces Servlet</servlet-name>

        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

        <load-on-startup>1</load-on-startup>

   </servlet>

   工程启动时,FacesServlet将被装载,用来处理JSF请求。

   Web.xml还为我们配置了监听器

<listener>

        <listener-class>                                          

            com.esri.adf.web.util.ADFServletContextListener

        </listener-class>

   </listener>

ADFServletContextListener 是整个server工程启动中的核心,实现了两个接口ServletContextListener和HttpSessionListener

ServletContextListener负责监听整个工程的ServletContext的变化,HttpSessionListener负责监听web当前会话的变化,当有一个新用户发送请求时,应用会为这次请求建立一个新会话。这时ADFServletContextListener 的sessionCreated(HttpSessionEvent event)方法会被执行。但是WebSession却不是在这个时候被创建的,那么什么时候WebSession会被创建呢,在web.xml中可以看到下面的配置信息:

  <filter>

        <filter-name>ADFFilter</filter-name>

        <filter-class>com.esri.adf.web.util.ADFFilter</filter-class>

   </filter>

每当用户请求时都会经过ADFFilter过滤ADFFilter会截获httpsession中保存的websession对象,如果为空则创建WebSession。

Java ADF 运行原理剖析(1)_第1张图片

      通过上面三段配置文件,现在来梳理一下工作流程,当web启动时,首先装载 ADFServletContextListener,ADFServletContextListener创建WebApplication ,当用户请求时,ADFFilter截获请求,创建WebSession,WebSession中包含了该会话所用的WebContext。那么这个经过一番周折,终于得到了WebContext,这个WebContext正式我们开发工作的核心。

你可能感兴趣的:(java,Web,xml,servlet,JSF)