您好,登錄后才能下訂單哦!
這篇文章主要講解了“JavaWeb Cookie和Session的概念是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JavaWeb Cookie和Session的概念是什么”吧!
會話: 用戶打開了一個瀏覽器,點擊了很多超鏈接,訪問多個web次元,關(guān)閉瀏覽器,這個過程可以稱之為會話
有狀態(tài)會話: 帶有訪問記錄的會話
1.服務(wù)端會給客戶端一個cookie,客戶端下次訪問時攜帶cookie訪問就可以了 cookie
2.服務(wù)端登記客戶端訪問過,下次訪問時匹配到客戶端; session
cookie
客戶端技術(shù)(響應(yīng),請求)
session
服務(wù)器技術(shù),利用這個技術(shù),可以保存用戶的會話信息,可以把信息或者數(shù)據(jù)保存在Session中。
常見場景:網(wǎng)站登錄之后,下次不用再登錄了,第二次訪問直接就上去了!
1.從請求中拿到cookie信息
2.服務(wù)器響應(yīng)給客戶端cookie
cookie相關(guān)方法:
Cookie[] cookies = req.getCookies(); //獲得cookie cookie.getName() //獲得cookie中的鍵 cookie.getValue() //獲得cookie中的值 new Cookie("LastLoginTime",System.currentTimeMillis()+"") //新建一個cookie cookie.setMaxAge(24*60*60); //設(shè)置cookie有效期 resp.addCookie(cookie); //響應(yīng)給客戶端一個cookie
案例:
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解決中文亂碼 req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html; charset=utf-8"); PrintWriter out = resp.getWriter(); Cookie[] cookies = req.getCookies(); //判斷cookie是否存在 if(cookies == null){ out.println("第一次訪問網(wǎng)站"); }else{ out.write("您上一次訪問的時間是:"); for (Cookie cookie : cookies) { if("LastLoginTime".equals(cookie.getName())){ //獲取cookie中的值 long time = Long.parseLong(cookie.getValue()); Date date = new Date(time); DateFormat dfd = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA); DateFormat dft = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA); out.write(dfd.format(date)+dft.format(date)); } } } Cookie cookie = new Cookie("LastLoginTime",System.currentTimeMillis()+""); //設(shè)置cookie有效期為一天 cookie.setMaxAge(24*60*60); resp.addCookie(cookie); }
cookie:一般會保存在本地的用戶目錄下appdate;
一個網(wǎng)站cookie是否存在上限?
一個cookie只能保存一個信息;
一個web網(wǎng)站可以給瀏覽器發(fā)送多個cookie,最多存放20個cookie;
cookie大小有限制4kb
300個cookie瀏覽器上限
刪除cookie:
不設(shè)置有效期,關(guān)閉瀏覽器,自動失效;
設(shè)置有效期時間為0;
注意:在cookie的值為中文時最好使用URLEncoder.encode()來進行編碼,防止中文亂碼。取值時用URLDecoder.decode()來解碼。
什么事session:
服務(wù)器會給每一個用戶創(chuàng)建一個session對象
一個session獨占一個瀏覽器,只要瀏覽器沒有關(guān)閉,這個Session就存在;
用戶登錄之后,整個網(wǎng)站都可以訪問 -->保存用戶的信息;
Session常用的方法
Session和cookie的區(qū)別:
Cookie是把用戶的數(shù)據(jù)寫到用戶的瀏覽器,瀏覽器保存(可以保存多個)
session把用戶的數(shù)據(jù)寫到用戶獨占的Session中,服務(wù)器端保存(保存重要的信息,減少服務(wù)器資源的浪費)
session對象由服務(wù)器創(chuàng)建;
使用場景:
保存一個登錄用戶的信息;
購物車信息;
在整個網(wǎng)站中經(jīng)常會使用的數(shù)據(jù),我們將它保存到Session中;
使用session:
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解決亂碼 req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html; charset=utf-8"); PrintWriter out = resp.getWriter(); //得到Session HttpSession session = req.getSession(); //給session中存東西 session.setAttribute("name",new Person("張三",18)); //獲取session的id String id = session.getId(); //判斷session是不是新創(chuàng)建的 if(session.isNew()){ out.write("session創(chuàng)建成功,ID:"+id); }else{ out.write("session已經(jīng)存在,id:"+id); } //Session創(chuàng)建的時候做了什么事 // Cookie jsessionid = new Cookie("JSESSIONID", id); // resp.addCookie(jsessionid); } //Person類 public class Person { private String name; private int age; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
獲取session中的信息
//得到Session HttpSession session = req.getSession(); Person name = (Person) session.getAttribute("name"); System.out.println(name);
注銷session
//得到Session HttpSession session = req.getSession(); session.removeAttribute("name"); //注銷session session.invalidate();
會話自動過期:web.xml配置
<!-- 設(shè)置Session的默認(rèn)失效時間--> <session-config> <!-- 15分鐘后session自動失效,以分鐘為單位--> <session-timeout>15</session-timeout> </session-config>
感謝各位的閱讀,以上就是“JavaWeb Cookie和Session的概念是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對JavaWeb Cookie和Session的概念是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。