`

Servlet,Listener和Filter如何获取ServletContext(既application)

阅读更多

 

 

Listener的项目上下文(既ServletContext既application)是从event中获取的,event是Listener和容器之间交流的中间人

 

  


public interface ServletContextListener extends EventListener {
	/**
	 ** Notification that the web application initialization
	 ** process is starting.
	 ** All ServletContextListeners are notified of context
	 ** initialization before any filter or servlet in the web
	 ** application is initialized.
	 */

    public void contextInitialized ( ServletContextEvent sce );



--------------------------------------------

 ServletContext servletContext;


   public void contextInitialized(ServletContextEvent sce)
   {
      servletContext = sce.getServletContext();
   }


 

 

 

 

而Filter的项目上下文(既ServletContext既application)是从FilterConfig中获取的,FilterConfig是Filter和容器之间交流的中间人

 

  

public interface Filter {

	/** 
	* Called by the web container to indicate to a filter that it is being placed into
	* service. The servlet container calls the init method exactly once after instantiating the
	* filter. The init method must complete successfully before the filter is asked to do any
	* filtering work. <br><br>

     	* The web container cannot place the filter into service if the init method either<br>
        * 1.Throws a ServletException <br>
        * 2.Does not return within a time period defined by the web container 
	*/
	public void init(FilterConfig filterConfig) throws ServletException;
	


------------------------
filterConfig.getServletContext()

 

 

而Servlet的项目上下文(既ServletContext既application)是从ServletConfig中获取的,ServletConfig是Servlet和容器之间交流的中间人

 

public interface Servlet {

    /**
     * Called by the servlet container to indicate to a servlet that the 
     * servlet is being placed into service.
     *
     * <p>The servlet container calls the <code>init</code>
     * method exactly once after instantiating the servlet.
     * The <code>init</code> method must complete successfully
     * before the servlet can receive any requests.
     *
     * <p>The servlet container cannot place the servlet into service
     * if the <code>init</code> method
     * <ol>
     * <li>Throws a <code>ServletException</code>
     * <li>Does not return within a time period defined by the Web server
     * </ol>
     *
     *
     * @param config			a <code>ServletConfig</code> object 
     *					containing the servlet's
     * 					configuration and initialization parameters
     *
     * @exception ServletException 	if an exception has occurred that
     *					interferes with the servlet's normal
     *					operation
     *
     * @see 				UnavailableException
     * @see 				#getServletConfig
     *
     */

    public void init(ServletConfig config) throws ServletException;
    
---------------------------------------

 getServletConfig().getServletContext()
 

 

 

我们的应用程序组件只能被动的遵守一定的规则,和容器打交道,和其他组件通信,也必须借助于容器的力量。这里面其实已经有一点控制反转的味道,既然是组件生活在容器中,就必须被动的接受容器喂给他吃的东西,不能(要)自己创造(new)。

 

Spring之所以称为容器(号称轻量级),就是因为被他控制的组件,被动的吃他喂过来的东西,不能(要)自己创造(new)。

分享到:
评论
2 楼 gary_bu 2014-10-13  
感谢分享,有用
1 楼 mutex_js 2011-03-03  
<div class="quote_title">congdepeng 写道</div>
<div class="quote_div">
<p> </p>
<p> </p>
<p>Listener的项目上下文(既ServletContext既application)是从event中获取的,event是Listener和容器之间交流的中间人</p>
<p> </p>
<pre name="code" class="java"> 


public interface ServletContextListener extends EventListener {
/**
** Notification that the web application initialization
** process is starting.
** All ServletContextListeners are notified of context
** initialization before any filter or servlet in the web
** application is initialized.
*/

    public void contextInitialized ( ServletContextEvent sce );



--------------------------------------------

ServletContext servletContext;


   public void contextInitialized(ServletContextEvent sce)
   {
      servletContext = sce.getServletContext();
   }


</pre>
 
<p> </p>
<p> </p>
<p> </p>
<p>而Filter的项目上下文(既ServletContext既application)是从FilterConfig中获取的,FilterConfig是Filter和容器之间交流的中间人</p>
<p> </p>
<pre name="code" class="java"> 

public interface Filter {

/**
* Called by the web container to indicate to a filter that it is being placed into
* service. The servlet container calls the init method exactly once after instantiating the
* filter. The init method must complete successfully before the filter is asked to do any
* filtering work. &lt;br&gt;&lt;br&gt;

     * The web container cannot place the filter into service if the init method either&lt;br&gt;
        * 1.Throws a ServletException &lt;br&gt;
        * 2.Does not return within a time period defined by the web container
*/
public void init(FilterConfig filterConfig) throws ServletException;



------------------------
filterConfig.getServletContext()</pre>
<p> </p>
<p> </p>
<p>而Servlet的项目上下文(既ServletContext既application)是从ServletConfig中获取的,ServletConfig是Servlet和容器之间交流的中间人</p>
<p> </p>
<pre name="code" class="java">public interface Servlet {

    /**
     * Called by the servlet container to indicate to a servlet that the
     * servlet is being placed into service.
     *
     * &lt;p&gt;The servlet container calls the &lt;code&gt;init&lt;/code&gt;
     * method exactly once after instantiating the servlet.
     * The &lt;code&gt;init&lt;/code&gt; method must complete successfully
     * before the servlet can receive any requests.
     *
     * &lt;p&gt;The servlet container cannot place the servlet into service
     * if the &lt;code&gt;init&lt;/code&gt; method
     * &lt;ol&gt;
     * &lt;li&gt;Throws a &lt;code&gt;ServletException&lt;/code&gt;
     * &lt;li&gt;Does not return within a time period defined by the Web server
     * &lt;/ol&gt;
     *
     *
     * @param config a &lt;code&gt;ServletConfig&lt;/code&gt; object
     * containing the servlet's
     * configuration and initialization parameters
     *
     * @exception ServletException if an exception has occurred that
     * interferes with the servlet's normal
     * operation
     *
     * @see UnavailableException
     * @see #getServletConfig
     *
     */

    public void init(ServletConfig config) throws ServletException;
   
---------------------------------------

getServletConfig().getServletContext()
</pre>
 
<p> </p>
<p> </p>
<p>我们的应用程序组件只能被动的遵守一定的规则,和容器打交道,和其他组件通信,也必须借助于容器的力量。这里面其实已经有一点控制反转的味道,既然是组件生活在容器中,就必须被动的接受容器喂给他吃的东西,不能(要)自己创造(new)。</p>
<p> </p>
<p>Spring之所以称为容器(号称轻量级),就是因为被他控制的组件,被动的吃他喂过来的东西,不能(要)自己创造(new)。</p>
</div>
<p> </p>

相关推荐

    【免费】servlet和jsp学习指南-高清版

    4. **Servlet生命周期**:理解Servlet的加载、初始化、服务和销毁过程,以及如何使用ServletConfig和ServletContext。 5. **会话管理**:通过HttpSession对象实现用户会话跟踪,处理会话超时和会话失效问题。 6. *...

    servlet2.4doc

    A filter configuration object used by a servlet container to pass information to a filter during initialization. flushBuffer() - Method in interface javax.servlet.ServletResponse Forces any content ...

    servlet和jsp学习指南

    因此,这份"Servlet和JSP学习指南"不仅涵盖了基础内容,也可能包含了一些进阶话题,如过滤器(Filter)和监听器(Listener)的使用,以及如何结合其他技术如EJB或JPA来实现更复杂的应用。 在学习过程中,通过实践...

    Servlet3.0特性详解

    在Servlet3.0中,我们可以使用注解(@WebServlet、@WebFilter、@WebListener)来替代web.xml中的XML配置,使得部署更简洁。例如,`@WebServlet("/example")`可以直接在Servlet类上声明URL映射。 2. **异步处理**:...

    JSP Servlet 学习笔记源码

    在JSP中,Servlet可以通过内置对象实现后端逻辑,如`request`、`response`对象用于获取和设置请求参数以及发送响应,`session`对象用于维护用户会话,`application`对象用于在整个应用范围内的数据共享。...

    JSP和Servlet工程师培训2

    2. **Servlet API**:主要包括`HttpServletRequest`和`HttpServletResponse`接口,分别用于获取请求信息和构建响应。`ServletConfig`和`ServletContext`提供了配置和全局信息访问。 3. **Servlet的部署和映射**:...

    web监听器代码--监听servlet

    4. `javax.servlet.ServletContextAttributeListener`: 监听ServletContext中属性的增加、删除和替换事件。 5. `javax.servlet.ServletRequestListener`: 用于监听ServletRequest的生命周期,Java标准API未直接提供...

    JSP和Servlet工程师培训13

    **API(Application Programming Interface)技术** 在JSP和Servlet中扮演着关键角色,提供了丰富的类和方法供开发者使用。例如: 1. **HttpServletRequest和HttpServletResponse**:HTTP请求和响应的Java表示,...

    web.xml配置[归纳].pdf

    `ApplicationListener`的实例可用于保存`ServletContext`的引用,以便在应用的生命周期中访问或操作。 6. **DWR (Direct Web Remoting) 配置** DWR是一个用于实现Ajax的框架,配置如下: ```xml &lt;servlet&gt; ...

    Jsp_Servlet学习课堂笔记

    6. **监听器(Listener)**:可以监听特定事件,如会话创建、销毁,或者ServletContext的初始化和销毁,实现特定的功能。 **JavaBean**是符合JavaBeans规范的Java类,通常作为可重用的组件使用,它们可以在JSP和...

    Servilet概述

    Servlet 程序由 Servlet、Filter 和 Listener 组成。监听器用来监听 Servlet 容器上下文。监听器通常分三类:基于 Servlet 上下文的 ServletContex 监听、基于会话的 HttpSession 监听和基于请求的 ServletRequest ...

    JSP配置文件解释

    `web.xml`位于Web应用的`WEB-INF`目录下,是应用的元数据中心,包含了如Servlet、Filter、Listener等组件的配置信息。它告诉服务器如何处理HTTP请求以及如何初始化和管理Web组件。 ### 2. Servlet配置 在`web.xml`...

    Servlet与JSP核心编程第二版9

    3. **最佳实践**:为了提高Web应用程序的性能和安全性,书中还介绍了一些最佳实践,比如使用过滤器(Filter)进行统一的编码设置、使用监听器(Listener)来管理应用程序的生命周期等。 通过上述内容的学习,读者不仅...

    Core Servlets and JavaServer Pages 2nd

    还有ServletConfig和ServletContext对象,用于获取Servlet配置信息和全局共享数据。 4. **JSP基础**:JSP是一种视图技术,它将HTML代码与Java代码分离,简化了动态网页的编写。JSP页面由HTML、CSS、JavaScript以及...

    STRUTS:listener监听器

    &lt;listener-class&gt;org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter&lt;/listener-class&gt; &lt;/listener&gt; &lt;!-- 配置WebContextLoaderListener --&gt; &lt;listener&gt; &lt;listener-class&gt;org.spring...

    创建简单springboot框架

    通过本教程,读者将学会如何整合Servlet、Filter、Listener等组件,以及如何处理静态资源和文件上传等问题。 #### 二、整合Servlet ##### 方式一:通过注解扫描完成Servlet组件的注册 **1.1 编写Servlet** 首先...

    Servlet与JSP核心编程(第2版).pdf

    - **未来趋势**:随着云计算和微服务架构的发展,传统的Servlet/JSP应用可能需要结合新的技术和框架进行优化升级。 --- 以上是根据给定文件“Servlet与JSP核心编程(第2版).pdf”的标题、描述、标签以及部分内容...

    Murach's Java Servlets and JSP 2nd Edition 源代码

    - 部署描述符定义了应用的配置信息,包括Servlet、Filter、Listener的声明和映射。 8. **实战经验**: - 通过书中提供的源代码,你可以模拟实际项目,构建动态网站,如用户登录、注册、数据展示等。 - 学习如何...

    selvetAPI(中文)

    Filter是Servlet API中另一个重要的组件,允许在请求到达Servlet之前或之后对其进行拦截和处理。例如,可以使用过滤器实现登录验证、GZIP压缩、字符编码转换等功能。 9. **监听器Listener** 监听器是实现Java EE...

Global site tag (gtag.js) - Google Analytics