Java--javaweb的cookie和session的差別和代碼執行個體
- 一、cookie和session
-
- 1. cookie
-
- 1.1.cookie的作用
- 1.2.執行個體代碼
- 2.session
-
- 2.1.含義
- 2.2.執行個體代碼
一、cookie和session
1. cookie
1.1.cookie的作用
cookies是用戶端請求浏覽器攜帶的一個資訊,相當于門票一樣。
一個浏覽器的cookies是否有上線
1.一個cookies隻能儲存一個資訊
2.一個web站點可以給一個浏覽器發送多個cookies,最多存放20個cookies
3.cookies的大小有限制4kb
4.浏覽器上限300個cookies
cookie的有效期設定:
1.不設定有效期,關閉浏覽器,自動失效
2.設定浏覽器的cookies 的有效期為0
1.伺服器會給一個使用者建立一個Session
2.一個Seesion獨占一個浏覽器,隻要浏覽器沒有關閉,則這個Seesion會一直存在
3.使用者登入之後,整個網站它都可以通路,儲存使用者的資訊
1.2.執行個體代碼
package com.zhenwe.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
//儲存使用者上一次儲存的時間
public class ServeletCookieSession extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//伺服器把用戶端通路就儲存為一個cookie
//解決亂碼問題
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//擷取一個輸出的執行個體
PrintWriter out=resp.getWriter();
//從用戶端請求擷取cookies
Cookie[] cookies=req.getCookies();//從這裡擷取數組,說明cookies可能有多個
//判斷Cookies是否存在
if (cookies!=null){
out.print("你上次通路的時間為:");
//通路時攜帶cookies與浏覽器存在的cookie進行比對
for (int i = 0; i < cookies.length; i++) {
Cookie cookie=cookies[i];
if (cookie.getName().equals("lastLoginTime")){
//如果存在cookies,則擷取cookies中的key 值,将擷取的key值轉換為時間類型顯示
long lastLoginTime=Long.parseLong(cookie.getValue());
Date date=new Date(lastLoginTime);
//輸出時間類型展示
out.print(date.toLocaleString());
}
}
}else{
out.print("這是您第一次通路");
}
//服務端從用戶端響應一個cookies
Cookie cookie=new Cookie("lastLoginTime",System.currentTimeMillis()+"");
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
程式在運作過程中調用的方法
1.Cookie[] cookies=req.getCookies();//擷取請求中所有的cookies
2.cookie.getName()//擷取cookies的key
3.cookie.getValue()//擷取cookies的值
4.Cookie cookie=new Cookie(“lastLoginTime”,System.currentTimeMillis()+"");//建立一個cookies,存放key值
5.cookie.setMaxAge(246060);//設定cookie的有效期,這裡機關為分鐘
6.resp.addCookie(cookie);//響應給用戶端一個cookies
2.session
2.1.含義
session 是由伺服器自己建立,用來辨別體的使用者,這個機制相當于購物車,記錄用戶端通路的記錄資訊,一個使用者整個網站中經常會使用的資料,都會儲存在session中,當客戶再次通路伺服器時,可以使用這個session,避免資源的浪費。
設定session的有效期方法:
1.手動登出(比較高效)
HttpSession session=req.getSession();
session.removeAttribute(“name”);
//手動登出session
session.invalidate();
2.在web.xml中 設定session的過期時間
<session-config>
<!--15分鐘後session自動失效-->
<session-timeout>1</session-timeout>
</session-config>
<description>
2.2.執行個體代碼
package com.zhenwei.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
public class SessionDemio extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解決亂碼問題
resp.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//從請求中得到Seesion
HttpSession Session=req.getSession();
//給Session中存東西
Session.setAttribute("name","振威");
//擷取Session的key值
String SessionID=Session.getId();
//判斷Session是否建立成功
if (Session.isNew()){
resp.getWriter().write("Session已經建立成功,ID"+SessionID);
}
else resp.getWriter().write("Session未建立成功,ID");
//session在建立的時候做了什麼事
Cookie cookie=new Cookie("HGFIKJ",SessionID);
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}