java操作cookie实现增删改查

来源:互联网 发布:瑞虎3轮毂数据 编辑:程序博客网 时间:2024/05/22 13:50

java实现对cookie增删改查:

package com.qianjiang.channel.controller;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.net.URLEncoder;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * java操作cookie--增删改查 * @author somnus * */public class TestCookie {/** * 读取cookie * @param req * @param resp */    public void showCookies(HttpServletRequest req){    //获得所有cookie数据        Cookie [] cookies=req.getCookies();        if(null==cookies){            System.out.println("没有cookie");        }else{            for(Cookie cookie : cookies){            if(cookie==null){            System.out.println("cookie值空");            }else{            System.out.println("cookie name:"+cookie.getName()+",cookie value:"+ cookie.getValue());            }            }        }    }        /**     * 根据指定获得cookie值     * @param req     */    @SuppressWarnings("unused")public void getCookieValue (HttpServletRequest req,String name){        String value=null;    //首先从cookie中取存储的值        Cookie[] cookies=req.getCookies();        if(cookies!=null){             for(Cookie cookie:cookies){                 if(cookie!=null && name.equals(cookie.getName())){                 value=cookie.getValue();                     break;                 }             }         }    }            /**     * 添加cookie     * 注意若添加的cookie包含中文则必须设置编码,读取也必须设置编码     * @param req     * @param resp     */    public void addCookie(HttpServletRequest req,HttpServletResponse resp,String name,String value){    //创建cookie值    Cookie cookie = new Cookie(name, value);    //设置cookie路径    cookie.setPath("/");    //不设置的话,则cookies不写入硬盘,而是写在内存,只在当前页面有用,以秒为单位     cookie.setMaxAge(365 * 24 * 60 * 60);     resp.addCookie(cookie);        //案例:若添加的cookie值为中文则这样写    try {    Cookie cookie2 = new Cookie("nick", URLEncoder.encode("陈强", "UTF-8"));    cookie2.setPath("/");      cookie2.setMaxAge(365 * 24 * 60 * 60);          resp.addCookie(cookie);  } catch (UnsupportedEncodingException e) {e.printStackTrace();}    //案例:添加cookie值为中文读取    try {    //则读取cookie这样:        Cookie cookies[] = req.getCookies();              if(cookies!=null){            for(int i = 0; i < cookies.length; i++){             if("nick".equals(cookies[i].getName())){              System.out.println("测试cookie值为中文:"+ URLDecoder.decode(cookies[i].getValue(),"UTF-8"));            }              }              }else{              System.out.println("没有Cookie");              }  } catch (UnsupportedEncodingException e) {e.printStackTrace();}      }        /**     * 根据指定名称修改cookie     * 注意一、修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。     * 否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。     * @param request     * @param response     * @param name     * @param value     */    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(365 * 24 * 60 * 60);                     System.out.println("被修改的cookie名字为:"+cookie.getName()+",新值为:"+cookie.getValue());                    response.addCookie(cookie);                    break;                }            }        }    }        /**     * 根据指定名称删除cookie     * @param request     * @param response     * @param name     */    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)){                //设置值为null                    cookie.setValue(null);                    //立即销毁cookie                    cookie.setMaxAge(0);                    cookie.setPath("/");                    System.out.println("被删除的cookie名字为:"+cookie.getName());                    response.addCookie(cookie);                    break;                }            }        }    }                    }


原创粉丝点击