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协议中规定了,浏览器和通讯器在通信的时候是不能传输中文的数据