日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

servlet设置cookie实验

發(fā)布時(shí)間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 servlet设置cookie实验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【README】 本文旨在 通過servlet 設(shè)置cookie ,查看cookie長(zhǎng)什么樣子,來達(dá)到了解cookie的目的;

cookie作用: 因?yàn)閔ttp協(xié)議是無狀態(tài)的,要想維護(hù)web訪問的狀態(tài),就需要使用專門的技術(shù)解決。cookie 是一種在客戶端保持 http狀態(tài)信息的技術(shù);?

瀏覽器第1次訪問服務(wù)器時(shí),傳入個(gè)人信息,服務(wù)器把這些信息封裝到cookie, 返回給客戶端;(第1次訪問,客戶端沒有傳入 cookie)

瀏覽器第2次訪問服務(wù)器時(shí),會(huì)帶著第1次服務(wù)器響應(yīng)報(bào)文中的cookie 傳給 服務(wù)器,然后服務(wù)器通過 客戶cookie 信息來獲取請(qǐng)求狀態(tài); 即把第1次訪問和第2次訪問當(dāng)做同一個(gè)會(huì)話。 只不過這個(gè)會(huì)話有多個(gè)請(qǐng)求和響應(yīng)。

?

什么是web中的會(huì)話?指的是 瀏覽器與web服務(wù)器之間連續(xù)發(fā)生的一系列請(qǐng)求和響應(yīng)過程;?

web會(huì)話狀態(tài): 指web服務(wù)器與瀏覽器在會(huì)話過程中產(chǎn)生的狀態(tài)信息,借助會(huì)話狀態(tài), 服務(wù)器可以把屬于同一個(gè)會(huì)話的一系列請(qǐng)求和響應(yīng)關(guān)聯(lián)起來,使得他們可以相互依賴,傳遞和共享數(shù)據(jù);?

?

【1】代碼,servlet設(shè)置cookie (本代碼轉(zhuǎn)自張孝祥老師,感謝辛苦付出)

public class CookieServlet1 extends HttpServlet {public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();String name = request.getParameter("name");String nickname = request.getParameter("nickname");if(name == null || nickname == null){out.println("請(qǐng)傳遞參數(shù)name和nickname后繼續(xù)實(shí)驗(yàn)!");return;}/*下面的程序代碼最好改成如下結(jié)構(gòu),以增強(qiáng)代碼的閱讀性:if(…){…return;}…因?yàn)楣P者在后來校對(duì)書稿的過程中,讀到下面的if從句時(shí),腦海里面很自然地出現(xiàn)了“if從句執(zhí)行完后,程序繼續(xù)干了什么?”的疑問 ,如果在if從句中增加了return語句,顯然就不會(huì)產(chǎn)生這種疑問。*/if("".equals(name.trim()) || "".equals(nickname.trim())){out.println("name和nickname不能為空白串");}else{Cookie ckName = new Cookie("name",name);Cookie ckNickname = new Cookie("nickname",nickname);ckNickname.setMaxAge(365*24*3600);Cookie ckEmail = new Cookie("email","test1@it315.org");Cookie ckPhone = new Cookie("phone","1111111");response.addCookie(ckName);response.addCookie(ckNickname);response.addCookie(ckEmail);response.addCookie(ckPhone);/*應(yīng)將下面的代碼設(shè)計(jì)成一個(gè)專門用于查詢某個(gè)名稱的Cookie的方法,然后用這個(gè)方法來查詢名稱為nickname的Cookie值。*/String lastNickname = null;Cookie [] cks = request.getCookies();for(int i=0; cks!=null && i<cks.length; i++){if("nickname".equals(cks[i].getName())){lastNickname = cks[i].getValue();break;} } if(lastNickname != null){out.println("歡迎您,<b><i>" + lastNickname + "</i></b>!<br>");}else{out.println("歡迎您,新客人!<br>");}String cookieHeader = request.getHeader("Cookie");if(cookieHeader != null){out.println("請(qǐng)求頭中的Cookie頭字段如下:<br>");out.println("Cookie: " + cookieHeader + "<br>");}else{out.println("請(qǐng)求頭中沒有Cookie頭字段<br>");}}} }

【2】訪問效果,這是第2次訪問的效果, 即服務(wù)器顯示的是第1次訪問時(shí),服務(wù)器根據(jù)請(qǐng)求信息設(shè)置的cookie?

訪問url:?http://localhost:8080/myweb2/cookie/servlet1?name=zhangsan&nickname=zhangsanhao??

【3】cookie 長(zhǎng)什么樣子呢??

可以參考這篇文章?https://www.cnblogs.com/Marydon20170307/p/11613226.html?

第1步: chrome://settings/cookies?

第2步:查看所有cookie 和 網(wǎng)站數(shù)據(jù);?

第3步: 搜索 localhost 域名的cookie

上圖,我們就看到了cookie的真面目,共計(jì)4個(gè);?

?

補(bǔ)充: 本文只是簡(jiǎn)要展示了cookie是什么?作用以及它的樣子。 cookie還有其他東西,比如生命周期....... 大家可以參考其他資料?

?

總結(jié)

以上是生活随笔為你收集整理的servlet设置cookie实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。