发表于: 2017-11-16 21:03:24

1 763


今天完成的任务



学习了先贤对cookie的操作

昨天已经回如何生成一个cookie

现在学获取



public static Cookie    getCookie(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies();

   if (cookies == null || cookieName == null || cookieName.equals(""))
return null;

   for (Cookie c : cookies) {
if (c.getName().equals(cookieName))//输出与cookieName相符合的Cookie值
           return (Cookie) c;
   }
return null;
}


public static String getCookieValue(HttpServletRequest request, String cookieName) {
Cookie cookie = getCookie(request, cookieName);
   if (cookie == null)
return null;
   else
       return cookie.getValue();
}



request返回的是cookie的集合 通过getCookies()获得

c.getName().equals(cookieName判断需要查询的cookie名称

cookie.getValue()获取cookie的内容


虽然单纯用这几个语句也能做到一样的效果,不过先贤的判断语句还是让人学到很多


方法里面居然能调用它的重载,学到了


-----------------------------------------------------------



public static void addCookie(HttpServletResponse response, Cookie cookie) {
if (cookie != null)
response.addCookie(cookie);
}


public static void addCookie(HttpServletResponse response, String cookieName, String cookieValue, String domain,
                            boolean httpOnly, int maxAge, String path, boolean secure) {
if (cookieName != null && !cookieName.equals("")) {
if (cookieValue == null)
cookieValue = "";

       Cookie newCookie = new Cookie(cookieName, cookieValue);
       if (domain != null)
newCookie.setDomain(domain);

       newCookie.setHttpOnly(httpOnly);

       if (maxAge > 0)
newCookie.setMaxAge(maxAge);

       if (path == null)
newCookie.setPath("/");
       else
           newCookie.setPath(path);

       newCookie.setSecure(secure);

       addCookie(response, newCookie);
   }
}


public static void addCookie(HttpServletResponse response, String cookieName, String cookieValue, String domain) {
addCookie(response, cookieName, cookieValue, domain, true, CookieConstantTable.COOKIE_MAX_AGE, "/", false);
}



添加语句


---------------------------------

修改语句

其实cookie只支持创建和读取,修改和删除都是基于cookie方法的小把戏


public static void editCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
                             String cookieValue,String domain) {
Cookie c = getCookie(request, cookieName);
   if (c != null && cookieName != null && !cookieName.equals("") && c.getName().equals(cookieName)) {
addCookie(response, cookieName, cookieValue, domain);
   }
}



修改是把查询到的语句通过addCookie方法覆盖


---------------------------------------------------------------------------------------------------------------------------

删除



public static void delCookie(HttpServletResponse response, Cookie cookie) {
if (cookie != null) {
cookie.setPath("/");
       cookie.setMaxAge(0);
       cookie.setValue(null);

       response.addCookie(cookie);
   }
}


public static void delCookie(HttpServletRequest request, HttpServletResponse response, String cookieName) {
Cookie c = getCookie(request, cookieName);
   if (c != null && c.getName().equals(cookieName)) {
delCookie(response, c);
   }
}



实际上就是修改path 生命周期 value三条命令 消除cookie的





返回列表 返回列表
评论

    分享到