cookie技術是客戶端
cookie技術是一個打開瀏覽器訪問某個站點(網頁等),到關閉相關瀏覽器成功之間的一個會話。
他也就是字面意義上的緩存。
它是面向客戶端的一個技術。
重點是服務器如何將cookie發送到客戶端,
服務器如何接受客戶端攜帶的cookie。
服務器→客戶端cookie(響應頭發送)
它的操作:
創建對象
Cookie cookie =new Cookie(“name”,“iPhone 11”); 鍵值對方式。不可以存中文。
cookie.setMaxAge(60*2);設置cookie在客戶端的存取時間。
設置cookie的攜帶路徑,也就是只有訪問規定的路徑的時候才能訪問成功。
cookie.setPath("/WEB05");訪問包下的所有都可以
cookie.setPath("WEB05/SendCookidServlet");訪問固定路徑
cookie.setPath("/");訪問所有的資源路徑
如果不寫的話可以訪問該cookie的所有可攜帶路徑
Cookie不能存儲中文
//獲取session對象 HttpSession session=request.getSession(); //向session域中賦值 session.setAttribute("name", "花開不紀年"); //獲取當前JSESSIONID------為了不讓瀏覽器關了就沒有,用同名的cookie對象替代一次會話結束就消失的cookie對象。 String id=session.getId(); //創建cookie對象 Cookie cookie=new Cookie("JSESSIONID",id); //設置持久化時間 cookie.setMaxAge(60*2); //設置攜帶路徑 cookie.setPath("/WEB06"); //發送cookie response.addCookie(cookie);
cookie因為是客戶端,所以它是
向客戶端發送cookie
response.addCookie(cookie);
如果想要刪除cookie就是頂一個一個同名的持久化cookie來進行覆蓋。
Session技術(服務器)
它相當於起一個中轉的作用,同時它還是一個域。
//獲取當前請求客戶端的session對象,只要不關閉瀏覽器,就用的是一個session HttpSession session=request.getSession();
setAttribute(name,value);
getAttribute(name);
后面用的非常之多。
request.setCharacterEncoding("UTF-8"); List<Fuwu> list=fuwuService.getZixun(); request.setAttribute("GetFuwu", list); request.getRequestDispatcher("/right.jsp").forward(request, response); 如這里就是獲取到service層的方法,然后將其集合存儲到session域中,並且請求轉發到right.jsp文件,jsp文件就可以通過域名,來循環遍歷域中值。
它的流程是當客戶端請求服務器時,Session域調用HttpSession session=request.getSession();
給每一個請求的對象都創一個session域,並且獲得JSEESIONID響應給客戶端。
然后客戶端就可以拿着JESSSIONID用Cookie再去請求結算,服務器拿着id去session域尋找,完成后SET-Cookie響應給客戶端信息。 注意:一次響應結束,因為cookie一次會話結束的技術不會再響應,如果重新獲取的請求需要創建新的域。
如果不想關閉瀏覽器重新創建session,需要用cookie技術的同名同路徑持久化時間設置的長一些。
生命周期時候調用request.getSession時創建。
創建時機
1:這個瀏覽器在servlet中第一次使用session的時候會創建;
2:這個瀏覽器第一次訪問jsp的時候,服務器也會為這個瀏覽器創建一個session對象;
2:銷毀時機
1:程序員調用invalidate方法;(立刻銷毀)
2:設置的存活時間到了;(默認是30分鍾)
3:服務器非正常關閉;(突然斷電)
30分鍾結束或者關閉瀏覽器。
學習了攜帶web層的登錄驗證和驗證碼校驗,區別是web層代替cotroller+view層