|
|
在cookie中存放一组消息的Id,每个Id用逗号‘,’相隔,刚开始用javascript增加Cookie,
例:
var log = getCookie("visitedMsgs"); if(log){ var arr = log.split(","); log = apptar_messageid; if(arr && arr.length > 0){ var j = 0; for(var i = 0; i < arr.length; i++) { if(arr[i] != apptar_messageid) { log += "," + arr[i]; j++; if(j >= 9) { break; } } } } } else { log = apptar_messageid; } addCookie("visitedMsgs", log, 5);但是在使用JSP页面读取的时候只能得到第一个消息的Id。后改用JSP增加Cookie。
例:
Cookie[] cookies = request.getCookies(); if(cookies!=null){ for(int i=0;i<cookies.length;i++){ Cookie cookie = cookies[i]; if(cookie.getName().equals("lookMsgs")){ String msgStr = cookie.getValue(); String[] msgs = msgStr.split(","); if(msgs!=null && msgs.length>0){ int k = 0; for(int j=0;j<msgs.length;j++){ if(!msgs[j].equals(request.getParameter("msgId"))){ msgId += ","+ msgs[j]; k++; if(k>=5){ break; } } } } } } Cookie cook = new Cookie("lookMsgs",msgId); cook.setMaxAge(7200000); response.addCookie(cook);察看Cookie发现两种增加Cookie的结果略有不同:javascript的Cookie比JSP的Cookie少了一对双引号“”;
但这次却没有得到"lookMsgs"的Cookie;再次查看Cookie发现Cookie中有一项path显示"lookMsgs"Path为"/detail/index.jsp".
最后在response.addCookie(cook);前增加一条语句:cook.setPath("/");问题解决。 |
|