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

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

基于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;
	}

标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:JS实现简易图片轮播效果

下一篇: java实现发送邮件可多个附件内嵌图片-commons-email使用