全国咨询/投诉热线:400-618-4000

JAVA培训之ServletContext功能详解

更新时间:2016年07月25日17时45分 来源:传智播客Java培训学院 浏览次数:

我们知道一个ServletContext对象对应一个web应用,我们也可以称ServletContext是web应用的上下文对象。它能够实现web应用中Servlet之间的数据通信,以及获取全局初始化参数等功能。下面我们就来一一介绍这两种功能。

1.ServletContext域功能

ServletContext是javaweb的四大域对象之一。什么是域对象?主要来说,域对象是用来在多个Servlet之间传递数据。我们可以理解域是一个容器,可以将数据存放在这个域中,然后在域范围内可以将数据从这个域中取出来。也可以理解域就是一个范围,ServletContext是四大域对象中,域范围最大的。
所有域对象都有存取数据的能力,是因为在域中存在一个map,数据是以key-value的形式存放在域中。以下是ServletContext存取域中数据的相关方法,如表1-1所示:
方法名 方法描述
 
 
void setAttribute(String name ,Object value)
向域中存放数据,也称为域属性,例如:setAttribute(“pw”,”123”),表示向域中存放了一个域属性,属性名为”pw”,属性值为”123”,如果再次调用该方法,并向域中存放了同名的域属性,最后存的会覆盖以前存的。
Object getAttribute(String name) 根据属性名称获取域中的属性值,使用该方法之前,一定要向域中存放数据,这样才能取出来。
 
void removeAttribut(String name)
从域中移出指定属性名的域属性,包括属性名和属性值,如果参数name指定的域属性不存在,则本方法什么都不做。
Enumeration getAttributeNames() 获得域中所有的域属性的名称,返回值类型是Enumeration
下面通过一个案例,来学习这些方法的使用,详情请参考ServletContext功能案例详解,点击此处 下载案例源代码,具体如下所示:
(1)建立一个web应用,Example14,在该应用下新建一个Servlet类,TestServlet,主要代码如例1-1所示:
例1-1 TestServlet.java
public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      /*
       * 向ServletContext域中存放域属性
       * */
       ServletContext servletContext=getServletContext();
       servletContext.setAttribute("name","zhangsan");
    }
}
(2)再次新建一个Servlet类,TwoServlet ,主要代码如例1-2所示:
例1-2  TwoServlet.java
public class TwoServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
             /*
              * 从ServletContext域中获取域属性
              * */
       ServletContext servletContext=getServletContext();
       String value=(String) servletContext.getAttribute("name");
       System.out.println(value);
    }
}
(3)TestServlet在web.xml文件中配置的访问路径是:“/TestServlet”;TwoServlet在web.xml文件中配置的访问路径是:“/TwoServlet”。
 (4)将Example14应用发布到Tomcat服务器,启动服务器,在浏览器地址栏上输入:http://localhost:8080/Example14/TestServlet,浏览器显示结果如图1-1所示:

图1-1 浏览器显示结果
(5)接着在浏览器端地址栏上输入http://localhost:8080/Example14/TwoServlet,控制台显示结果如图1-2所示:

图1-2 控制台运行结果
由图1-1、1-2所示,我们先访问TestServlet,将name域属性存放在ServletContext域中,然后再访问TwoServlet,这个时候就可以获取域属性name的值。

2.ServletContext获取初始化参数

在web.xml文件中,不仅可以配置Servlet的初始化信息,还可以配置整个web应用的初始化信息。web应用初始化参数的配置方式具体如下所示:
<context-param>
  <param-name>hobby</param-name>
  <param-value>play</param-value>
  </context-param>
  <context-param>
  <param-name>gender</param-name>
  <param-value>male</param-value>
  </context-param>
在上面的实例中,<context-param>元素位于根元素<web-app>元素中,它的子元素<param-name>与<param-value>分别用来指定参数的名字与参数值。要获取这些参数信息,可以使用ServletContext接口的getInitParameterNames()和getInitParameter(String name)。它们分别是用来获取参数名和参数值。
下面通过一个案例来学习如何使用ServletContext类的这些方法获取初始化参数,具体如下:
(1)在Example14应用中,新建一个Servlet类,ParamServlet,主要代码如例1-4所示:
例1-4 ParamServlet.java
public class ParamServlet extends HttpServlet {
 /*
  * 通过ServletContext获取全局初始化参数
  * */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
          ServletContext servletContext=getServletContext();
         String hobby= servletContext.getInitParameter("hobby");
         String gender=servletContext.getInitParameter("gender");
         System.out.println("hobby:"+hobby);
         System.out.println("gender:"+gender);
    }
}
(2)web.xml文件的配置内容,如例1-5所示:
例1-5 web.xml
  <context-param>
  <param-name>hobby</param-name>
  <param-value>play</param-value>
  </context-param>
  <context-param>
  <param-name>gender</param-name>
  <param-value>male</param-value>
  </context-param>
<servlet>
    <servlet-name>ParamServlet</servlet-name>
    <servlet-class>cn.itcast.web.servlet.ParamServlet</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>ParamServlet</servlet-name>
    <url-pattern>/ParamServlet</url-pattern>
  </servlet-mapping>
(3)重新启动Tomcat服务器,在浏览器端地址栏输入:http://localhost:8080/Example14/ParamServlet,控制台打印结果如图1-3所示:
图1-3 控制台打印结果
由图1-3可知,ParamServlet将在web.xml文件配置的全局初始化信息获取到了,由此可见,ServletContext对象可以获取web应用的初始化参数。

本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额