04_web基础()之cookie操作
Posted newandhui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了04_web基础()之cookie操作相关的知识,希望对你有一定的参考价值。
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 }
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 }
以上是关于04_web基础()之cookie操作的主要内容,如果未能解决你的问题,请参考以下文章