session和cookie的區別:
一、session是保存在服務器端,cookie是保存在客戶端。
二、session能夠保存任何對象,cookie只能保存字符串對象。
三、session更安全,cookie不安全,不能存儲敏感數據,對保存的數據進行加密處理。
四、session默認過時時間30分鐘,cookie默認過時時間關閉瀏覽器後。
五、session適合保存客戶狀態,cookie適合保存持久化的數據狀態。java
1.Session對象web
session機制是一種服務器機制,在服務器保存信息,當程序接收到客戶端的請求時,服務器首先會檢查這個客戶端是否已經建立了Session.瀏覽器
session保存數據:tomcat
session.setAttribute(String key,Object value)安全
session中讀取數據:服務器
(Object)session.getAttribute(String key)cookie
方法 | 返回值類型 | 說明 |
setAttribute(String key,Object value) | void | 以key-vlaue的形式保存對象值 |
getAttribute(String key) | Object | 經過key獲取對象值 |
getId() | String | 獲取sessionID |
Invalidate | void | 設置session對象失效 |
setMaxInactiveInterval(int interval) | void | 設置session的有效期 |
removeAttribute(String key) | void | 移除session中的屬性 |
註冊頁面session
if(username.equals("admin")){ //不容許註冊,返回註冊頁面 request.setAttribute("mess", "註冊失敗,請使用其餘用戶名"); //response.sendRedirect("login.jsp");//返回註冊頁面沒有任何提示信息(實現頁面跳轉) request.getRequestDispatcher("login.jsp").forward(request, response);//返回註冊頁面並提示信息 }else{ //註冊成功 session.setAttribute("user", username);//session保存數據 response.sendRedirect("newsDetail.jsp"); }
註冊成功 後跳轉到的頁面app
<% Object o=session.getAttribute("user"); if(o==null){ //顯示用戶名密碼,可在此登錄(java代碼和HTML代碼結合使用狀況) %> <label>用戶名</label><input type="text" name="uname" /><label>密碼</label><input type="text" name="upassword" /><button>登陸</button> <% }else{ //顯示「歡迎你,xxx」 out.print("歡迎你,"+o.toString()); } %>
session有效期的設置jsp
if(username.equals("admin")){ //不容許註冊,返回註冊頁面 request.setAttribute("mess", "註冊失敗,請使用其餘用戶名"); //response.sendRedirect("login.jsp");//返回註冊頁面沒有任何提示信息(實現頁面跳轉) request.getRequestDispatcher("login.jsp").forward(request, response);//返回註冊頁面並提示信息 }else{ //註冊成功 session.setAttribute("user", username);//session保存數據 //session.setMaxInactiveInterval(10);//設置有效期爲10秒 response.sendRedirect("newsDetail.jsp"); }
<% Object o=session.getAttribute("user"); if(o==null){ //顯示用戶名密碼,可在此登錄(java代碼和HTML代碼結合使用狀況) %> <label>用戶名</label><input type="text" name="uname" /><label>密碼</label><input type="text" name="upassword" /><button>登陸</button> <% }else{ //顯示「歡迎你,xxx」 out.print("歡迎你,"+o.toString()); %> <a href="userLogout.jsp">註銷</a>//建立註銷連接 <% } %>
tomcat中wed.xml設置失效(這裏10表示10分鐘)
</welcome-file-list>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
Cookie:
Cookie由服務器端 生成,發送給客戶端瀏覽器,瀏覽器會將其保存成某個目錄下的文本文件。
Cookie的應用
1.建立Cookie對象
Cookie cookieName=new Cookie(String key,Object value);
CookieName爲Cookie對象的名稱(本身定義);
String key:Cookie的名稱
value:Cookie所包含的值
2.寫入Cookie
Cookie建立後,須要將其添加到頁面中,調用response對象的public void addCookie(Cookie cookie)方法寫入。
response.addCookie(CookieName);
例子
//註冊成功後
Cookie cookie=new Cookie("user",username); response.addCookie(cookie); cookie.setMaxAge(60*60);//設置保存時間單位秒
response.sendRedirect("userLoginOk.jsp"); }
3.讀取Cookie
Cookie[] cookies=request.getCookie();
例子
<% //讀取Cookie頁面 Cookie[] cookies=request.getCookies(); String user=""; for(int i=0;i<cookies.length;i++){ if(cookies[i].getName().equals("user")){ user=cookies[i].getValue(); } } %> <label>用戶名</label><input type="text" name="uname" value="<%=user%>"/> <%
當在首頁點擊「註銷」按鈕後,用戶名會自動顯示在「用戶名」文本框中。
application
application對象相似於全家變量,每一個Web項目都有application對象,能夠在整個Web項目中共享數據.
setAttribute(String key,Object value) 返回類型void,能夠以key-value形式保存對象值
getAttribute(String key) Object類型,經過key獲取對象值
統計網站訪問人數:
<% Object count=application.getAttribute("count"); if(count==null){ //未訪問過頁面,設置頁面訪問次數爲1 application.setAttribute("count", new Integer(1)); }else{ //已經訪問過了,次數+1 Integer i=(Integer)count; application.setAttribute("count", i.intValue()+1); } Integer icount=(Integer)application.getAttribute("count"); out.print("訪問次數"+icount.intValue()+"次"); %>