WEB容器在啟動時,它會為每個WEB應用程序都創建一個對應的ServletContext對象,它代表當前web應用。
ServletConfig對象中維護了ServletContext對象的引用,開發人員在編寫servlet時,可以通過ServletConfig.getServletContext方法獲得ServletContext對象。
由於一個WEB應用中的所有Servlet共享同一個ServletContext對象,因此Servlet對象之間可以通過ServletContext對象來實現通訊。ServletContext對象通常也被稱之為context域對象。
Servlet1:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data = "value";
ServletContext context = this.getServletConfig().getServletContext();//獲得ServletContext對象
context.setAttribute("data", data); //將data存儲到ServletContext對象中
}
Servlet2:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String data = (String) context.getAttribute("data");//從ServletContext對象中取出數據
response.getWriter().print("data="+data);
}
Servlet2拿到的context與Servlet1設置data的context是同一個對象,所以說servlet中this.getServletContext(); this.getServletConfig().getServletContext(); 本質上沒有區別。
自己的筆記,不對請指正。。。