Cookie

Cookie

cookie工作的原理

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。

Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

Cookie适用于那些需要跨越许多页面的信息。
Cookie是属于浏览器端的技术。
Cookie的原理:把共享数据存储在浏览器中.
每次请求,再把共享数据带到服务端

怎么使用cookie
①创建cookie

代码实例:

protected void service(HttpServletRequest req, HttpServletResponse resp) throws Exception{
	//设置编码
	req.setCharacterEncodeing("UTF-8");
	resp.setContentType("text/html;charset=utf-8");
	//拿到传过来的数据
	String date = req.getParameter("name");
	//创建一个cookie,并将获取的信息保存到cookie中
	Cookie cookie = new Cookie("name",date);
	//将cookie发送到浏览器
	resp.addCookie(cookie);
}

通常cookie会在Http头信息中传递给浏览器

HTTP/1.1 200 OK
Set-Cookie: name=xyz;
Content-Type: text/html

浏览器中的cookie也是通过请求头的方式传递到服务器

Cookie:name=xyz;
②得到cookie
//拿到浏览器传过来的Cookie数组
Cookie[] cookies = req.getCookies();
//如果数组不为空则遍历数组找到我们需要的值
if(cookies!=null){
	//遍历
	for(Cookie cookie:cookies){
		//获取cookie的名称
		String cookieName = cookie.getName();
		//如果cookieName等于需要的值的名称则取出
		if(cookieName.equals("name")){
			//得到需要找到的值
			String name = cookie.getValue();
		}
	}
}
③解决中文问题

好像Cookie是不支持中文的(怎么办)
我们就需要进行编码与解码……

在WEB程序中怎么解决:

编码:

String text = "这是一串中文字符";
//对该字符串进行编码处理
String text_encode = URLEncoder.encode(text,"UTF-8");

解码:

String text = URLDecode.decode(text_encode,"UTF-8");

在 Tomcat7中,也是不支持中文的

④修改Cookie

修改cookie的第一种方式

拿到原来的cookie,设置它的value→cookie.setValue(“xxxxxxxxxx”)

代码示例:

//拿到浏览器传过来的Cookie数组
Cookie[] cookies = req.getCookies();
//如果数组不为空则遍历数组找到我们需要的值
if(cookies!=null){
	//遍历
	for(Cookie cookie:cookies){
		//获取cookie的名称
		String cookieName = cookie.getName();
		//如果cookieName等于需要的值的名称则取出
		if(cookieName.equals("name")){
			//设置cookie的值
			cookie.setValue("xxxxxxxxx");
			//将修改后的cookie发送给浏览器
			resp.addCookie(cookie);
		}
	}
}

修改cookie的第二种方式

创建一个和原来名称相同的cookie,将它扔给浏览器就可以把原来的cookie重写了

//创建一个新的cookie
Cookie cookie = new Cookie("name","xxxxxx");
//将创建的同名cookie发送给浏览器覆盖前一个cookie
resp.addCookie(cookie);
⑤删除Cookie

Java并没有提供删除Cookie给我们,所以只有设置他的生命周期以尝试达到销毁cookie的目的

cookie.setMaxAge(0);
⑥Cookie的生命周期

创建:Cookie在服务器创建之后放到浏览器中
销毁:如果没有设置setMaxAge关闭浏览器

我们可以自己去设置Cookie的存在时间

cookie.setMaxAge(int second);
//设置存在时间为一周
cookie.setMaxAge(60 * 60 * 24 * 7);
//将设置好的cookie发送到浏览器
resp.addCookie(cookie);

关于setMaxAge(int second)方法的参数设置

正数:代表多少秒
为零:就代表删除
负数:关闭浏览器时删除

思考题:Cookie可以在什么时候使用?

⑦cookie的问题与好处

Cookie的问题

  1. 它还是不安全(cookie存在客户端)
  2. 操作中文太麻烦了
  3. Cookie依然是有限制的
    1. . Cookie大小限制在4KB之内;
    2. . 一台服务器在一个客户端最多保存20个Cookie;
    3. . 一个浏览器最多可以保存300个Cookie;
  4. Cookie不能操作对象

Cookie的好处:可以设置保存很长的时间

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值