Servlet案例之統計訪問量與獲取類路徑下資源
阿新 • • 發佈:2018-12-30
一個專案中所有的資源被訪問都要對訪問量進行累加
建立一個int型別的變數,用來儲存訪問量,然後把它儲存到ServletContext的域中,這樣可以保證所有Servlet都可以訪問到
這個訪問量是整個專案共享的,需要使用ServletContext來儲存訪問量
1、最初不設定訪問量相關屬性
2、當本站第一次被訪問時,建立一個變數,設定其值為1,儲存到ServletContext中
3、當以後的訪問,就可以從ServletContext中獲取這個變數,然後在其基礎上加1
思路
第一次訪問:呼叫ServletContext的setAttribute()傳遞一個屬性,名為count,值為1 之後的訪問,呼叫ServletContext的getAttribute()方法獲取原來的訪問量,給訪問量加1,再呼叫ServletContext的setAttribute()方法完成設定。
servlet內程式碼
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.獲取ServletContext物件
ServletContext application = this.getServletContext();
//2.獲取count物件
Integer count = (Integer)application.getAttribute("count" );
if(count==null){
application.setAttribute("count",1);
}
else{
application.setAttribute("count",count+1);
}
//向瀏覽器輸出
Integer count1 = (Integer)application.getAttribute("count");
PrintWriter pw = response.getWriter();
pw.print("<h1>" +count1+"</h1>");
}
獲取類路徑下資源
獲取類路徑資源,類路徑對一個JavaWeb專案而言,就是/WEB-INF/calsss 和/WEB-INF/lib/每個jar包
//相對/classes
ClassLoader c1 = this.getClass().getClassLoader();
InputStream input = c1.getResourceAsStream("web/servlet/a.txt");
//相對當前.class
Class c = this.getClass();
InputStream input1 = c.getResourceAsStream("a.txt");
//相對/classes
InputStream input2 = c.getResourceAsStream("/a.txt");
在Class下
不加斜槓相當於在.class檔案路徑內
加斜槓相當於在/classes檔案路徑內
在ClassLoader下相當於在/classes檔案路徑內