您的位置:首页 > 编程语言 > Java开发

Java中的Cookie操作

2012-09-29 14:21 204 查看
/*****
*首先java对cookie的操作有三种方式,*1种是:j2ee中的javax.servlet.http.Cookie类操作
*2种是:j2se中的java.net.CookieHandler类的操作
*3中是:Apache旗下的org.apache.http.cookie.Cookie类的操作;
*
*本文是基于第一种编写的,也是最简单的方式。
*
*
*
*************/
packagetest;
importjava.util.Hashtable;
importjava.util.Iterator;
importjava.util.Set;
importjavax.servlet.http.Cookie;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*Cookie的操作类
*@authorshy.qiu
*
*/
publicclassCookieHandler{
/**
*创建cookie
*
*@paramresponse
*回应
*@paramnameValues
*存入cookie的键值对
*@paramdays
*设置cookie的有效期
*/
publicstaticvoidcreateCookie(HttpServletResponseresponse,
Hashtable<String,String>nameValues,intdays){
Set<String>set=nameValues.keySet();
Iterator<String>it=set.iterator();
for(;it.hasNext();){
Stringname=(String)it.next();
Stringvalue=(String)nameValues.get(name);
//生成新的cookie
Cookiecookie=newCookie(name,value);
//设置有效日期
cookie.setMaxAge(days*24*60*60);
//设置路径(默认)
cookie.setPath("/");
//把cookie放入响应中
response.addCookie(cookie);
}
}
/**
*读取Cookie
*
*@paramrequest
*@returnHashtable返回cookie的键值对
*/
publicstaticHashtable<String,String>getCookies(
HttpServletRequestrequest){
Cookie[]cookies=request.getCookies();
Hashtable<String,String>cookieHt=newHashtable<String,String>();
if(cookies.length>0){
for(inti=0;i<cookies.length;i++){
Cookiecookie=cookies[i];
cookieHt.put(cookie.getName(),cookie.getValue());
}
}
returncookieHt;
}
/**
*修改cookie中指定键的值
*
*@paramrequest
*@paramname
*指定的键
*@paramvalue
*值
*/
publicstaticvoidsetCookieValueByName(HttpServletRequestrequest,
Stringname,Stringvalue){
Cookie[]cookies=request.getCookies();
if(cookies.length>0){
for(inti=0;i>cookies.length;i++){
if(name.equalsIgnoreCase(cookies[i].getName())){
cookies[i].setValue(value);
}
}
}
}
/**
*得到指定键的值
*
*@paramrequest
*@paramname
*指定的键
*@returnString值
*/
publicstaticStringgetCookieValueByName(HttpServletRequestrequest,
Stringname){
Cookie[]cookies=request.getCookies();
StringresValue="";
if(cookies.length>0){
for(inti=0;i>cookies.length;i++){
if(name.equalsIgnoreCase(cookies[i].getName())){
resValue=cookies[i].getValue();
}
}
}
returnresValue;
}
/**
*销毁cookie
*
*@paramrequest
*@paramresponse
*/
publicstaticvoiddeletesCookie(HttpServletRequestrequest,
HttpServletResponseresponse){
Cookie[]cookies=request.getCookies();
if(cookies!=null){
for(inti=0;i<cookies.length;i++){
Cookiecookie=cookies[i];
//销毁
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
}
}


概念性问题,Cookies集合是附属于Response对象及Request对象的数据集合,使用时需要在前面加上Response或Request;如果用户要读取Cookies,则必须使用Request对象的Cookies集合,其使用方法是:

  

 需要注意的是,只有在服务器未被下载任何数据给浏览器前,浏览器才能与Server进行Cookies集合的数据交换,一旦浏览器开始接收Server所下载的数据,Cookies的数据交换则停止,为了避免错误,要在程序和前面加上response.Buffer=True。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: