1. 程式人生 > >域物件——ServletContext及應用

域物件——ServletContext及應用

多個Servlet依靠ServletContext共享資料。

獲取ServletContext的方式有:

1.ServletConfig中的getServletContext();

2.GenericServlet中的getServletContext();

。。。

案例:獲取訪問網站的次數

public class AServlet extends HttpServlet {

	/**
	 * 統計網站的訪問量:
	 * 1.獲取ServletContext物件
	 * 2.獲取其屬性count
	 * 3.如果count不存在,儲存count值為1
	 * 4.如果已經存在,將count+1儲存
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		ServletContext app=this.getServletContext();
		Integer count=(Integer)app.getAttribute("count");
		if(count==null){
			app.setAttribute("count", 1);
		}
		else
		{
			app.setAttribute("count", count+1);
		}
		
		//向網頁輸出訪問量
		PrintWriter out=response.getWriter();
		out.print("<h1>"+count+"</h1>");
	}

}

還可以用於獲取資源:
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		//獲取真實路徑
		String path=this.getServletContext().getRealPath("/index.jsp");
		System.out.println(path);
		//獲取資源流
		InputStream path2=this.getServletContext().getResourceAsStream("/index.jsp");
		System.out.println(path2);
		
		//獲取指定目錄下的所有資源路徑
		Set <String> path3=this.getServletContext().getResourcePaths("/WEB-INF");
		System.out.println(path3);
		
	}