日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JaveWeb学习之Servlet(二):ServletConfig和ServletContext

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JaveWeb学习之Servlet(二):ServletConfig和ServletContext 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文同步發表至個人博客【夜月歸途】

原文鏈接:http://www.guitu18.com/se/java/2018-07-26/20.html

作者:夜月歸途
出處:http://www.guitu18.com/
本博客中未標明轉載的文章歸作者夜月歸途和博客園所有。 歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

ServletConfig

繼續查看ServletConfig源碼:

package javax.servlet; public interface ServletConfig {public String getServletName();public ServletContext getServletContext();public String getInitParameter(String name);public Enumeration<String> getInitParameterNames(); }

?

getServletName();

getServletName方法用于獲取當前Servlet名稱,這個是在xml中配置的:<servlet-name>springmvcdemo</servlet-name>;

getServletContext();

getServletContext方法用于獲取代表當前web應用的ServletContext對象;

getInitParameter(String name);

getInitParameter方法用于獲取當前Servlet指定名稱的初始化參數的值;

getInitParameterNames();

getInitParameterNames獲取當前Servlet所有初始化參數的名字枚舉集合;

Servlet容器初始化時每一個Servlet對象時,會為其創建一個ServletConfig對象,通過Servlet的init方法,會把ServletContext對象傳遞給當前Servlet:

public void init(ServletConfig config) throws ServletException;

?

之后使用this.getServletConfig()對象獲取當前Servlet的ServletConfig對象;

ServletConfig servletConfig = getServletConfig();

?

我們在xml中配置Servlet時,還可以配置Servlet初始化參數信息:

<servlet><servlet-name>Servlet_1</servlet-name><servlet-class>com.guitu.servlet.Servlet_1</servlet-class><init-param><param-name>username</param-name><param-value>zhangkuan</param-value></init-param> </servlet>

?

之后可以通過servletConfig獲取InitParameter參數;

Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();

?

獲得的是一個參數名字的枚舉集合,在調用getInitParameter(String name)即可獲得參數的值:

String initParameter = servletConfig.getInitParameter(parameterName);

?

ServletContext

Servlet容器啟動后,會為每一個獨立的Web應用創建一個ServletContext實例,代表當前Web應用;
ServletContext由所有Servlet共享,所以ServletContext中的參數所有Servlet都能夠獲取,多個web組件之間使用它實現數據共享;

ServletContext常用方法:

getAttribute(String name);

獲取ServletContext中存儲的數據;

setAttribute(String name, Object obj);

向ServletContext中存儲數據;

getInitParameter(String name);

獲取<context-param>標簽中為整個Web應用配置的初始化參數;

getInitParameterNames();

一次性獲取<context-param>里所有的初始化參數名的枚舉;

getRealPath(String path);

獲取應用程序內指定資源的絕對路徑;

getResource(String parh);

path必須是/開頭,代表當前web應用程序的根目錄。返回一個代表某個資源的URL對象;

getResoutceAsStream(String parh);

可以使用相對于根目錄的路徑訪問到web目錄下的所有文件,而不必知道絕對路徑,返回文件流;

ServletConfig、ServletContext測試Demo

1、Servlet_1:

package com.guitu.servlet;import java.io.IOException; import java.util.Enumeration;import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class Servlet_1 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletConfig servletConfig = getServletConfig();Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();System.out.println("=====Servlet_1.ServletConfig.InitParameter=====");while (initParameterNames.hasMoreElements()) {String parameterName = initParameterNames.nextElement();String initParameter = servletConfig.getInitParameter(parameterName);System.out.println(parameterName + ":" + initParameter);}System.out.println("=====Servlet_1.ServletContext.InitParameter=====");ServletContext servletContext = getServletContext();Enumeration<String> contextInitParameters = servletContext.getInitParameterNames();while (contextInitParameters.hasMoreElements()) {String parameterName = contextInitParameters.nextElement();String initParameter = servletContext.getInitParameter(parameterName);System.out.println(parameterName + ":" + initParameter);}servletContext.setAttribute("message", "Hello World !");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

?

2、Servlet_2:

package com.guitu.servlet;import java.io.IOException; import java.util.Enumeration;import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class Servlet_2 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletConfig servletConfig = getServletConfig();Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();System.out.println("=====Servlet_2.ServletConfig.InitParameter======");while (initParameterNames.hasMoreElements()) {String parameterName = initParameterNames.nextElement();String initParameter = servletConfig.getInitParameter(parameterName);System.out.println(parameterName + ":" + initParameter);}System.out.println("=====Servlet_2.ServletContext.InitParameter=====");ServletContext servletContext = getServletContext();Enumeration<String> contextInitParameters = servletContext.getInitParameterNames();while (contextInitParameters.hasMoreElements()) {String parameterName = contextInitParameters.nextElement();String initParameter = servletContext.getInitParameter(parameterName);System.out.println(parameterName + ":" + initParameter);}System.out.println("=====servletContext.getAttribute=====");Object object = servletContext.getAttribute("message");System.out.println("message:" + object);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

?

3、web.xml配置:

<context-param><param-name>domain</param-name><param-value>guitu18.com</param-value> </context-param> <context-param><param-name>name</param-name><param-value>夜月歸途</param-value> </context-param> <servlet><servlet-name>Servlet_1</servlet-name><servlet-class>com.guitu.servlet.Servlet_1</servlet-class><init-param><param-name>username</param-name><param-value>zhangkuan</param-value></init-param> </servlet> <servlet-mapping><servlet-name>Servlet_1</servlet-name><url-pattern>/Servlet_1</url-pattern> </servlet-mapping> <servlet><servlet-name>Servlet_2</servlet-name><servlet-class>com.guitu.servlet.Servlet_2</servlet-class><init-param><param-name>password</param-name><param-value>Guitu18</param-value></init-param> </servlet> <servlet-mapping><servlet-name>Servlet_2</servlet-name><url-pattern>/Servlet_2</url-pattern> </servlet-mapping>

?

在Servlet1和Servlet2中,分別獲得了ServletConfig對象和ServletContext對象;
在web.xml中,也分別為他們配置了不同的初始化參數,同時配置了一個context級的初始化參數;
之后分別在兩個Servlet中獲取ServletConfig和ServletContext的InitParamer參數;
在Servlet1中還通過setAttribute向ServletContext域中保存了一條消息message,在Servlet2中,便可以通過getAttribute獲取這條消息;

4、訪問兩個Servlet,先訪問Servlet_1:

=====Servlet_1.ServletConfig.InitParameter===== username:zhangkuan =====Servlet_1.ServletContext.InitParameter===== domain:guitu18.com name:夜月歸途

?

再訪問Servlet_2:

=====Servlet_2.ServletConfig.InitParameter===== password:Guitu18 =====Servlet_2.ServletContext.InitParameter===== domain:guitu18.com name:夜月歸途 =====servletContext.getAttribute===== message:Hello World !

?

可以看到,每個Servlet擁有自己ServletConfig對象,數據不互通,而ServletContext中的初始化參數和context域中的參數,是所有Servlet共享的,可以使用context域實現數據共享;

轉載于:https://www.cnblogs.com/guitu18/p/10224653.html

總結

以上是生活随笔為你收集整理的JaveWeb学习之Servlet(二):ServletConfig和ServletContext的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。