java对cookie的操作

摘要:
建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下HttpServletRequestrequestHttpServletResponseresponseCookiecookie=newCookie("cookiename","cookievalue");response.addCookie(cookie);下面建立一个有生命周期的cookie,可以设置他的生命周期

建立一个无生命周期的cookie,即随着浏览器的关闭即消失的cookie,代码如下

HttpServletRequest request  
HttpServletResponse response
Cookie cookie = new Cookie("cookiename","cookievalue");
response.addCookie(cookie);

下面建立一个有生命周期的cookie,可以设置他的生命周期

cookie = new Cookie("cookiename","cookievalue");
 
cookie.setMaxAge(3600);
 
//设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问
cookie.setPath("/");
response.addCookie(cookie);

读取cookie代码如下:

Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组
for(Cookie cookie : cookies){
    cookie.getName();//get the cookie name
    cookie.getValue(); //get the cookie value
}

上面就是基本的读写cookie的操作。我们在实际中最好进行一下封装,比如增加一个cookie,我们关注的是cookie的name,value,生命周期,所以进行封装一个函数,当然还要传入一个response对象,addCookie()代码如下

/*** 设置cookie
 * @paramresponse
 * @paramname  cookie名字
 * @paramvalue cookie值
 * @parammaxAge cookie生命周期  以秒为单位
 */
public static void addCookie(HttpServletResponse response,String name,String value,intmaxAge){
    Cookie cookie = newCookie(name,value);
    cookie.setPath("/");
    if(maxAge>0)  cookie.setMaxAge(maxAge);
    response.addCookie(cookie);
}

读取cookie的时候,为了方便我们的操作,我们希望封装一个函数,只要我们提供cookie的name,我们便可以获取cookie的value,带着这个想法,很容易想到将cookie封装到Map里面,于是进行下面的封装

public staticCookie getCookieByName(HttpServletRequest request,String name){
    Map<String,Cookie> cookieMap =ReadCookieMap(request);
    if(cookieMap.containsKey(name)){
        Cookie cookie =(Cookie)cookieMap.get(name);
        returncookie;
    }else{
        return null;
    }   
}
 

private static Map<String,Cookie>ReadCookieMap(HttpServletRequest request){  
    Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
    Cookie[] cookies =request.getCookies();
    if(null!=cookies){
        for(Cookie cookie : cookies){
            cookieMap.put(cookie.getName(), cookie);
        }
    }
    returncookieMap;
}

免责声明:文章转载自《java对cookie的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vlog常用参数解析Spring Security中实现微信网页授权下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

10 深入kubernete落地实践深入101 ingress四层代理、session保持、定制配置、流量控制

深入Ingress-Nginx Deployment?   https 四层代理    访问控制 定制配置 项目 8-ingress 修改部署ds方式 Deployment 改成DaemonSet(ds)模式 #保存controller到文件 kubectl get deploy -n ingress-nginx nginx-ingress-control...

cookies

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久...

Cookie和Session的区别

Cookie Cookie:是存在于http协议请求中,标识着用户的身份。 Cookie在客户端的请求头信息,在第一个请求发送给服务端之后,服务端将Cookie发送给客户端(浏览器),浏览器进行存在。 Cookie的信息是在程序后端自定义的。 Cookie的格式是key value Session Session是存储在服务端的,一般存储于缓存数据库,(如...

php防止表单重复提交

解决方案一:引入cookie机制来解决 提交页面代码如下a.php代码如下: <form name="form1" method="post" action="t2.php"> <p>说明 <input type="text" name="titile" /> </p> <p> <input...

arale-cookie 使用

https://www.npmjs.com/package/arale-cookiearale-cookie 使用 define(function() { var Cookie = require('cookie'); Cookie.set('foo', 3); Cookie.set('bar', 4, {...

Springboot+post请求接口

本文是Springboot+post请求接口的生成,包含了带cookie 和参数发送post请求。新增lombok框架,lombok的使用可以不用在类中添加成员变量的get/set方法。框架自带了相关方法。如不需要再添加以下内容 public String getUsename() { return usename; } p...