ServletContext
什么是Servlet上下文?
Servlet上下文又叫做:ServletContext。容器啟動之后,容器會為每個web應用創建一個實現了ServletContext接口要求的對象,該對象就稱之為servlet上下文。
當WEB服務器啟動時,會為每一個WEB應用程序(webapps下的每個目錄就是一個應用程序)創建一塊共享的存儲區域。
ServletContext也叫做“公共區域”,也就是同一個WEB應用程序中,所有的Servlet和JSP都可以共享同一個區域。
ServletContext特點:
1、ServletContext生命周期:在WEB服務器啟動時創建,服務器關閉時銷毀。
2、唯一性,一個web應用對應一個servlet上下文
3、一直存在,只要容器沒有關閉,應用沒有被卸載,servlet上下文就會一直存在。
如何獲取Servlet上下文?
GenericServlet,ServletConfig,HttpSession,FilterConfig都提供了一個方法getServletContext()來獲得Servlet上下文。
ServletContext上下文作用:
1、綁定數據
setAttribute,removeAttribute,getAttribute在滿足使用條件情況下,優先使用生命周期短的(request<session<ServletContext)
2、讀取全局的初始化參數
首先在web.xml中這么配置
1、作用范圍不同:HttpSession是針對每一個客戶端瀏覽器單獨有一個。 ServletContext是針對每一個WEB應用程序有一個 2、存活時間不同:HttpSession第一次訪問服務器,服務器端調用request.getSession()時創建,訪問間隔時間超過30分鍾就銷毀。 ServletContext服務器啟動時創建,服務器停止時銷毀。
HttpSession何時被創建,何時被銷毀呢?
創建:第一次請求服務器,服務器端的Servlet調用了 request.getSession()方法時被創建。
銷毀:如果瀏覽器間隔時間超過30分鍾沒有訪問服務器,則服務器會銷毀對應的HttpSession對象。(默認30分鍾是可以配置的。)
<session-config> <session-timeout>30</session-timeout> </session-config>