1. 程式人生 > >Cookie,Session,Application例項

Cookie,Session,Application例項

最近學習了cookie,session,application的用法,發現網上關於這三者的介紹和區別都很詳細,但是卻沒有簡單易懂的例子來直觀的表示,特寫下這篇部落格,希望能使需要學習這方面知識的讀者更容易理解。


  • 首先先建立一個登入表單(userLogin.jsp)
    這裡寫圖片描述

  • 其次建立表單提交給的頁面(userLoginSuccess.jsp)
    這裡寫圖片描述

  • 表單效果
    這裡寫圖片描述

利用session儲存使用者名稱並跳轉至index.jsp頁面中,在該頁面中顯示使用者名稱

- 此處要修改userLoginSuccess.jsp中的程式碼,如圖


這裡寫圖片描述

上面程式碼中response將我們的請求重新定位到index.jsp上,改變URL的地址,實現了跳轉

- index.jsp程式碼:

  <body>
  <% 
        Object o = session.getAttribute("user");
        if(o == null){
     %>
        <%}else{
            out.println("歡迎" + o.toString()+"登入成功");
        }   
         %> <a href = "userLoginout.jsp
">
登出</a><!-- 此處跳轉實現清除session資料 --> </body>

上面index.jsp中最後有個超連結,此超連結的作用註釋已寫了,若沒有清除session的操作可能會導致效能問題或伺服器崩潰
- userLoginout.jsp程式碼:

  <body>
    <%
    session.removeAttribute("username");
    session.invalidate();
    response.sendRedirect("index.jsp");
     %>
</body>

利用cookie儲存使用者名稱,當我們登出且關閉瀏覽器後下次登入實現使用者名稱已填

- 首先在userLogin.jsp中加入如下程式碼

    <%
        String username="";
        Cookie[] cookies = request.getCookies();//利用request獲取cookie的值
        if (cookies != null) {
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies[i];
                if (cookie.getName().equals("user")) {
                    username=cookie.getValue();//如果和預設值相同,則將cookie值賦值給username
                }
            }
        }
    %>
  • 修改userLoginSuccess.jsp中程式碼
<body>
    <%
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if((username.equals("系統管理員")&&password.equals("123"))){//只有是系統管理員才增加cookie
            Cookie cookie = new Cookie("user",username);
            cookie.setMaxAge(60*60);//設定cookie的生存週期
            response.addCookie(cookie);
            session.setAttribute("user", username);
            response.sendRedirect("index.jsp");
        }else{
            request.setAttribute("mess", "登入失敗,使用者名稱或密碼輸入不正確!");
            request.getRequestDispatcher("userLogin.jsp").forward(request, response);
        }
     %>
</body>
  • 重新開啟瀏覽器登入後的效果
    這裡寫圖片描述


    application中儲存的資料在整個web專案中都可以使用,所以通常用來計數,比如一個網頁被瀏覽的次數就是用application來實現

  • 在userLogin.jsp中增加如下程式碼,實現知道你是第幾個註冊的人
    <%
        Object count = application.getAttribute("count");
        if(count==null){
            application.setAttribute("count", new Integer(1));
        }else{
            application.setAttribute("count", (Integer)application.getAttribute("count")+1);
        }
        count = application.getAttribute("count");
        out.println("你是第"+count+"個註冊的人");
     %>
  • 效果如下這裡寫圖片描述


  • 總結:上面的例子可以比較簡單的概括,session可以實現在多個頁面中顯示使用者資訊,cookie可以實現自動填寫使用者名稱(當然可以自動填寫密碼,但是公共場合下或大部分情況下較隱私的資訊不建議用cookie儲存)application則可以實現統計頁面的訪問次數,這個訪問可以是不同的瀏覽器。希望對大家有點幫助~