`

ServletContext

阅读更多

作用:ServletContext可以实现一个web应用程序中所用servlet共享数据。

生命周期:ServletContext随着第一个Servlet的创建而创建,随着服务器的停止而销毁。

 

ServletContext接口表示一个web应用的上下文。可以想象成一个web应用的共享数据区域,该区域保存整个web共享数据。

当一个web应用启动的时候,就会创建该ServletContext接口的实现类。

 

与HttpSession以及HttpServletRequest的区别?

 















 

 

参考:

Servlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。可以把ServletContext看成是一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,它提供了4个读取或设置共享数据的方法。

1)setAttribute(String name,Object object):把一个对象和一个属性名绑定,将这个对象存储在ServletContext中;

2)getAttribute(String name):根据指定的属性名返回所绑定的对象;

3)removeAttribute(String name):根据给定的属性名从ServletContext中删除相应的操作;

4)getAttributeNames():返回Enumeration对象,它包含了存储在ServletContext对象中的所有属性名。

下面通过一个例子,说明ServletContext和Web应用的关系。

package mypack; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 

public class CounterServlet extends HttpServlet 
{ 
public static final String CONTENT_TYPE="text/html;charset=GB2312"; 

public void init(ServletConfig config)throws ServletException{ 
super.init(config); 
} 

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 
doPost(request,response); 
} 

public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 
//获得ServletContext的引用 
ServletContext context=getServletContext(); 
//从ServletContext读取count属性 
Integer count=(Integer)context.getAttribute("count"); 

//如果count属性还没有设置,那么创建count属性,初始值为0 
//one and add it to the ServletContext 
if(count==null){ 
count=new Integer(0); 
context.setAttribute("count",new Integer(0)); 
} 

response.setContentType(CONTENT_TYPE); 
PrintWriter out=response.getWriter(); 
out.println("<HTML>"); 
out.println("<HEAD><TITLE>点击计数</TITLE></HEAD>"); 
out.println("<BODY>"); 
//输出当前的count属性值 
out.println("<P>当前计数是:"+count+"</P>"); 
out.println("</BODY></HTML>"); 

//创建新的count对象,其值增1 
count=new Integer(count.intValue()+1); 
//将新的count属性存储到ServletContent中 
context.setAttribute("count",count); 
} 
public void destroy(){ 
} 
} 
 

在web.xml中为CounterServlet类加上<servlet>和<servlet-mapping>元素
<servlet> 
<servlet-name>CounterServlet</servlet-name> 
<servlet-class>mypack.CounterServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>CounterServlet</servlet-name> 
<url-pattern>/counter</url-pattern> 
</servlet-mapping> 
 


测试通过。

1)刷新页面,count加1;

2)关闭浏览器,再打开新浏览器还是在原来基础上加1(即便由IE换成Opera);

3)如果重启Tomcat服务器,再访问CounterServlet,则count又初始化为0;

4)复制helloapp应用,改为helloapp1,再发布helloapp1,通过不同的浏览器窗口分别访问helloapp及helloapp1中的CounterServlet,发现这两个Web应用拥有各自独立的count属性。

即ServletContext对象只在Web应用被关闭时才被销毁;不同的Web应用,ServletContext各自独立存在。

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    servlet中的ServletContext的使用

    在Servlet的世界里,`ServletContext`扮演着至关重要的角色。它是一个全局的、跨.servlet共享的上下文对象,为整个Web应用提供了一个共享数据和资源的平台。在这个实例中,我们将深入探讨`ServletContext`如何用于...

    ServletContext读取web应用中的资源文件.doc

    ServletContext 读取 web 应用中的资源文件 在 Web 应用程序中,我们经常需要读取某些资源文件,如配置文件、图片等等。为了实现这一点,ServletContext 接口提供了一些方法来读取 web 应用中的资源文件,这些方法...

    ServletContext与ServletConfig关系

    ServletConfig 与 ServletContext 的关系 在 Servlet 编程中,ServletConfig 和 ServletContext 两个对象经常被混淆,然而它们有着截然不同的作用域和用途。 首先, lets 看看 ServletConfig 对象。ServletConfig ...

    servletContext的实例代码

    在Java Web开发中,`ServletContext`是一个至关重要的接口,它代表了整个Web应用程序的上下文。这个上下文包含了关于Web应用的所有信息,如全局的初始化参数、资源、以及与所有Servlet共享的对象。在这个实例中,...

    35、servlet--servletContext

    `servletContext`是Servlet API中的一个关键概念,代表了整个Web应用程序的上下文。在这个上下文中,Servlet可以共享信息,如全局属性、监听器等。下面将详细讨论`servletContext`及其在实际开发中的应用。 一、...

    Spring-for -servletcontext1.0.jar

    Ssh获取ServletContext 只需要更改struts-config action中的type就可以了ru :type="com.uo.spring.SpringDelegatingActionProxy" 大家有什么疑问可以直接去我的blog查看...《[正解]Ssh获取ServletContext》

    超全面javaweb教程28天第9天 14 获取ServletContext对象

    超全面javaweb教程28天第9天_14_获取ServletContext对象

    ServletContext与application异同.docx

    【ServletContext与Application的理解】 在Java Web开发中,`ServletContext`和`Application`是两个非常重要的概念,它们在一定程度上有着密切的联系。`ServletContext`是Servlet API中的一个接口,它代表了一个Web...

    quartz servletcontext配置资料

    在Servlet环境下,特别是在使用Spring MVC等框架时,Quartz与ServletContext的结合配置显得尤为重要,因为这能让我们更好地管理和监控后台定时任务。 ### Quartz简介 Quartz 提供了一个完全线程化的事件调度器,...

    ServletContext介绍及用法.docx

    【ServletContext详解】 Servlet上下文(ServletContext)是Java Web开发中的一个重要概念,它是服务器为每个Web应用程序创建的一个全局共享对象。这个对象在整个Web应用中独一无二,所有的Servlet都可以访问它,...

    使用ServletContext对象完成网页计数器

    `ServletContext`对象是Servlet容器(如Tomcat、Jetty等)为每个Web应用程序创建的一个全局对象,它在整个Web应用的生命周期内都存在,为所有Servlet提供了一个共享数据和资源的平台。在本例中,我们探讨的是如何...

    ServletConfig与ServletContext.docx

    ServletConfig和ServletContext是Java Servlet API中的两个重要接口,它们在Web应用程序中扮演着关键角色,主要负责管理和传递初始化参数以及实现应用级别的通信。 ServletConfig对象主要用于装载Servlet的初始化...

    ServletContext与ServletConfig的深度分析

    ### ServletContext与ServletConfig的深度分析 #### 一、概述 在Java Web开发中,`ServletContext`和`ServletConfig`是非常重要的两个接口,它们分别代表了应用级别的共享环境和单个Servlet的配置信息。理解这两个...

    访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象.rar

    标题中的“访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象”指的是在Java Web开发中,如何操作四个重要的请求处理对象:HttpServletRequest(Request)、HttpSession(Session)、...

    ServletContext接口

    ### ServletContext接口详解 在Java Web开发中,`ServletContext`接口扮演着至关重要的角色,它提供了应用程序上下文的全局视图,使得多个Servlet之间能够共享数据,并且为Servlet容器提供了访问资源、初始化参数...

    servletcontext详解

    ### ServletContext详解 #### 一、概述 `ServletContext`接口是Servlet与Servlet容器之间进行通信的重要接口之一。当Servlet容器启动一个Web应用时,会为该应用创建一个`ServletContext`对象,这个对象在整个Web...

    ServletContext.pdf

    ### ServletContext概述与应用 #### 一、ServletContext简介 `ServletContext`是Servlet容器提供的一种机制,用于在Web应用程序的不同组成部分之间共享数据,并提供对整个Web应用程序的全局信息访问。它是Servlet ...

    监听request、session、ServletContext 对象存放的数据变化情况

    博客地址:...存放数据指的是这三个对象在工程中setAttribute(),removeAttribute()的时候,我们的监听器就会知道,然后在对应的方法中执行相应的操作。

Global site tag (gtag.js) - Google Analytics