續前篇...
ServletConfig物件
- Servlet的配置物件,ServletConfig物件作用域只能在一個Servlet類中使用,每個Servlet類都維護一個ServletConfig物件,它的常用方法如下:
a) public String getInitParameter (String name): 回傳包含指定初始化引數的值的 String,如果引數不存在,則回傳 null,
b) public java.util.Enumeration
c) public String getServletName():回傳呼叫該方法的Servlet的實體的名稱,該Servlet實體的名稱可能是服務器通過web應用web.xml來進行分配,或者沒有分配的話,那么該名稱就是Servlet的類名稱,
d) public ServletContext getServletContext():回傳一個ServletContext物件,
- 引數的初始化的作用在于Servlet啟動時需要的引數配置資訊,ServletConfig的在web應用中的web.xml配置是,哪個Servlet需要進行引數初始化,就在哪個
標簽里配置,配置如下:
<servlet> <servlet-name>ConfigServletDemo</servlet-name> <servlet-class>com.lsh.servletconfig.demo.ConfigServletDemo</servlet-class> <!-- 以下初始化引數可以多配置 --> <init-param> <param-name>who</param-name> <param-value>Tom</param-value> </init-param> <init-param> <param-name>xixi</param-name> <param-value>abc</param-value> </init-param> </servlet>
在Servlet中呼叫該初始化引數的代碼如下:
@Overridepublic void init(ServletConfig config) throws ServletException {//物件是Sevlet容器給的,this.config=config;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//通過指定初始化引數的name獲得value值String value=https://www.cnblogs.com/mubaoming/p/config.getInitParameter("who");System.out.println(value);//列印Tom//獲得所有的初始化引數的value值Enumeration<String> enums=config.getInitParameterNames();while(enums.hasMoreElements()){String name=enums.nextElement();System.out.println(name+"::"+config.getInitParameter(name));}//獲得Servlet的名稱String serName=config.getServletName();System.out.println(serName);//}}
**IT咸魚
**
微信號|mu99908888
ServletContext物件
? 1. ServletContext物件:
-
在應用在被服務器加載時就創建了一個ServletContext物件,每一個Web應用都有唯一的一個ServletContext物件,
-
即隨著服務器的加載而出現,隨著服務器的關閉而消失,
-
每次程序都是一個新的ServletContext物件,
2. ServletContext物件的獲得:
-
ServletContext物件是通過ServletConfig的getServletContext方法來獲得或者是通過父類的靜態方法getServletContext()方法直接獲得,建議使用這一種,
-
其實在ServletContext中是維護了一個Map<String,Object>物件(域物件),
3. ServletConytext常用的方法如下
-
a) public Object getAttribute (String name) : 回傳具有給定名稱的 servlet 容器屬性,如果不具有該名稱的屬性,則回傳 null,
b) public void removeAttribute(String name) : 從 servlet 背景關系中移除具有給定名稱的屬性,
c) public void setAttribute(String name, Object object):
-
將物件系結到此 servlet 背景關系中的給定屬性名稱,
-
如果已將指定名稱用于某個屬性,則此方法將使用新屬性替換具有該名稱的屬性,
-
如果值設定的是null,等同于removeAttribute()方法,
d) public String getRealPath(String path):
-
為給定虛擬路徑回傳包含實際路徑的 String,
-
比如例如,可以通過對 "http://host/contextPath/index.html" 的請求使路徑 "/index.html" 回傳服務器檔案系統上(即JavaWeb應用的目錄層次)的絕對檔案路徑,其中 contextPath 是此 ServletContext 的背景關系路徑,
-
找不到則此方法回傳 null,
4.在Web應用中在web.xml的根元素下配置應用的全域引數,配置內容如下:
<context-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </context-param>
在Servlet中獲得全域引數的值的代碼如下:
public class ServletContextDemo1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲得ServletContext物件 ServletContext context=getServletContext(); //獲得web.xml中配置的全域引數的值 String value1=context.getInitParameter("encoding"); System.out.println(value1); }}
5.多個Servlet之間的資料共享的實作,是通過ServletConext的兩個方法來實作的,資料共享即就是一個Servlet設定完資料后,另一個Servlet通過鍵來獲得值,
首先在一個Servlet設定整個web應用的共享資料,代碼如下:
public class ServletContextSetData extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲得ServletContext物件 ServletContext context=getServletContext(); //設定應用的共享資料 context.setAttribute("name", "lisi"); resp.getOutputStream().write("put success".getBytes()); }}
設定完之后,我們就可以通過另一個Servlet類來獲取我們需要的共享資料的值,代碼如下:
public class ServletContextSetData extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲得ServletContext物件 ServletContext context=getServletContext(); //設定應用的共享資料 context.setAttribute("name", "lisi"); resp.getOutputStream().write("put success".getBytes()); }}
如果看到這里,說明你喜歡這篇文章,請 轉發、點贊,同時 標星(置頂)本公眾號可以第一時間接受到博文推送,
我知道你 “在看”
關注公眾號“IT咸魚”學習更多有關知識,
獲取方法:
1、掃描下方二維碼并關注:IT咸魚
2、在IT咸魚對話框回復關鍵詞:"資料" 一并奉上,
3、也可直接添加小編微信:mu99908888 領取
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/194393.html
標籤:Java
上一篇:System.nanoTime()與System.currentTimeMillis()的區別
下一篇:卸載完舊版本的jdk出了問題
