注销后,在登录页面上,如果您单击“后退”按钮,则会在登录时显示旧页面。我在jsp中使用上述3行代码,并将其包含在body标签内的所有jsps中。这不适用于某些jsps。在注销后停止缓存时需要考虑哪些事项。如果jsp具有Post方法的形式,则此技术行不通?
在我的注销操作中,我正在这样做。
Cookie logoutCookie = new Cookie("somename", null); logoutCookie.setPath("/somename"); logoutCookie.setMaxAge(0); ServletActionContext.getResponse().addCookie(logoutCookie);
谢谢。
我将其包含在我的所有jsps体内标签中
如果此时已提交HTTP响应,可能 为时已晚 。当已经写入X个字符(在您的情况下为HTML)字符时,将提交HTTP响应<head>。您需要将这些行放在JSP文件的最顶部,而不是<body>HTML表示形式的。
<head>
<body>
无关紧要的是,您将相同的代码行复制到多个文件中,这是一个巨大的设计错误。这不是DRY。每当你需要copypaste代码,你应该总是停下来问自己,如果没有一个 单一的 执行特定代码的地方。在您的特定情况下,应该使用aFilter代替。。另外,在JSP中编写Java代码也是一种不好的做法。
Filter
另外,您的注销方法很奇怪。不要将用户名存储在某些自定义Cookie中。您基本上是在重新设计会话。只需将登录用户存储为会话属性,然后使整个会话无效并发送重定向。
request.getSession().invalidate(); response.sendRedirect(request.getContextPath() + "/home.jsp");