Cookie是浏览器提供的一种技术,这种技术是服务端可以将一些只需要保存在客户端,或者在客户端进行处理的数据,放在本身使用的计算机中,一方面因为不需要使用网络提高了处理效率,另一方面能够减少服务器的负载,但是由于Cookie是服务端保存在客户端的数据,所以其安全性是很差的。
一.Cookie定义的常用方法
public Cookie(String name,String value) 构造方法 实例化Cookie对象,同时设置名称和内容
public String getName() 普通方法 获取Cookie的名称
public Stirng getValue() 普通方法 获取Cookie的值
二.向客户端添加Cookie
由于Cookie都是服务端向客户端添加的,所以需要用到response对象的以下方法:
public void addCookie(Cookie cookie)
Cookie c1 = new Cookie("cookie1","第一条");
Cookie c2 = new Cookie("cookie2","第二条");
response.addCookie(c1);
response.addCookie(c2);
可以通过设置头信息完成设置cookie的操作:
response.setHeader("Set-Cookie","c1=cookie111");
三.取得Cookie
可以通过request对象从客户端中取得Cookie
public Cookie[] getCookies()
<%
Cookie c[] = request.getCookies();
for(int i=0;i < c.length;i++){
%>
<h3><%=c[i].getName()%> <%=c[i].getValue()%></h3>
<%
}
%>
运行截图如下:
可以发现除了刚才设置的两个Cookie还出现了JSESSIONID,这个是服务端对每个用户设置的Cookie,作为用户的唯一标识
四.设置保存时间
上面的cookie在重启浏览器后会出现NullPointerException,原因是之前设置的两个cookie并没有真正的保存在客户端,只是保存在客户端的浏览器上,如果想要真正的把数据保存在客户端上则需要设置保存时间。使用setMaxAge()即可。
Cookie c1 = new Cookie("cookie1","第一条");
Cookie c2 = new Cookie("cookie2","第二条");
c1.setMaxAge(60);
c2.setMaxAge(60);
response.addCookie(c1);
response.addCookie(c2);
其中的参数是按秒计算的。