Servlet其他关联类---ServletContext类
生活随笔
收集整理的這篇文章主要介紹了
Servlet其他关联类---ServletContext类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.ServletContext介紹
<1>域對象
- 域對象指的是對象有作用域。也就是有作用范圍。域對象可以實現數據的共享。不同作用范圍的域對象,共享數據的能力也不一樣。
- 在Servlet規范中,一共有4個域對象。ServletContext就是其中的一個。它也是web應用中最大的作用域,也叫application域。它可以實現整個應用之間的數據共享!
<2>ServletContext是應用上下文對象(應用域對象); - 每一個應用中只有一個ServletContext對象;
- 作用:可以配置和獲得應用的全局初始化參數;
- 可以實現Servlet之間的數據共享;
- 生命周期:應用一加載則創建,應用被停止則銷毀。
2.配置和獲取全局參數
【每一個應用只有一個ServletContext對象,故定義在Service標簽外】
<1>配置全局參數
<2>獲取全局參數
public class ServletContextDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取ServletContext對象ServletContext context = this.getServletContext();//獲取全局配置參數:getInitParameter(String key)根據key獲取valueEnumeration<String> ParameterNames = context.getInitParameterNames();while (ParameterNames.hasMoreElements()) {String name = ParameterNames.nextElement();String value = context.getInitParameter(name);System.out.println(name + "..." + value);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }打印結果: ------------------------------------------------------------------- globalEncoding...utf-8 globalDesc...我是ServletContext的描述信息3.設置共享數據和獲取真實路徑
【每一個應用只有一個ServletContext對象,故在每個Service標簽內可以共享和刪除數據】
public class ServletContextDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取ServletContext對象ServletContext context = this.getServletContext();//1.設置共享數據context.setAttribute("username","zhangsan");context.setAttribute("password","123456");System.out.println("Servlet1已存儲到數據");//刪除共享數據/*context.removeAttribute("username");System.out.println("Servlet1已刪除數據");*//*String charset = context.getInitParameter("charset");System.out.println(charset);*///2.//獲取應用的虛擬目錄: getContextPath()String contextPath = context.getContextPath();System.out.println(contextPath);//3.根據虛擬目錄獲取絕對路徑: getRealPath(String path)//用戶通過瀏覽器訪問的是服務器上的路徑//獲得虛擬目錄的絕對路徑(服務器中的路徑)String servletRealpath = context.getRealPath("/");System.out.println(servletRealpath);//獲取web/a.txt的絕對路徑String webPath = context.getRealPath("/a.txt");System.out.println(webPath);//獲取WEB-INF的絕對路徑String webInPath = context.getRealPath("WEB-INF/a.txt");System.out.println(webInPath);//獲取src/a.txt的絕對路徑String srcPath = context.getRealPath("WEB-INF/classes/a.txt");System.out.println(srcPath);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }打印結果: ----------------------------------------------------------------- Servlet1已存儲到數據 /day03_ServletContextDemo_war_exploded D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\ D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\a.txt D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\WEB-INF\a.txt D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\WEB-INF\classes\a.txt 26-Jul-2021 21:50:03.584 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 應用程序部署到目錄 [D:\apache-tomcat-9.0.5\apache-tomcat-9.0.50\webapps\manager] 26-Jul-2021 21:50:03.617 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web應用程序目錄[D:\apache-tomcat-9.0.5\apache-tomcat-9.0.50\webapps\manager]的部署已在[33]毫秒內完成 Servlet2已獲取到數據 zhangsan...123456注:
<1>打印情況為瀏覽器先訪問ServletContextDemo1再訪問ServletContextDemo2;如果先訪問ServletContextDemo2則獲取的數據為null…null
<2>移除共享數據時,移除對應的字符,不會影響其他的值,如移除’zhangsan‘,ServletContextDemo2獲取的打印結果為null…123456
總結
以上是生活随笔為你收集整理的Servlet其他关联类---ServletContext类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Servlet其他关联类---Servl
- 下一篇: 诺基亚n79刷机(诺基亚n9刷机)