Java?ServletContext與ServletConfig接口使用教程
ServletContext接口
1.概念
當(dāng)Servlet容器啟動(dòng)時(shí),會(huì)為每個(gè)Web應(yīng)用創(chuàng)建一個(gè)唯一的ServletContext對(duì)象代表當(dāng)前Web應(yīng)用,可以和程序的容器(服務(wù)器)來通信。
兩種獲取方式:
通過request對(duì)象獲取
ServletContext context = request.getServletContext();
通過HttpServlet獲取
ServletContext context = this.getServletContext();
2.功能
1、獲取Web應(yīng)用程序的初始化參數(shù)
定義了getInitParameterNames()和getInitParameter(String name)方法分別用來獲取參數(shù)名和參數(shù)值。
package cn.itcast.chapter04.servlet; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet03 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); // 得到ServletContext對(duì)象 ServletContext context = this.getServletContext(); // 得到包含所有初始化參數(shù)名的Enumeration對(duì)象 Enumeration<String> paramNames = context.getInitParameterNames(); // 遍歷所有的初始化參數(shù)名,得到相應(yīng)的參數(shù)值,打印到控制臺(tái) out.println("all the paramName and paramValue are following:"); // 遍歷所有的初始化參數(shù)名,得到相應(yīng)的參數(shù)值并打印 while (paramNames.hasMoreElements()) { String name = paramNames.nextElement(); String value = context.getInitParameter(name); out.println(name + ": " + value); out.println("<br>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
2、實(shí)現(xiàn)多個(gè)Servlet對(duì)象共享數(shù)據(jù)
由于一個(gè)Web應(yīng)用中的所有Servlet共享同一個(gè)ServletContext對(duì)象,因此ServletContext對(duì)象的域?qū)傩钥梢员辉揥eb應(yīng)用中的所有Servlet訪問。在ServletContext接口中定義了分別用于增加、刪除、設(shè)置ServletContext域?qū)傩缘乃膫€(gè)方法,如表1所示。
表1 ServletContext接口的方法
方法說明 | 功能描述 |
---|---|
Enumeration getAttributeNames() | 返回一個(gè)Enumeration對(duì)象,該對(duì)象包含了所有存放在ServletContext中的所有域?qū)傩悦?/td> |
Object getAttibute(String name) | 根據(jù)參數(shù)指定的屬性名返回一個(gè)與之匹配的域?qū)傩灾?/td> |
void removeAttribute(String name) | 根據(jù)參數(shù)指定的域?qū)傩悦?,從ServletContext中刪除匹配的域?qū)傩?/td> |
void setAttribute(String name,Object obj) | 設(shè)置ServletContext的域?qū)傩?,其中name是域?qū)傩悦?,obj是域?qū)傩灾?/td> |
ServletContext context = this.getServletContext(); // 通過setAttribute()方法設(shè)置屬性值 context.setAttribute("data", "this servlet save data");
3、讀取Web應(yīng)用下的資源文件
ServletContext接口中用于獲取資源路徑的相關(guān)方法,具體如下:
表2 ServletContext接口的常用方法
方法說明 | 功能描述 |
---|---|
Set getResourcePaths(String path) | 返回一個(gè)Set集合,集合中包含資源目錄中子目錄和文件的路徑名稱。參數(shù)path必須以正斜線(/)開始,指定匹配資源的部分路徑 |
String getRealPath(String path) | 返回資源文件在服務(wù)器文件系統(tǒng)上的真實(shí)路徑(文件的絕對(duì)路徑)。參數(shù)path代表資源文件的虛擬路徑,它應(yīng)該以正斜線開始(/)開始,“/”表示當(dāng)前Web應(yīng)用的根目錄,如果Servlet容器不能將虛擬路徑轉(zhuǎn)換為文件系統(tǒng)的真實(shí)路徑,則返回null |
URL getResource(String path) | 返回映射到某個(gè)資源文件的URL對(duì)象。參數(shù)path必須以正斜線(/)開始,“/”表示當(dāng)前Web應(yīng)用的根目錄 |
InputStream getResourceAsStream(String path) | 返回映射到某個(gè)資源文件的InputStream輸入流對(duì)象。參數(shù)path傳遞規(guī)則和getResource()方法完全一致 |
編寫讀取itcast.properties資源文件:
package cn.itcast.chapter04.servlet; import java.io.*; import java.util.Properties; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet06 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); ServletContext context = this.getServletContext(); PrintWriter out = response.getWriter(); InputStream in = context .getResourceAsStream("/WEB- INF/classes/itcast.properties"); Properties pros = new Properties(); pros.load(in); out.println("Company=" + pros.getProperty("Company") + " <br>"); out.println("Address=" + pros.getProperty("Address") + " <br>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
ServletConfig接口
1.概念
Tomcat初始化一個(gè)Servlet時(shí),會(huì)將該Servlet的配置信息封裝到一個(gè)ServletConfig對(duì)象中,通過調(diào)用init(ServletConfig cofig)方法將ServletConfig對(duì)象傳遞給Servlet。
2.ServletConfig的常用方法
表1 ServletConfig接口的常用方法
方法說明 | 功能描述 |
---|---|
String getInitParameter(String name) | 根據(jù)初始化參數(shù)名返回對(duì)應(yīng)的初始化參數(shù)值 |
Enumeration getInitParameterNames() | 返回一個(gè)Enumeration對(duì)象,其中包含了所有的初始化參數(shù)名 |
ServletContext getServletContext() | 返回一個(gè)代表當(dāng)前Web應(yīng)用的ServletContext對(duì)象 |
String getServletName() | 返回Servlet的名字,即web.xml中<servlet-name>元素的值 |
package cn.itcast.chapter04.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TestServlet02 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); // 獲得ServletConfig對(duì)象 ServletConfig config = this.getServletConfig(); // 獲得參數(shù)名為encoding對(duì)應(yīng)的參數(shù)值 String param = config.getInitParameter("encoding"); out.println("encoding="+param); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
到此這篇關(guān)于Java ServletContext與ServletConfig接口使用教程的文章就介紹到這了,更多相關(guān)Java ServletContext與ServletConfig內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot的@ControllerAdvice處理全局異常詳解
這篇文章主要介紹了SpringBoot的@ControllerAdvice處理全局異常詳解,但有時(shí)卻往往會(huì)產(chǎn)生一些bug,這時(shí)候就破壞了返回?cái)?shù)據(jù)的一致性,導(dǎo)致調(diào)用者無法解析,所以我們常常會(huì)定義一個(gè)全局的異常攔截器,需要的朋友可以參考下2024-01-01Java調(diào)用shell命令涉及管道、重定向時(shí)不生效問題及解決
這篇文章主要介紹了Java調(diào)用shell命令涉及管道、重定向時(shí)不生效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式
這篇文章主要介紹了java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10sms4j?2.0?全新來襲功能的調(diào)整及maven變化詳解
這篇文章主要介紹了sms4j?2.0?全新來襲功能的調(diào)整及maven變化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04淺析java中 Spring MVC 攔截器作用及其實(shí)現(xiàn)
本篇文章主要介紹了java中SpringMVC 攔截器的使用及其實(shí)例,需要的朋友可以參考2017-04-04使用Spring動(dòng)態(tài)修改bean屬性的key
這篇文章主要介紹了使用Spring動(dòng)態(tài)修改bean屬性的key方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java編程rabbitMQ實(shí)現(xiàn)消息的收發(fā)
RabbitMQ是一個(gè)在AMQP基礎(chǔ)上完成的,可復(fù)用的企業(yè)消息系統(tǒng),本文通過實(shí)例來給大家分享通過操作rabbitMQ實(shí)現(xiàn)消息的收發(fā),感興趣的朋友可以參考下。2017-09-09Java cookie和session會(huì)話技術(shù)介紹
session的工作原理和cookie非常類似,在cookie中存放一個(gè)sessionID,真實(shí)的數(shù)據(jù)存放在服務(wù)器端,客戶端每次發(fā)送請(qǐng)求的時(shí)候帶上sessionID,服務(wù)端根據(jù)sessionID進(jìn)行數(shù)據(jù)的響應(yīng)2023-04-04