java中对cookie读写操作

1、cookie对象中的属性------jar包:servlet-api-2.4中的包javax.servlet.http下面

name   必需。规定 cookie 的名称。   
value   必需。规定 cookie 的值。   
expire   可选。规定 cookie 的有效期。   
path   可选。规定 cookie 的服务器路径。   
domain   可选。规定 cookie 的域名。   
maxAge 可选。有效期
Version 可选。表示版本,1
secure   可选。规定是否通过安全的 HTTPS 连接来传输 cookie
2、java对cookie的读写操作
(1)path表示:设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问
(2)domain表示:在那些域名下是有效的
(3)maxAge:参数为负数代表关闭浏览器时清除cookie,参数为0时代表删除cookie,参数为正数时代表cookie存在多少秒。

java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题。

(4)secure:怎么在java中设置Cookie只有在安全链接(即https)中才有效;

代码:

Cookie cookie = new Cookie("mytest","mytest1");

cookie.setSecure(true);

(5)java中修改cookie值通常使用覆盖的方式,如果服务器端发送重复的Cookie那么会覆盖原有的Cookie,例如客户端的第一个请求服务器端发送的Cookie是:Set-Cookie: a=A;第二请求服务器端发送的是:Set-Cookie: a=AA,那么客户端只留下一个Cookie,即:a=AA。

 

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

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

 

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

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

 

下面介绍如何读取cookie,读取cookie代码如下

1
2
3
4
5
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()代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
  * 设置cookie
  * @param response
  * @param name  cookie名字
  * @param value cookie值
  * @param maxAge cookie生命周期  以秒为单位
  */
public  static  void  addCookie(HttpServletResponse response,String name,String value, int  maxAge){
     Cookie cookie = new  Cookie(name,value);
     cookie.setPath( "/" );
     if (maxAge> 0 )  cookie.setMaxAge(maxAge);
     response.addCookie(cookie);
}

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
  * 根据名字获取cookie
  * @param request
  * @param name cookie名字
  * @return
  */
public  static  Cookie getCookieByName(HttpServletRequest request,String name){
     Map<String,Cookie> cookieMap = ReadCookieMap(request);
     if (cookieMap.containsKey(name)){
         Cookie cookie = (Cookie)cookieMap.get(name);
         return  cookie;
     } else {
         return  null ;
     }  
}
 
 
 
/**
  * 将cookie封装到Map里面
  * @param request
  * @return
  */
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);
         }
     }
     return  cookieMap;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值