Cookie,Session,Application例項
阿新 • • 發佈:2019-01-14
最近學習了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則可以實現統計頁面的訪問次數,這個訪問可以是不同的瀏覽器。希望對大家有點幫助~