尽管我所知道的浏览器都支持cookie的设置,不过用户可以有意识的将它关闭,或者无意识的将它关闭。当你在你的servlets/JSP页面中使用cookie时,你不能保证用户的浏览器是否可以接受cookie--你需要先检查一下。这儿有一个检查用户的浏览器的cookie是否有效的小技巧。 这个技巧很简单。你从servlet或JSP向用户的浏览器发出一个HTTP回应,强行使浏览器在第二次返回。在第一次的响应中,你发出一个cookie。当浏览器第二次返回的时候,检查上一次发出的cookie。如果cookie存在,说明浏览器的cookie功能可用。否则说明用户的浏览器太老,不支持cookie,或者浏览器的cookie功能被关闭。 JSP页面用下面这段代码检查cookie是否有效。如果有效,那么页面的返回字符串为“Cookie is on”.若无效则为“Cookie is off”: <%
if (request.getParameter("flag")==null) {
// the first request
Cookie cookie = new Cookie("cookieSetting",
"on");
response.addCookie(cookie);
String nextUrl = request.getRequestURI() +
"?flag=1";
// force the browser to refresh
out.println("<META HTTP-EQUIV=Refresh
CONTENT=0;URL=" + nextUrl +">");
}
else {
// the second request
Cookie[] cookies = request.getCookies();
boolean cookieFound = false;
if (cookies!=null) {
int length = cookies.length;
for (int i=0; i<length; i++) {
Cookie cookie = cookies[i];
if
(cookie.getName().equals("cookieSetting") &&
cookie.getValue().equals("on")) {
cookieFound = true;
break;
}
}
}
if (cookieFound) {
out.println("Cookie is on.");
}
else {
out.println("Cookie is off.");
}
}
%> |
|