我正在使用Cookie。當你第一次打開網頁我設置這樣Cookie值不變。每次獲得以前的值
public class SessionTimeoutFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
Object isRegistered = session.getAttribute("logedin");
if (isRegistered != null) {
String isRegisteredUser = isRegistered.toString();
if (isRegisteredUser.equalsIgnoreCase(("1"))) {
sessionID = UUID.randomUUID().toString();
session.setMaxInactiveInterval(240); //4min
Cookie userCookie = getCookie(httpServletRequest, "userCookie");
if (userCookie != null) {
//Value not setting here
Cookie loginUserCookie = new Cookie("userCookie", "loginUser");
httpServletResponse.addCookie(loginUserCookie);
}
filterChain.doFilter(httpServletRequest, httpServletResponse);
}
} else {
sessionID = httpServletRequest.getRequestedSessionId();
sessionValid = httpServletRequest.isRequestedSessionIdValid();
//User open his browser
if (sessionID == null && !sessionValid) {
sessionID = UUID.randomUUID().toString();
Cookie browserCookie = new Cookie("browserCookie", sessionID);
httpServletResponse.addCookie(browserCookie);
Cookie userCookie = new Cookie("userCookie", "normal");
httpServletResponse.addCookie(userCookie);
session.setAttribute("logedin", "0");
filterChain.doFilter(httpServletRequest, httpServletResponse);
//Session expires. Each time user close the tab and session expires automatically
} else if(sessionID != null && !sessionValid) {
if (httpServletRequest.isRequestedSessionIdFromCookie()) {
Cookie userCookie = getCookie(httpServletRequest, "userCookie");
String value = userCookie.getValue();
//Each time getting normal
if (value.equalsIgnoreCase("normal")) {
session.setAttribute("logedin", "0");
filterChain.doFilter(httpServletRequest, httpServletResponse);
} else if (value.equalsIgnoreCase("loginUser")) {
}
} //end of if (httpServletRequest.isRequestedSessionIdFromCookie())
}
}
} //end of dofilter()
} //end of class SessionTimeoutFilter
餅乾當你第一次打開頁面,則符合條件if (sessionID == null && !sessionValid)
變爲真和userCookie的值設置爲normal.Now如果你關閉瀏覽器選項卡,然後再次打開頁面。 Cookie值正常。好。
但是現在當你登錄時,它的條件是if (isRegisteredUser.equalsIgnoreCase(("1")))
。在這裏我試圖取代userCookie值,如
Cookie userCookie = getCookie(httpServletRequest, "userCookie");
if (userCookie != null) {
String value = userCookie.getValue();
//delete the cokie
//userCookie.setValue("loginUser");
//userCookie.setMaxAge(0);
Cookie loginUserCookie = new Cookie("userCookie", "loginUser");
httpServletResponse.addCookie(loginUserCookie);
}
但這兩種方法都不起作用。現在這樣做,如果我關閉瀏覽器,然後重新打開網頁,然後在條件
if (value.equalsIgnoreCase("normal")) {
session.setAttribute("logedin", "0");
filterChain.doFilter(httpServletRequest, httpServletResponse);
} else if (value.equalsIgnoreCase("loginUser")) {
}
我正在恢復正常的userCookie value..This時間應該讓我珍惜「loginUser」,因爲我之後已將userCookie的值更改爲loginUser。我在這裏變得很正常。爲什麼我得到了以前的價值。我做錯了什麼?請告訴我。
感謝
好的,這是一個會話級cookie,同意。但是,如果我想更改會話級cookie的值,該怎麼辦?在打開頁面時,我的會話級cookie具有正常值,當用戶登錄時,我想更改會話級cookie的值。當你只是想改變你的cookie的價值時,是否需要設置cookie的到期時間?謝謝 – Basit 2012-04-16 12:22:53
順便說一下,您可以使用任何HTTP流量監視器(例如用於Firefox的FireBug插件)檢查您的應用程序中設置/傳輸了哪些(以及如何)cookie。 – DRCB 2012-04-16 12:24:53