我需要帮助从servlet中删除Cookie。
我需要实现简单的聊天程序:
在doPost()函数中的我检查输入是否有效(没有空消息/用户名,并且用户名只包含数字或字母)。 如果输入有问题,我会为错误消息创建新的Cookie 并将其添加到响应中(我没有设置cookie的路径或域)。
access-control-allow-origin: *
在doGet()函数中,我检查cookie中是否有任何错误,并将它们保存在我将在HTML输出中显示的字符串中。 保存错误后,我尝试删除Cookies(通过maxAge(0)),但令人惊讶的是它不起作用......
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//--- Get Data From User ---
String userName= request.getParameter("userName");
String msg= request.getParameter("comment");
//--- Check if 'userName or 'msg' are empty ---
userName = userName.trim();
msg = msg.trim();
//--- Response ---
if (userName.isEmpty() || msg.isEmpty() || !userName.matches(pattern))
{
if (userName.isEmpty() || msg.isEmpty())
{
//store new Cookie for the error message
Cookie c1 = new Cookie("erorrEmpty", "\"<p>ERROR: \\\"username\\\" and \\\"message\\\" should not be empty.</p>\"");
// c1.setMaxAge(60*60);
//c1.setPath(".");
response.addCookie(c1);
}
if (!userName.matches("^[a-zA-Z0-9]+$"))
{
//store new Cookie for the error message
Cookie c2 = new Cookie("errorNotAlphanumeric", "\"<p>ERROR: \\\"username\\\" should consist of letters and numbers only.</p>\"");
// c2.setMaxAge(60*60);
// c2.setPath(".");
response.addCookie(c2);
}
//--- display form with errors ---
response.sendRedirect("/ex3/MsgServlet?action=1");
}
else
{
// Insert New Message To The Vector....
//--- display all messages ---
response.sendRedirect("/ex3/MsgServlet?action=2");
}
}
我在这个问题上看到了其他问题,但他们提到了setDomain()和setPath()函数。这与我无关,因为我没有在创建cookie时使用它们。
答案 0 :(得分:0)
如果你能得到它,你可以改变它!
您必须将其添加到答案中。
HttpServletResponse resp
Cookie[] cookies = request.getCookies();
Cookie the_cookie // get the good one !
the_cookie.setMaxAge(0);
resp.addCookie(the_cookie);
答案 1 :(得分:0)
getMaxAge(int):
如果为负,则表示cookie一直存在,直到浏览器关闭。
public static Cookie eraseCookie(String CookieName, String Path) {
Cookie cookie = new Cookie(CookieName, "");
cookie.setMaxAge(0);// Set as a o
cookie.setPath(Path);
return cookie;
}
乐意帮助