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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

016_Servlet上下文

發布時間:2025/4/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 016_Servlet上下文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. Servlet上下文

1. 每個web工程都只有一個ServletContext對象。也就是在同一個web工程里, 所有的servlet獲取到的這個類的對象都是同一個。

2. 獲取上下文對象: ServletContext context = getServletContext();

3. ServletContext 的作用

3.1. 獲取全局配置參數;

3.2. 獲取web工程中的資源;

3.3. 存取數據, servlet間共享數據。

4. ServletContext何時創建: 服務器啟動的時候, 會為托管的每一個web應用程序, 創建一個ServletContext對象。

5. ServletContext何時銷毀: 從服務器移除托管或者是關閉服務器。

6. ServletContext 的作用范圍: 只要在這個項目里面, 都可以取。

二. ServletContext 獲取全局配置參數

1. 新建一個UseServletContext的Web工程

2. 在下WebContent新建一個index.html

3. 編寫index.html

<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>servlet上下文</title></head><body><a href="GetContextParam.action">獲取全局配置參數</a><br/></body> </html>

4. 新建一個GetContextParam.java類

5. 編輯GetContextParam.java

package com.lywgames.myservlet;import java.io.IOException; 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 GetContextParam extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();// 獲取全局配置參數String address = servletContext.getInitParameter("address");System.out.println("address = " + address);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

6. 編輯web.xml

7. 部署運行

8. 點擊”獲取全局配置參數”超鏈接, 控制臺打印

三. ServletContext 獲取資源

1. 在WebContent目錄下, 新建一個file目錄, 放入config.properties文件, 文件內容如下圖:

2. servletContext.getRealPath("/"): 工程(項目)在tomcat里面的根目錄。

C:\Users\lywgames\Desktop\software\apache-tomcat-7.0.52\wtpwebapps\UseServletContext\

3. 新建一個GetResources.java類

4. 編輯GetResources.java, 使用getRealPath獲取資源

package com.lywgames.myservlet;import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; 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 GetResources extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();/* servletContext.getRealPath("/"): 工程在tomcat里面的根目錄。* C:\Users\lywgames\Desktop\software\apache-tomcat-7.0.52\wtpwebapps\UseServletContext\*/// 獲取給定的文件在服務器上面的絕對路徑String realPath = servletContext.getRealPath("file/config.properties");Properties properties = new Properties();properties.load(new FileInputStream(realPath));System.out.println("name = " + properties.getProperty("name"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

5. 編寫web.xml

6. 編輯index.html

7. 部署運行項目

8. 點擊”獲取資源”超鏈接, 控制臺打印

9. 使用servletContext.getResourceAsStream(“資源文件路徑”)獲取資源文件輸入流, 資源文件路徑之前的路徑是工程在tomcat里面的根目錄。資源文件路徑必須存在, 否則返回null。繼續編輯我們的GetResources.java

package com.lywgames.myservlet;import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; 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 GetResources extends HttpServlet {private static final long serialVersionUID = 1L;public void getRealPath() throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();/* servletContext.getRealPath("/"): 工程在tomcat里面的根目錄。* C:\Users\lywgames\Desktop\software\apache-tomcat-7.0.52\wtpwebapps\UseServletContext\*/// 獲取給定的文件在服務器上面的絕對路徑String realPath = servletContext.getRealPath("file/config.properties");Properties properties = new Properties();properties.load(new FileInputStream(realPath));System.out.println("name = " + properties.getProperty("name"));}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();// servletContext.getResourceAsStream使用工程在tomcat里面的根目錄。InputStream is = servletContext.getResourceAsStream("file/config.properties");Properties properties = new Properties();properties.load(is);System.out.println("name = " + properties.getProperty("name"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

10. 類路徑相對的是classes目錄

11. 使用類路徑獲取資源, 繼續編輯我們的GetResources.java

package com.lywgames.myservlet;import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; 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 GetResources extends HttpServlet {private static final long serialVersionUID = 1L;public void getRealPath() throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();/* servletContext.getRealPath("/"): 工程在tomcat里面的根目錄。* C:\Users\lywgames\Desktop\software\apache-tomcat-7.0.52\wtpwebapps\UseServletContext\*/// 獲取給定的文件在服務器上面的絕對路徑String realPath = servletContext.getRealPath("file/config.properties");Properties properties = new Properties();properties.load(new FileInputStream(realPath));System.out.println("name = " + properties.getProperty("name"));}public void getResourceAsStream() throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();// servletContext.getResourceAsStream使用工程在tomcat里面的根目錄。InputStream is = servletContext.getResourceAsStream("file/config.properties");Properties properties = new Properties();properties.load(is);System.out.println("name = " + properties.getProperty("name"));}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 類路徑相對于classes路徑:C:\Users\lywgames\Desktop\software\apache-tomcat-7.0.52\wtpwebapps\UseServletContext\WEB-INF\classesInputStream is = this.getClass().getClassLoader().getResourceAsStream("../../file/config.properties");Properties properties = new Properties();properties.load(is);System.out.println("name = " + properties.getProperty("name"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

四. ServletContext存取數據, servlet間共享數據

1. 新建CunQuData.java和OutLoginCount.java

2. 編輯CunQuData.java

package com.lywgames.myservlet;import java.io.IOException; 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 CunQuData extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();Object loginCount = servletContext.getAttribute("loginCount");if(loginCount != null){servletContext.setAttribute("loginCount", (((int)loginCount) + 1));}else{servletContext.setAttribute("loginCount", 1);}resp.sendRedirect("OutLoginCount.action");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

3. 編輯OutLoginCount.java

package com.lywgames.myservlet;import java.io.IOException; 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 OutLoginCount extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲取ServletContext對象ServletContext servletContext = getServletContext();int loginCount = (int)servletContext.getAttribute("loginCount");StringBuilder sb = new StringBuilder();sb.append("<!DOCTYPE html>").append("\r\n");sb.append("<html>").append("\r\n");sb.append("<head>").append("\r\n");// 網頁編碼UTF-8sb.append("<meta charset='UTF-8' />").append("\r\n");sb.append("<title>登錄次數</title>").append("\r\n");sb.append("</head>").append("\r\n");sb.append("<body>").append("\r\n");sb.append("<h1>登錄次數:").append(loginCount).append("</h1>").append("\r\n");sb.append("</body>").append("\r\n");sb.append("</html>");// 相應客戶端的內容類型是text/html 編碼是UTF-8(包含字符編碼和網頁編碼)resp.setContentType("text/html;charset=UTF-8");// 字符流響應客戶端resp.getWriter().println(sb.toString());}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

4. 編輯index.html

5. 編輯web.xml

6. 部署運行項目

7. 多點擊幾次登錄, 顯示登錄次數

總結

以上是生活随笔為你收集整理的016_Servlet上下文的全部內容,希望文章能夠幫你解決所遇到的問題。

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