码迷,mamicode.com
首页 > Web开发 > 详细

04_web基础()之cookie操作

时间:2018-04-10 13:28:56      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:web基础   客户   com   print   val   getname   http   pac   丢失   

30、31、32、Cookie的操作:

1):创建Cookie和设置共享数据:
  Cookie c = new Cookie(String name,String value);
  Cookie c = new Cookie("curreentName","wuji");
2):把Cookie放入响应中,把Cookie的共享数据传递给浏览器,由浏览器保存.
  response对象.addCookie(c);
3):获取Cookie和Cookie中的数据.(从请求中获取)

4):Cookie的name和value不支持中文.
   解决方案:对中文做编码和解码.
//放:
 String msg="你好";
        String encode = URLEncoder.encode(msg, "UTF-8");
        System.out.println(encode);
        Cookie c2 = new Cookie("curreentName2",encode);
//取:
            String name = cookie.getName();
            String value = cookie.getValue();
            String decode = URLDecoder.decode(value, "UTF-8");

5):修改Cookie指定名的value值.
   方式1: 根据name获取被修改的Cookie对象,在调用setValue方法即可.
   方式2: 重新创建一个同名的Cookie.

   注意:修改之后,要调用response对象.addCookie(c);

6):Cookie的生命周期:(Cookie中的共享数据可以保留多久)
   缺省情况:关闭浏览器Cookie就丢失了.
   通过Cookie对象的setMaxAge(int seconds):设置Cookie可以存活多久.
      seconds>0:可以存活多少秒.
      seconds<0:存放在浏览器进程中,闭浏览器Cookie就丢失了.
      seconds=0:删除Cookie.
7):删除Cookie:
   Cookie对象.setMaxAge(0);
8):Cookie的缺陷.(重点中的重点)
   1>:中文处理麻烦.
   2>:多人共用同一台电脑,信息不安全.
   3>:一个Cookie只能存储一个简单类型的数据.
      若要同时存储,账号,密码,邮件等等.
      主要的原因是:Cookie的value只能存储String,不能存Object.
   4>:Cookie的大小和数量限制:
        Cookie大小限制在4KB之内;
       * 一台服务器在一个客户端最多保存20个Cookie;
       * 一个浏览器最多可以保存300个Cookie;
   5>:Cookie的原理:把共享数据存储在浏览器中.
         每次请求,再把共享数据带到服务端.

代码:

技术分享图片
 1 package com.day07.web.demo2.controller;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.Cookie;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.io.IOException;
10 import java.io.PrintWriter;
11 
12 /**
13  * Created by Administrator on 2017/12/7.
14  */
15 @WebServlet("/cookie")
16 public class CookieServlet extends HttpServlet {
17     @Override
18     public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19         //请求乱码处理
20         req.setCharacterEncoding("utf-8");
21         //响应乱码处理
22         resp.setContentType("text/html;charset=UTF-8");
23         //操作cookie
24 
25         //增加
26         Cookie cookie1 = new Cookie("name1","wuji1");
27         resp.addCookie(cookie1);
28         Cookie cookie2 = new Cookie("name2","wuji2");
29         resp.addCookie(cookie2);
30         //删除
31        /* 6):Cookie的生命周期:(Cookie中的共享数据可以保留多久)
32                 缺省情况:关闭浏览器Cookie就丢失了.
33                 通过Cookie对象的setMaxAge(int seconds):设置Cookie可以存活多久.
34                 seconds>0:可以存活多少秒.
35                 seconds<0:存放在浏览器进程中,闭浏览器Cookie就丢失了.
36                 seconds=0:删除Cookie.
37         7):删除Cookie:
38         Cookie对象.setMaxAge(0);*/
39         cookie1.setMaxAge(0);
40         //必须  resp.addCookie(cookie); 才可以生效
41         resp.addCookie(cookie1);
42         //修改
43 
44         //查询
45 
46         //获取输出对象
47         PrintWriter writer = resp.getWriter();
48         //输出信息
49         writer.println("你好师姐!");
50 
51 
52     }
53 }
CookieServlet

 

技术分享图片
 1 package com.day07.web.demo2.controller;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.Cookie;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.io.IOException;
10 import java.io.PrintWriter;
11 
12 /**
13  * Created by Administrator on 2017/12/7.
14  */
15 @WebServlet("/cookie2")
16 public class Cookie2Servlet extends HttpServlet {
17     @Override
18     public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19         //请求乱码处理
20         req.setCharacterEncoding("utf-8");
21         //响应乱码处理
22         resp.setContentType("text/html;charset=UTF-8");
23         //操作cookie
24 
25         //删除
26         //修改
27 
28         //查询
29         Cookie[] cookies = req.getCookies();
30         for (int i=0;i<cookies.length;i++){
31             Cookie cookie = cookies[i];
32             //取key
33             String name = cookie.getName();
34             //取值
35             String value = cookie.getValue();
36             //打印
37             System.out.println(name+"="+value);
38 
39             cookie.setValue("zhaoming");
40             resp.addCookie(cookie);
41         }
42 
43         //获取输出对象
44         PrintWriter writer = resp.getWriter();
45         //输出信息
46         writer.println("你好师姐----获取cookie的数据!");
47 
48 
49     }
50 }
Cookie2Servlet

04_web基础()之cookie操作

标签:web基础   客户   com   print   val   getname   http   pac   丢失   

原文地址:https://www.cnblogs.com/newAndHui/p/8777916.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!