JavaWeb核心編程之(三.4)Servlet Context 配置


ServletContext
Servlet引擎為每個Web應用程序都創建一個對應的ServletContext對象, ServletContext對象被包含在ServletConfig對象中, 調用ServletConfig.getServletContext方法可以返回ServletContext對象的引用.
由於一個WEB應用程序中的所有Servlet都共享同一個ServletCOntext對象, 所以ServletContext對象被稱之為application對象(Web應用程序對象).
功能:
1> 獲取WEB應用程序的初始化參數
2> 記錄日志
3> application域范圍的屬性
4> 訪問資源文件
5> 或許虛擬路徑所映射的本地路徑
6> WEB應用程序之間的訪問
7> ServletContext的其他方法

 

配置方式

<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>

獲得參數方法
獲得servletcontext對象
ServletContext servletContext = servletConfig.getServletContext();
通過key獲得value
servletContext.getInitParameter("")
獲得keys

獲取當前web應用的某一個文件的真實路徑(絕對路徑)--是獲取的服務器上的物理路徑
getRealPath();

獲得當前web應用的名稱
getContextPath

獲得當前web應用的某一個文件對應的輸入流
getResourceAsStream(String path) path的/為當前web應用的根目錄
1> 需要處理異常
ClassLoader classLoader = getClass().getClassLoader();
InputStream is = classLoader.getResourceAsStream("文件");
2> 需要拋出異常
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/文件");

 

實現實例

新建動態web工程-> 新建包 com.xiaoan.test->新建類TestContext

注意代碼中紅色部分, 為需要創建文件的時間節點

 1 package com.xiaoan.test;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.Enumeration;
 6 
 7 import javax.servlet.Servlet;
 8 import javax.servlet.ServletConfig;
 9 import javax.servlet.ServletContext;
10 import javax.servlet.ServletException;
11 import javax.servlet.ServletRequest;
12 import javax.servlet.ServletResponse;
13 
14 public class TestContext implements Servlet{
15 
16     @Override
17     public void destroy() {
18         // TODO Auto-generated method stub
19         
20     }
21 
22     @Override
23     public ServletConfig getServletConfig() {
24         // TODO Auto-generated method stub
25         return null;
26     }
27 
28     @Override
29     public String getServletInfo() {
30         // TODO Auto-generated method stub
31         return null;
32     }
33 
34     @Override
35     public void init(ServletConfig arg0) throws ServletException {
36         ServletContext servletContext = arg0.getServletContext();
37         //通過key獲得value
38         String username = servletContext.getInitParameter("username");
39         System.out.println("username: " + username);
40         
41         //獲得參數key列表
42         Enumeration<String> keys = servletContext.getInitParameterNames();
43         while(keys.hasMoreElements()){
44             String key = keys.nextElement();
45             String val = servletContext.getInitParameter(key);
46             System.out.println("key: " + key + ", val: " + val);
47         }
48         //在WebContent下新建 test.txt文件
49         //獲取當前web應用的某一個文件的真實路徑(絕對路徑)--是獲取的服務器上的物理路徑
50         String filePath1 = servletContext.getRealPath("/test.txt");
51         System.out.println(filePath1);
52         
53         //獲得當前web應用的名稱
54         String webName = servletContext.getContextPath();
55         System.out.println("當前應用名為: " + webName);
56         
//在src下(與包同級)創建testStream.txt文件, 作為流輸入文件 57 //獲得當前web應用的某一個文件對應的輸入流 58 //第一種 59 try { 60 ClassLoader classLoader = servletContext.getClassLoader(); 61 InputStream is = classLoader.getResourceAsStream("/testStream.txt"); 62 System.out.println(is); 63 } catch (Exception e) { 64 // TODO Auto-generated catch block 65 e.printStackTrace(); 66 } 67 //第二種 68 try { 69 InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/testStream.txt"); 70 System.out.println(is2); 71 } catch (Exception e) { 72 // TODO Auto-generated catch block 73 e.printStackTrace(); 74 } 75 } 76 77 @Override 78 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { 79 // TODO Auto-generated method stub 80 81 } 82 83 }

web.xml文件配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>testcontent</display-name>
 4   
 5   <context-param>
 6       <param-name>username</param-name>
 7       <param-value>xiaoan</param-value>
 8   </context-param>
 9   
10   <context-param>
11       <param-name>password</param-name>
12       <param-value>123456</param-value>
13   </context-param>
14   
15   
16   <servlet>
17       <servlet-name>tc</servlet-name>
18       <servlet-class>com.xiaoan.test.TestContext</servlet-class>
19   </servlet>
20   <servlet-mapping>
21       <servlet-name>tc</servlet-name>
22       <url-pattern>/</url-pattern>
23   </servlet-mapping>
24 </web-app>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM