一、 | 什么是cookie? |
cookie就是在用户访问服务器时,服务器在用户硬盘上存放的信息。
服务器可以根据该信息来跟踪用户状态。
二、 | cookie有什么用? |
当用户首次访问服务器的时候,服务器都会在用户的硬盘上存储一些相关信息的cookie
以后用户再访问的时候,服务器都会分析请求中的cookie数据来获得信息。
三、 | 怎么使用cookie |
1、创建cookie对象
Cookie c = new Cookie("username","Tom");
第一个参数是cookie的名字;第二个参数是cookie的值。
2、将cookie对象添加到HTTP相应结果中
response.addCookie(c);
3、服务器读取客户端的cookie
Cookie[] cookies = request.getCookies();
该方法返回的是一个Cookie数组,里面存放的是所有cookie对象
如果没有任何cookie对象,那么返回的是一个null;
4、获得cookie的名字和值
for(int I = 0;I < ccookies.length;i++){
System.out.println("cookie的名字:" + cookies[i].getName());
System.out.println("cookie的值:" + cookies[i].getValue());
}
5、设置cookie的有效期
Cookie c = new Cookie("username","Tom");
c.setMaxAge(int expiry); //expiry的单位是秒
该方法有以下几点注意:
1如果expiry大于零,说明cookie在硬盘上的保存时间为expiry秒
2如果expiry等于零,就指示浏览器删除当前的cookie
3如果expiry小于零,就不保存cookie到硬盘,尽保存在浏览器进程中,
当浏览器关闭cookie也就消失。
例子代码:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class Cookie extends Action{
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//获得客户端的所有cookie对象
javax.servlet.http.Cookie[] cookies = request.getCookies();
if(cookies != null){
//循环访问每个cookie
for(int i = 0; i < cookies.length; i++){
System.out.println("cookie的名字是:" + cookies[i].getName());
System.out.println("cookie的值是:" + cookies[i].getValue());
}
}else{
System.out.println("不存在cookie!");
}
String cookiename = "cookiename";
String cookievalue = "cookievalue";
javax.servlet.http.Cookie c = new javax.servlet.http.Cookie(cookiename,cookievalue);
//向客户端写入一个cookie
response.addCookie(c);
//设置cookie的有效期
c.setMaxAge(60*60);
return (mapping.findForward("result"));
}
}