教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JAVA培訓(xùn)之ServletContext功能詳解

更新時(shí)間:2016年07月25日17時(shí)45分 來源:傳智播客Java培訓(xùn)學(xué)院 瀏覽次數(shù):

我們知道一個(gè)ServletContext對象對應(yīng)一個(gè)web應(yīng)用,我們也可以稱ServletContext是web應(yīng)用的上下文對象。它能夠?qū)崿F(xiàn)web應(yīng)用中Servlet之間的數(shù)據(jù)通信,以及獲取全局初始化參數(shù)等功能。下面我們就來一一介紹這兩種功能。

1.ServletContext域功能

ServletContext是javaweb的四大域?qū)ο笾?。什么是域?qū)ο?主要來說,域?qū)ο笫怯脕碓诙鄠€(gè)Servlet之間傳遞數(shù)據(jù)。我們可以理解域是一個(gè)容器,可以將數(shù)據(jù)存放在這個(gè)域中,然后在域范圍內(nèi)可以將數(shù)據(jù)從這個(gè)域中取出來。也可以理解域就是一個(gè)范圍,ServletContext是四大域?qū)ο笾?,域范圍最大的?br /> 所有域?qū)ο蠖加写嫒?shù)據(jù)的能力,是因?yàn)樵谟蛑写嬖谝粋€(gè)map,數(shù)據(jù)是以key-value的形式存放在域中。以下是ServletContext存取域中數(shù)據(jù)的相關(guān)方法,如表1-1所示:
方法名 方法描述
 
 
void setAttribute(String name ,Object value)
向域中存放數(shù)據(jù),也稱為域?qū)傩?,例?setAttribute(“pw”,”123”),表示向域中存放了一個(gè)域?qū)傩裕瑢傩悦麨?rdquo;pw”,屬性值為”123”,如果再次調(diào)用該方法,并向域中存放了同名的域?qū)傩裕詈蟠娴臅?huì)覆蓋以前存的。
Object getAttribute(String name) 根據(jù)屬性名稱獲取域中的屬性值,使用該方法之前,一定要向域中存放數(shù)據(jù),這樣才能取出來。
 
void removeAttribut(String name)
從域中移出指定屬性名的域?qū)傩?,包括屬性名和屬性值,如果參?shù)name指定的域?qū)傩圆淮嬖?,則本方法什么都不做。
Enumeration getAttributeNames() 獲得域中所有的域?qū)傩缘拿Q,返回值類型是Enumeration
下面通過一個(gè)案例,來學(xué)習(xí)這些方法的使用,詳情請參考ServletContext功能案例詳解,點(diǎn)擊此處 下載案例源代碼,具體如下所示:
(1)建立一個(gè)web應(yīng)用,Example14,在該應(yīng)用下新建一個(gè)Servlet類,TestServlet,主要代碼如例1-1所示:
例1-1 TestServlet.java
public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      /*
       * 向ServletContext域中存放域?qū)傩?br />        * */
       ServletContext servletContext=getServletContext();
       servletContext.setAttribute("name","zhangsan");
    }
}
(2)再次新建一個(gè)Servlet類,TwoServlet ,主要代碼如例1-2所示:
例1-2  TwoServlet.java
public class TwoServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
             /*
              * 從ServletContext域中獲取域?qū)傩?br />               * */
       ServletContext servletContext=getServletContext();
       String value=(String) servletContext.getAttribute("name");
       System.out.println(value);
    }
}
(3)TestServlet在web.xml文件中配置的訪問路徑是:“/TestServlet”;TwoServlet在web.xml文件中配置的訪問路徑是:“/TwoServlet”。
 (4)將Example14應(yīng)用發(fā)布到Tomcat服務(wù)器,啟動(dòng)服務(wù)器,在瀏覽器地址欄上輸入:http://localhost:8080/Example14/TestServlet,瀏覽器顯示結(jié)果如圖1-1所示:

圖1-1 瀏覽器顯示結(jié)果
(5)接著在瀏覽器端地址欄上輸入http://localhost:8080/Example14/TwoServlet,控制臺顯示結(jié)果如圖1-2所示:

圖1-2 控制臺運(yùn)行結(jié)果
由圖1-1、1-2所示,我們先訪問TestServlet,將name域?qū)傩源娣旁赟ervletContext域中,然后再訪問TwoServlet,這個(gè)時(shí)候就可以獲取域?qū)傩詎ame的值。

2.ServletContext獲取初始化參數(shù)

在web.xml文件中,不僅可以配置Servlet的初始化信息,還可以配置整個(gè)web應(yīng)用的初始化信息。web應(yīng)用初始化參數(shù)的配置方式具體如下所示:
<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>
在上面的實(shí)例中,<context-param>元素位于根元素<web-app>元素中,它的子元素<param-name>與<param-value>分別用來指定參數(shù)的名字與參數(shù)值。要獲取這些參數(shù)信息,可以使用ServletContext接口的getInitParameterNames()和getInitParameter(String name)。它們分別是用來獲取參數(shù)名和參數(shù)值。
下面通過一個(gè)案例來學(xué)習(xí)如何使用ServletContext類的這些方法獲取初始化參數(shù),具體如下:
(1)在Example14應(yīng)用中,新建一個(gè)Servlet類,ParamServlet,主要代碼如例1-4所示:
例1-4 ParamServlet.java
public class ParamServlet extends HttpServlet {
 /*
  * 通過ServletContext獲取全局初始化參數(shù)
  * */
    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文件的配置內(nèi)容,如例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)重新啟動(dòng)Tomcat服務(wù)器,在瀏覽器端地址欄輸入:http://localhost:8080/Example14/ParamServlet,控制臺打印結(jié)果如圖1-3所示:
圖1-3 控制臺打印結(jié)果
由圖1-3可知,ParamServlet將在web.xml文件配置的全局初始化信息獲取到了,由此可見,ServletContext對象可以獲取web應(yīng)用的初始化參數(shù)。

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee
0 分享到:
和我們在線交談!