cookie & session
一诀豁、簡介
- 會話 瀏覽器打開到關閉的整個過程
- 會話技術 記錄會話中客戶端的狀態(tài)和數(shù)據(jù)窄刘,分為cookie和session
- cookie 數(shù)據(jù)存儲在客戶端本地,優(yōu)點可以減少服務器端的壓力舷胜,缺點安全性差
- session 數(shù)據(jù)存儲在服務器端娩践,優(yōu)點安全性好,缺點服務器壓力大
二烹骨、cookie
2.1 創(chuàng)建cookie
Cookie cookie = new Cookie("roomid","1205");
//最大保存時間翻伺,單位秒
cookie.setMaxAge(10*60);
//設置只在此映射路徑訪問時攜帶該cooki
cookie.setPath("/hcsdemo1/main");
response.addCookie(cookie);
刪除cookie,只需要設置同名同路徑的cookie生存時間為0沮焕,就可以立即銷毀該cookie吨岭。
2.2 獲取cookie
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("roomid")){
System.out.println("roomid : "+cookie.getValue());
}
}
三、session
- 當客戶端第一次訪問到Servlet時峦树,服務器會創(chuàng)建一個session辣辫,并有session的id,再返回給客戶端魁巩。
當下次訪問時急灭,請求會攜帶該session,服務器會查找谷遂,查不到葬馋,或者沒有攜帶,服務器都會重新創(chuàng)建肾扰。 - 瀏覽器關閉時畴嘶,cookie中的session會默認清除
需要持久化session的地方,如登錄成功后
//jsp如果在@page中不設置集晚,則會默認生成
session.setAttribute("roomnumber","1205");
//session持久化
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60*60*24);
cookie.setPath("/hcsdemo1");
//返回給瀏覽器
response.addCookie(cookie);
獲取持久化的session窗悯,如在登錄之前,判斷偷拔,可免登陸蒋院,直接跳轉到主界面
session = request.getSession();
String roomnumber = (String) session.getAttribute("roomnumber");
if (roomnumber != null) {
if (roomnumber.equals("1205")) {
//執(zhí)行后,未執(zhí)行的代碼將不再執(zhí)行
response.sendRedirect("main"); //路徑可以是相對的条摸,也可以是絕對的
//使用定時跳轉悦污,下方的代碼會執(zhí)行
// String path = request.getContextPath();
// String target = "main";
// String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/" + target;
//
// Integer staytime = 0;
//
// String content = staytime + ";URL=" + basePath;
//
// response.setHeader("REFRESH", content);
}
}