06-【servletconfig、servletContext 】

ServletConfig、ServletContext java

一、ServletConfig獲取web.xml中的配置信息:

java代碼:web

 1 @Override
 2 public void init(ServletConfig config) throws ServletException {
 3     String encode = config.getInitParameter("encode");
 4     System.out.println("encode:"+ encode);
 5     //獲取參數名
 6     Enumeration<String> names = config.getInitParameterNames();
 7     while(names.hasMoreElements()){
 8         String name = names.nextElement();
 9         String paramValue = config.getInitParameter(name);
10         System.out.println(name +"----"+ paramValue);
11     }
12 }

Tomcat啓動是注意觀看加載信息:
瀏覽器

二、ServletContext 
 實現跨瀏覽器取值,servletContext 在服務器啓動web項目的時候建立一個惟一的servletcontext對象,服務器關閉的時候銷燬 servletContext的對象,在一個web應用域中,範圍最廣的對象
首先要獲取ServletContext:this.getServletContext()服務器

1 //獲取servletContext
2 ServletContext servletContext = this.getServletContext();

1.獲取文件的真實路徑:getRealpath()session

1 //獲取文件的真實路徑
2 String realPath = servletContext.getRealPath("/index.jsp");
3 System.out.println("url:"+realPath);

2.獲取 web.xml中的參數:getInitparameter("param-name");
先配置web.xml中參數jsp

1 <!-- servletcontext獲取 web。xml中 上下文參數 -->
2 <context-param>
3     <param-name>info</param-name>
4     <param-value>200  ok </param-value>
5 </context-param>

再去獲取ide

1 // 獲取 web.xml中的參數
2 String info = servletContext.getInitParameter("info");
3 System.out.println("獲取web.xml中的上下文參數:"+info);

3.獲取文件的數據,文件下載
4.獲取某個文件夾下子文件夾和文件名:getResourcePaths測試

1 Set<String> resourcePaths = servletContext.getResourcePaths("/WEB-INF");
2 Iterator<String> iterator = resourcePaths.iterator();
3 while(iterator.hasNext()){
4     String childPath = iterator.next();
5     System.out.println("WEB-INF目錄下的子文件夾和文件名:"+childPath);
6}

servletConext對象的建立和做用範圍:每一個 Java 虛擬機的每一個「Web 應用程序」都有一個上下文。
服務器中每一個web應用,擁有一個servletContext的實例,全部的servlet和jsp共享servletContext中的數據。在單個web應用中,全部的servlet和jsp共享servletContext中數據。若是跨瀏覽器獲取數據,跨瀏覽器使用session獲取數據沒法獲取,能夠使用 ServletContext(應用域)的實例存取數據
request、session、servletContext】做用域和做用域對象:
request做用域對象:一次請求和響應 ,在一次請求和響應內 全部的servlet和jsp共享request對象的數據 
session做用域對象:一次會話,能夠跨請求取值
servletcontext做用域對象:一個web應用,能夠跨會話(跨瀏覽器)取值
// 測試跨瀏覽器訪問值
servletContext.setAttribute("value", "我是web項目的老大,能夠跨瀏覽器訪問值的呢!!!!");
// 重定向到ok.jsp
response.sendRedirect(request.getContextPath()+"/ok.jsp");

代碼:
TestServletContext.java
this

 1 package boom.servletcontext;
 2 
 3 import java.io.IOException;
 4 import java.util.Iterator;
 5 import java.util.Set;
 6 
 7 import javax.servlet.ServletContext;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 public class TestServletContext extends HttpServlet {
14     @Override
15     protected void service(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17         // 獲取ServletContext
18         ServletContext servletContext = this.getServletContext();
19         //獲取文件的真實路徑
20         String realPath = servletContext.getRealPath("/index.jsp");
21         System.out.println("url:"+realPath);
22         // 獲取 web.xml中的參數
23         String info = servletContext.getInitParameter("info");
24         System.out.println("獲取web.xml中的上下文參數:"+info);
25         // 獲取某個文件夾下子文件夾和文件名
26         Set<String> resourcePaths = servletContext.getResourcePaths("/WEB-INF");
27         Iterator<String> iterator = resourcePaths.iterator();
28         while(iterator.hasNext()){
29             String childPath = iterator.next();
30             System.out.println("WEB-INF目錄下的子文件夾和文件名:"+childPath);
31         }
32         
33         // 測試跨瀏覽器訪問值
34         servletContext.setAttribute("value", "我是web項目的老大,能夠跨瀏覽器訪問值的呢!!!!");
35         // 重定向到ok.jsp
36         response.sendRedirect(request.getContextPath()+"/ok.jsp");
37         
38     }
39 }
View Code

相關文章
相關標籤/搜索