ServletContext

本文详细介绍了ServletContext的概念及其作用,包括如何获取ServletContext对象、其生命周期特点及如何使用相关方法进行数据的存储和检索。此外还介绍了如何利用ServletContext获取web应用的初始化参数。

ServletContext

什么是ServletContext

当服务器启动时,服务器会为每一个Web应用创建一个唯一的ServletContext对象代表当前Web应用。每个Web应用中的Servlet共享一个ServletContext,所以Servlet之间就可以通过该对象来实现数据通信。ServletContext对象的生命周期是最长的,当服务器启动时被创建,服务器关闭或web应用被移出服务器时被销毁。

怎样获取ServletContext

通过ServletConfig的getServletContext()方法,我们可以获取一个ServletContext对象。

共有如下四种方式:

(1)调用ServletConfig类的getServletContext()方法

在init(ServletConfigconfig)方法中,使用ServletContext context=config.getServletContext();

(2)调用GenericServlet类的getServletContext()方法

其实这种方式也是调用ServletConfig类的getServletContext()方法,因为GenericServlet类实现了ServletConfig接口;

(3)调用HttpSession类的getServletContext()方法:

HttpSession也是一个接口,它有一个方法可以获取到ServletContext对象;

(4)调用ServletContextEvent类的getServletContext()方法

ServletContextEvent类只有一个方法,就是getServletContext(),

ServletContext功能详解

ServletContext是javaweb的四大域对象之一。

(javaweb的四大域对象:ServletContext、Request、Session、PageContext)

         所有域对象都有存取数据的能力,是因为在域中存在一个map,数据是以key-value的形式存放在域中。以下是ServletContext存取域中数据的相关方法:

方法名

方法描述

void setAttribute(String name ,Object value)

向域中存放数据,也称为域属性,例如:setAttribute(“pw”,”123”),表示向域中存放了一个域属性,属性名为”pw”,属性值为”123”,如果再次调用该方法,并向域中存放了同名的域属性,最后存的会覆盖以前存的。

Object getAttribute(String name)

根据属性名称获取域中的属性值,使用该方法之前,一定要向域中存放数据,这样才能取出来。

void removeAttribut(String name)

从域中移出指定属性名的域属性,包括属性名和属性值,如果参数name指定的域属性不存在,则本方法什么都不做。

Enumeration getAttributeNames()

获得域中所有的域属性的名称,返回值类型是Enumeration

示例如下

(1)新建一个Servlet类,ServletContext域中存放数据:

public class TestServlet extends HttpServlet{

    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

           throwsServletException, IOException {

       //ServletContext域中存放域属性

       ServletContext servletContext=getServletContext();

       servletContext.setAttribute("name","chenfeng");

    }

}

(2)再次新建一个Servlet类,根据属性名称获取ServletContext域中的属性值。

public class TestServlet2 extends HttpServlet{

    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

           throwsServletException, IOException {

         //ServletContext域中获取域属性

       ServletContext  servletContext=getServletContext();

       String value=(String)servletContext.getAttribute("name");

       System.out.println(value);

    }

}

ServletContext获取初始化参数

在web.xml文件中,不仅可以配置Servlet的初始化信息,还可以配置整个web应用的初始化信息。web应用初始化参数的配置方式具体如下所示:

<context-param>

 <param-name>name</param-name>

 <param-value>chenfeng</param-value>

 </context-param>

 <context-param>

 <param-name>age</param-name>

 <param-value>22</param-value>

 </context-param>

<context-param>元素位于根元素<web-app>元素中,它的子元素<param-name>与<param-value>分别用来指定参数的名字与参数值。

要获取这些参数信息,可以使用ServletContext接口的getInitParameterNames()getInitParameter(Stringname),它们分别是用来获取参数名和参数值。

示例如下

(1)web.xml文件中整个web应用的初始化信息。

<context-param>

  <param-name>name</param-name>

  <param-value>chenfeng</param-value>

  </context-param>

  <context-param>

  <param-name>age</param-name>

  <param-value>22</param-value>

(2)新建一个Servlet类,通过ServletContext获取全局初始化参数。

public class ParamServlet extends HttpServlet{

    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

           throwsServletException, IOException {

       ServletContext  context=this.getServletContext();

       String  name=context.getInitParameter("name");

       int age=Integer.parseInt(context.getInitParameter("age"));

       System.out.println("name="+name+",age="+age); }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值