Servlet作用域

所謂“作用域”就是通過設置屬性的方式,將一些信息綁定到對象上。

Servlet 中能夠設置屬性的對象有ServletRequest/HttpServletRequestHttpSessionServletContext。用於存儲、查詢和刪除這些屬性的方法對於所有的作用域都是相同的。它們是:

Object getAttribute(String name);    
void setAttribute(String name, Object value);    
void removeAttribute(String name);     
Enumeration getAttributeNames();  

ServletRequest :請求作用域

對應於JSP 中的Request,封裝了客戶的請求信息, 如客戶的請求方式、參數名和參數值 、客戶端正在使用的協議,以及發出請求的遠程主機信息。HttpServletRequest 接口包含了客戶端的請求信息,通過該接口取得客戶端的一些信息(如:IP地址、瀏覽器類型等)及HTTP 請求類型(如:GET、HEAD、POST、PUT等)。

通過HttpServletRequest 接口中的getSession() 方法還可以獲得會話作用域(HttpSession) 。

public HttpSession getSession();如果“當前用戶的會話對象”爲空(第一次訪問時)則創建一個新的會話對象返回

public HttpSession getSession(boolean create); ``create=false:如果“當前用戶的會話對象”爲空,則返回null(即不自動創建會話對象),create = true 與不帶參數用法一樣。

ServletRequest 對象獲得方法

javax.servlet.ServletRequestWrapper.getRequest();

HttpSession:會話作用域

對應於JSP 中的Session,爲訪客分配一個唯一標識,並存儲在客戶端的Cookie 中。

常用方法:

public boolean isNew();// 判斷這個session是不是新的。
public void invalidate();//  終止這個session。所有綁定在這個session上的數據都會被清除。
public void setMaxInactiveInterval(int interval);// 設置會話的超時值。

HttpSession 對象幾種獲得方法

javax.servlet.http.HttpServletRequest.getSession(boolean create);
javax.servlet.http.HttpServletRequest.getSession();
javax.servlet.http.HttpServletRequestWrapper.getSession(boolean create);
javax.servlet.http.HttpServletRequestWrapper.getSession();
javax.servlet.http.HttpSessionBindingEvent.getSession();
javax.servlet.http.HttpSessionContext.getSession(String sessionID);
javax.servlet.http.HttpSessionEvent.getSession();

ServletContext:上下文作用域

對應於JSP 中的Application,是ServletServlet 容器直接通信的接口,Servlet容器在啓動一個Web 應用時,會爲它創建一個唯一的ServletContext對象。同一個Web 應用的所有Servlet 共享一個ServletContextServlet 對象通過它來訪問 Servlet容器中的各種資源。

常用方法:

1) 訪問當前Web 的應用資源

public String getContextpath();// 返回當前Web應用的入口URL。
public String getInitParameter(String name);//返回Web 應用範圍內的匹配的初始化參數值。在web.xml 中<web-app>元素中<context-param>元素標識應用範圍內的初始化參數。
public Enumeration getInitParameterNames();
public String getServletContextName();// 返回Web 應用名字。即<web-app>元素中<display-name>元素的值。
public RequestDispacher getRequestDispacher(String path);//返回一個像其他Web組件發送請求的RequestDispacher 對象。

2) 訪問 Servlet 容器的相關信息

public ServletContext getContext(String uripath);// 根據指定的URI,返回當前Servlet容器中,其他Web 應用的ServletContext 對象。

3) 訪問Web 容器的相關信息

public String getServerInfo();// 返回Servlet 容器的名字和版本。
public int getMajorVersion();// 返回Servlet 容器支持的java Servlet API 的主版本號。
public int getMinorVersion();// 返回Servlet 容器支持的java Servlet API 的主版次號。

4) 訪問服務器端的文件系統資源

public String getRealPath(String path);// 根據參數指定的虛擬路徑,返回一個文件系統中的真實路徑。
public URL getResource(String path);// 返回一個指定路徑的URL。

5) 輸出日誌

public void log(String msg);// 向Servlet 的日誌文件中寫日誌。
public void log(String msg,Throwable throwable);// 向日志文件中寫錯誤信息,以及異常堆棧信息。

ServletContext 對象獲得的幾種方式:

javax.servelt.http.HttpServlet.getServletContent();
javax.servlet.http.HttpSession.getServletContext();
javax.servlet.jsp.PageContext.getServletContext();
javax.servlet.servletConfig.getServletContext();

轉載自Servlet作用域

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章