Cookie,Session基础知识
生活随笔
收集整理的這篇文章主要介紹了
Cookie,Session基础知识
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
//這部分主要是CookieSession的筆記部分/** //獲取來訪的客戶端類型String clientTye=req.getHeader("User-Agent");//如果是火狐瀏覽器,那么使用以下代碼if(clientTye.contains("Firefox")){fileName=DownLoadUtil.base64EncodeFileName(fileName);}else{//IE,或者是谷歌瀏覽器//對中文的名字進(jìn)行編碼處理fileName=URLEncoder.encode(fileName,"UTF-8");}*///DownLoadUtil部分是Base64的代碼部分。如下/** //Base4加密解密方式public class DownLoadUtil {public static String base64EncodeFileName(String fileName) {BASE64Encoder base64Encoder = new BASE64Encoder();try {return "=?UTF-8?B?"+ new String(base64Encoder.encode(fileName.getBytes("UTF-8"))) + "?=";} catch (UnsupportedEncodingException e) {e.printStackTrace();throw new RuntimeException(e);}}
}*///重定向問題的兩種寫法//1.早期寫法:/*設(shè)置狀態(tài)碼?重新定位狀態(tài)碼resp.setStatus(302);定位跳轉(zhuǎn)的位置是哪一個頁面resp.setHeader("location","sucess-login.html");2.直接跳轉(zhuǎn)的寫法跳轉(zhuǎn)到成功的界面resp.sendRedirect("sucess-login.html");*//*######請求轉(zhuǎn)發(fā)的問題* //請求轉(zhuǎn)發(fā)的寫法://req.getRequestDispatcher("sucess-login.html").forward(req, resp);*//** ###Cookie學(xué)習(xí)筆記* 直譯餅干的意思,其實是一份小數(shù)據(jù),是服務(wù)器給客戶端的,并且存在客戶端上的一份小數(shù)據(jù) * * 應(yīng)用場景:自動登錄,瀏覽記錄,購物車* * ###為什么要有這個Cookie?* http的請求是無狀態(tài)。客戶端與服務(wù)器在通訊的時候,是無狀態(tài)的,其實就是客戶端在第二次來訪的時候,服務(wù)器根本不知道* 這個客戶端以前有沒有來訪問過。為了更好的用戶體驗,更好的交互。* 其實從公司層面講,就是為了更好的收集客戶信息* * * ###Cookie怎么用?* 創(chuàng)建CookieDemo01* 添加Cookie給客戶* 1.在響應(yīng)的時候,添加Cookie* Cookie cookie=new Cookie("name", "zyz");* 給響應(yīng)添加一個cookie* resp.addCookie(cookie);* * 2客戶端收到的信息里面,響應(yīng)頭中多了一個字段Set-Cookie* * * *###獲取客戶端帶過來的Cookie* //獲取客戶端帶過來的cookieCookie[] cookies=req.getCookies();if(cookies!=null){for(Cookie c:cookies){String cookieName=c.getName();String cookieValue=c.getValue();System.out.println(cookieName+"=="+cookieValue);}}###cookie的有效期,
默認(rèn)情況下,關(guān)閉瀏覽器后,Cookie就沒有了。expiry:有效----------->有效值以秒計算
正值:表示在這個數(shù)字之后,cookie將會失效
負(fù)值,表示關(guān)閉瀏覽器,那么cookie就會失效,默認(rèn)是值是-1####常用方法
//設(shè)置Cookie的周期cookie.setMaxAge(60);//賦值新的值//cookie.setValue(newValue);//用于指定只有請求了指定的域名,才會帶上該cookie//cookie.setDomain("");//只有訪問該域名下的cookieDemo的這個路徑地址才會帶cookie//cookie.setPath("/cookieDemo");###例子---->顯示最近訪問的時間
獲取帶過來的cookie1.沒有cookie第一次登錄1輸出登錄成功或者失敗2給客戶端添加cookienew Cookie("last",時間)2有cookie第二次登錄1.輸出成功或者失敗2獲取以前的cookie#####Cookie的安全問題
由于Cookie會保存在客戶端上,所以有安全隱患問題,還有一個問題,Cookie的大小與個數(shù)有限制,
為了解決問題------->Session####Session
會話,Session是給予Cookie的一種會話機制,Cookie是服務(wù)器返回一小份數(shù)據(jù)給客戶端,并且
存放在客戶端上,Session是,數(shù)據(jù)存放在服務(wù)器端。####Session常用的API//獲得會話HttpSession session=req.getSession();//得到會話的idString id=session.getId();//存值session.setAttribute("name","value");//取值session.getAttribute("name");//移除值session.removeAttribute("name");###Session的創(chuàng)建和銷毀創(chuàng)建
如果有在Servlet里面調(diào)用了request.getSession()銷毀
Session是存放在服務(wù)器的內(nèi)存中的一份數(shù)據(jù),當(dāng)然可以持久化,Redis.即使關(guān)了瀏覽器,Session也不會銷毀銷毀方法1關(guān)閉服務(wù)器2 Session會話時間結(jié)束,默認(rèn)有效期30分鐘*/
?
轉(zhuǎn)載于:https://www.cnblogs.com/byczyz/p/11337492.html
總結(jié)
以上是生活随笔為你收集整理的Cookie,Session基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记忆的证明剧情介绍
- 下一篇: 随笔--互联网进化论