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 }