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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

会话技术Cookie

發(fā)布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 会话技术Cookie 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.會話技術(shù)的概念
  • 會話∶瀏覽器和服務(wù)器之間的多次請求和響應(yīng)。
  • 為了實(shí)現(xiàn)一些功能,瀏覽器和服務(wù)器之間可能會產(chǎn)生多次的請求和響應(yīng),從瀏覽器訪問服務(wù)器開始,到訪問服務(wù)器結(jié)束(關(guān)閉瀏覽器、到了過期時間)。這期問產(chǎn)生的多次請求和響應(yīng)加在一起就稱之為瀏覽器和服務(wù)器之間的一次會話。
  • 會話過程中所產(chǎn)生的一些數(shù)據(jù),可以通過會話技術(shù)( Cookie和Session )保存。
2.Cookie的概念
  • Cookie :客戶端會話管理技術(shù)把要共享的數(shù)據(jù)保存到客戶端。
  • 每次請求時,把會話信息帶到服務(wù)器端,從而實(shí)現(xiàn)多次請求的數(shù)據(jù)共享!
  • 作用:可以保存客戶端訪問網(wǎng)站的相關(guān)內(nèi)容,從而保證每次訪問時先從本地緩存中就取,以此提高效率
  • -cookie有大小和個數(shù)限制:每個網(wǎng)站最多只能存20個Cookie,所有網(wǎng)站加起來最多只能存300個Cookie。每個Cookie的大小不能超過4KB
3.Cookie的添加和獲取
//cookie把數(shù)據(jù)保存在客戶端 //Session把數(shù)據(jù)保存在服務(wù)端,且依賴于cookie @WebServlet("/ServletDemo1") public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設(shè)置請求字符編碼,防止亂碼req.setCharacterEncoding("utf-8");//設(shè)置瀏覽器響應(yīng)編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//1.通過響應(yīng)對象寫出提示信息PrintWriter pw = resp.getWriter();pw.write("最后瀏覽時間為<br/>");//2.創(chuàng)建Cookie對象,用于記錄最后訪問時間Cookie cookie = new Cookie("time", System.currentTimeMillis() + "");//3.設(shè)置最大存活時間cookie.setMaxAge(3600);//4.將cookie對象添加到客戶端resp.addCookie(cookie);//5.獲取cookieCookie[] cookies = req.getCookies();for (Cookie c : cookies) {//if("time".equals(c.getName())){if(c.getName().equals("time")){String value = c.getValue();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write(sdf.format(new Date(Long.parseLong(value))));}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }
4.Cookie的路徑限制

【取自第一次訪問的資源路徑前綴,只要以這個前綴為開頭(包括子級路徑)。獲取到反之獲取不到】
@WebServlet("/servlet/aaa/ServletDemo4")可以獲取到
@WebServlet("/bbb/servlet/ServletDemo5")不可以獲取

//cookie的路徑限制 @WebServlet("/servlet/ServletDemo3") //取自第一次訪問的資源路徑前綴,只要以這個前綴為開頭(包括子級路徑)。獲取到反之獲取不到 public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//創(chuàng)建Cookie并添加Cookie cookie = new Cookie("username", "zhangsan");cookie.setMaxAge(3600);//sresp.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }
5.例子:最后瀏覽時間
@WebServlet("/ServletDemo2") public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設(shè)置請求字符編碼,防止亂碼req.setCharacterEncoding("utf-8");//設(shè)置瀏覽器響應(yīng)編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//1.獲取所有的Cookie對象//需要加非空判斷PrintWriter pw = resp.getWriter();Cookie[] cookies = req.getCookies();if(cookies==null){//如果為空,說明第一次訪問,使用Cookie記錄這一次訪問的時間Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");cookie.setMaxAge(3);resp.addCookie(cookie);pw.write("歡迎光臨,第一次訪問");return;}//2.查找lasttime名稱的Cookie是否存在int index = -1;for (int i = 0; i < cookies.length; i++) {//可以加個cookies[i]判空if (cookies[i].getName().equals("lasttime")) {index = i;break;}}//如果不存在,說明第一次訪問,使用Cookie記錄這一次訪問的時間if (index == -1) {Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");cookie.setMaxAge(3);resp.addCookie(cookie);pw.write("歡迎光臨,第一次訪問");}//如果存在,說明不是第一次訪問,使用Cookie響應(yīng)給瀏覽器這一次的時間if (index != -1) {String value = cookies[index].getValue();SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write("歡迎回來,上次訪問時間</br>" + sdt.format(new Date(Long.parseLong(value))));//并設(shè)置新時間cookies[index].setValue(System.currentTimeMillis() + "");resp.addCookie(cookies[index]);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

總結(jié)

以上是生活随笔為你收集整理的会话技术Cookie的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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