1. 程式人生 > >Servlet案例之統計訪問量與獲取類路徑下資源

Servlet案例之統計訪問量與獲取類路徑下資源

一個專案中所有的資源被訪問都要對訪問量進行累加
建立一個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檔案路徑內