CookieUtils

来源:互联网 发布:mac cocoapods 升级 编辑:程序博客网 时间:2024/06/06 04:10
package cn.itcast;import java.util.Arrays;import java.util.LinkedList;import java.util.List;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 类说明:使用cookie实现浏览历史记录 *  * @author 作者: LiuJunGuang * @version 创建时间:2011-10-31 下午04:16:02 */public class CookieUtils {/** * Cookie的名字 */public static final String COOKIE_HISTORYID = "cookies_history";/** * Cookie的存活时间 */public static final int COOKIE_LIFE_TIME = 14 * 24 * 60 * 60;/** * 最大的浏览历史记录条数 */public static final int HISTORY_COUNT = 5;/** * 获得指定cookie中的值 *  * @param request * @param cookieName *            要查找的cookie的名字 * @return 返回指定Cookie中的字符串值 */public static String getCookie(HttpServletRequest request, String cookieName) {Cookie cookies[] = request.getCookies();if (cookies != null) {for (Cookie cookie : cookies) {// 找到指定的cookieif (cookie != null && COOKIE_HISTORYID.equals(cookie.getName())) {return cookie.getValue();}}}return null;}/** * 设置指定cookie中的值(1.得到原先cookie中的值;2.重新设置cookie的值;3.保存重置后的cookie) *  * @param request * @param response * @param cookieName *            要设置的cookie的名字 * @param goodsid *            要添加到浏览历史中的 goodsID号 * @param count *            总共可以显示的历史记录条数 */public static void setCookie(HttpServletRequest request,HttpServletResponse response, String cookieName, String goodsid,int count) {// 得到指定的cookieString ids = getCookie(request, cookieName);// 设置cookie中格的浏览记录ids = setValue(ids, goodsid, count);// 保存cookiesaveCookie(request, response, cookieName, ids);}// 测试方法public static void main(String[] args) {System.out.println(setValue(null, "1", 3));System.out.println(setValue("1,2,3", "1", 3));System.out.println(setValue("2,1,3", "1", 3));System.out.println(setValue("2,1", "1", 3));System.out.println(setValue("2,3,4", "1", 3));System.out.println(setValue("2,4", "1", 3));System.out.println(setValue("4,3,1", "1", 3));}/** * 设置浏览历史字符串 *  * @param ids * @param sbookid *            最新浏览的id号 * @return 修改后的字符串 */private static String setValue(String ids, String bookid, int count) {// 1、 没有任何记录--》直接添加 id// 2、 1,2,3 4--》 4,1,2// 3、 1,2,3 2 --》 2,1,3// 4、1,2 3--》 3,1,2// 如果不存在Cookie或者Cookie中没有值StringBuffer sb = new StringBuffer();if (ids == null) {sb.append(bookid);} else {List<String> list = Arrays.asList(ids.split("\\,"));LinkedList<String> idsList = new LinkedList<String>(list);// 未浏览过if (!idsList.contains(bookid)) {if (idsList.size() < count) {idsList.addFirst(bookid);} else {idsList.removeLast();idsList.addFirst(bookid);}} else {// 如果包含已浏览的idsList.remove(bookid);idsList.addFirst(bookid);}for (String id : idsList) {sb.append(id).append(",");}if (sb != null && sb.length() > 0) {sb.deleteCharAt(sb.length() - 1);}}return sb.toString();}/** * 保存cookie的值 *  * @param request * @param response * @param cookieName *            要保存的cookie的名字 * @param value *            保存到cookie中的值 */public static void saveCookie(HttpServletRequest request,HttpServletResponse response, String cookieName, String value) {saveCookie(request, response, cookieName, value, COOKIE_LIFE_TIME);}/** * 删除指定的cookie *  * @param request * @param response * @param cookieName *            要删除的cookie */public static void deleteCookie(HttpServletRequest request,HttpServletResponse response, String cookieName) {saveCookie(request, response, cookieName, "", 0);}/** * 保存cookie 并设置cookie存活的时间 *  * @param request * @param response * @param cookieName *            要保存的cookie的名字 * @param value *            cookie中要存放的值 * @param time *            cookie存活时间 */public static void saveCookie(HttpServletRequest request,HttpServletResponse response, String cookieName, String value,int time) {Cookie cookie = new Cookie(cookieName, value);cookie.setMaxAge(time);// 设置Cookie的存活时间cookie.setPath(request.getServletContext().getContextPath());response.addCookie(cookie);// 保存cookie}}

原创粉丝点击