Java实现对cookie的操作(增删改查)(未测试)

基于springMVC框架下写的    

/**
		 * 读取所有cookie
		 * 注意二、从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期
		 * @param request
		 * @param response
		 */
		@RequestMapping("/showCookies")
		public void showCookies(HttpServletRequest request,HttpServletResponse response ){
			
			Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组
			if (null==cookies) {
				System.out.println("没有cookie=========");
			} else {
				for(Cookie cookie : cookies){
				    System.out.println("name:"+cookie.getName()+",value:"+ cookie.getValue());
				}
			}
			
		}
		/**
		 * 添加cookie
		 * @param response
		 * @param name
		 * @param value
		 */
		@RequestMapping("/addCookie")
		public void addCookie(HttpServletResponse response,String name,String value){
			Cookie cookie = new Cookie(name.trim(), value.trim());
			cookie.setMaxAge(30 * 60);// 设置为30min
			cookie.setPath("/");
			System.out.println("已添加===============");
			response.addCookie(cookie);
		}
		/**
		 * 修改cookie
		 * @param request
		 * @param response
		 * @param name
		 * @param value
		 * 注意一、修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
		 */
		@RequestMapping("/editCookie")
		public void editCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
			Cookie[] cookies = request.getCookies();
			if (null==cookies) {
				System.out.println("没有cookie==============");
			} else {
				for(Cookie cookie : cookies){
					if(cookie.getName().equals(name)){
						System.out.println("原值为:"+cookie.getValue());
						cookie.setValue(value);
						cookie.setPath("/");
						cookie.setMaxAge(30 * 60);// 设置为30min
						System.out.println("被修改的cookie名字为:"+cookie.getName()+",新值为:"+cookie.getValue());
						response.addCookie(cookie);
						break;
					}
				}
			}
			
		}
		/**
		 * 删除cookie
		 * @param request
		 * @param response
		 * @param name
		 */
		@RequestMapping("/delCookie")
		public void delCookie(HttpServletRequest request,HttpServletResponse response,String name){
			Cookie[] cookies = request.getCookies();
			if (null==cookies) {
				System.out.println("没有cookie==============");
			} else {
				for(Cookie cookie : cookies){
					if(cookie.getName().equals(name)){
						cookie.setValue(null);
						cookie.setMaxAge(0);// 立即销毁cookie
						cookie.setPath("/");
						System.out.println("被删除的cookie名字为:"+cookie.getName());
						response.addCookie(cookie);
						break;
					}
				}
			}
		}

通常开发时先用以下的代码将获取的cookie进行封装    

/**
	 * 根据名字获取cookie
	 * @param request
	 * @param name cookie名字
	 * @return
	 */
	public  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  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;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值