Java复习之路(第二十五天 cookie和session)

本文介绍了Java中的Cookie和Session的使用,包括Cookie的API、解决乱码问题、Session的生命周期、作用范围及主要功能。同时讨论了Cookie和Session的区别,强调了它们在数据存储、安全性和限制方面的特点,并提供了实际应用案例。
摘要由CSDN通过智能技术生成

Java基础

会话:从打开浏览器访问服务器开始,到最后关闭浏览器,访问服务区停止为止,这期间产生的多次的请求和响应加在一起,就称之为浏览器和服务器之间的一次会话

再一次会话中往往会产生一些数据,而这些数据往往需要我们保存起来,如何用来保存会话中产生的数据?

可以使用会话的技术中的cookie或者session

Cookie:

cookie保存数据的原理:

1.cookie是将会话中产生的数据保存在客户端的浏览器中,是客户端技术

2.cookie是基于set-cookie响应头和cookie请求头进行工作的

3.其中set-cookie响应头是负责将数据从服务器带回到浏览器中的,让浏览器以cookie的形式保存到浏览器的内部,其中cookie的请求头是将cookie带回到服务器,提供服务器获取并使用

cookie的API

创建cookie的对象

Cookie cookie=new Cookie(string name,string value)
--创建一个cookie对象,同时指定cookie的名字,以及保存到cookie中的value值

将cookie添加到request响应中

request.addCookie(Cookie c)
--将创建的Cookie对象添加到响应中,在发送给浏览器进行保存,这个方法可以进行调用多次,表示可以添加多个cookie到响应中

获取请求中的所有的cookies对象组成的数组

Cookie[] cs=request.getCookies()
--获取请求中的所有的cookie对象组成的数组,但是请求中没有任何的cookie,该方法将返回null

删除cookie

删除cookie的方法1.先进行获取所有的cookie的值,进行循环得遍历,然后获取名称相同的cookie,然后再将cookie的默认的时间更改为0,。方法2.因为浏览器是根据cookie的名称来进行区分cookie的,因此可以向浏览器发送一个重名的cookie,并进行设置cookie的生存的时间,这样操作后发送的cookie就会覆盖之前的cookie(删除),发送后的cookie因为时间设置为0,浏览器收到后同样也会进行立即的删除

		//可以创建同名的cookie
		Cookie cookie=new Cookie("prod", "");
		//将时间设置为0
		cookie.setMaxAge(0);
		//在将cookie发送给浏览器
		response.addCookie(cookie);
		out.write("已经删除名称为prod的cookie....");
		

cookie的常用的方法

cookie.getName()  --获取Cookie的名称
cookie.getValue()  --获取cookie中保存的值
cookie.setValue()  --设置cookie中的值
cookie.setMaxAge()  --设置cookie的最大的生存的年龄

setMaxage方法

在默认的情况下,cookie在保存在浏览器的内存中,当浏览器关闭(会话结束),随着内存的释放,cookie也会跟着销毁

如果希望Cookie不能随着浏览器的关闭而销毁,可以设置setMaxAge方法来设置cookie的生存的时间

当设置了SetmaxAge()方法,并且设置了一个正值,cookie将不会保存在浏览器的内存中,而是以文件的形式保存到浏览器的临时得文件夹中,也就是硬盘上,在正值表示的秒数后,cookie会过期销毁,在过期之前,即使多次关闭浏览器,cookie也不会被销毁

当设置setMaxAge方法,并设置为负值(默认的就是负值),cookie将会保存到浏览器的内存中

当设置了SetMaxAge方法,并且设置了零值,cookie将会被删除

		//2.创建一个cookie,将商品保存到cookie中
		Cookie cookie=new Cookie("prod", prod);
		
		//设置cookie的生存的时间,在此时就是设置生存的时间为30天
		cookie.setMaxAge(60*60*24*30);
		
		//3.将cookie发送给浏览器进行保存
		response.addCookie(cookie);

解决cookie存储和读取的时候的乱码的问题

在HTTP协议中规定了,浏览器和通讯器在通信的时候是不能传输中文的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值