【发布时间】:2013-04-18 02:10:28
【问题描述】:
我有一种情况 - 在我从页面注销后,如果有人在浏览器中单击“返回”按钮,它会自动再次进入返回页面。在 Logout.java (Servlet) 我使用:
session.invalidate();
request.getRequestDispatcher("index.jsp").forward(request,response);
一切正常。但是注销后,如果我在浏览器中单击返回按钮(左上角),它会回到我所在的位置。如果我单击返回,我想这样做,那么必须说您的会话已过期或登录或其他。怎么做。请提出您宝贵的建议。
我刚读到这个,我创建了一个 servlet FilterURL.java:
public class FilterURL extends HttpServlet implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
//
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse hsr = (HttpServletResponse) res;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res);
}
@Override
public void destroy() {
//
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//
}
}
还有我的 web.xml:(在 web-app 下)
<filter>
<filter-name>FilterURL</filter-name>
<filter-class>com.filter.url.sys.FilterURL</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterURL</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但它不会工作。我错了什么??
我是从这个页面读到的:
- How to use a servlet filter in Java to change an incoming servlet request url?
- Prevent user from seeing previously visited secured page after logout
- http://tutorials.jenkov.com/java-servlets/servlet-filters.html
- servlet session , after logout , when back button of browser is pressed , again the secure page is shown
【问题讨论】:
-
您是否使用过滤器等检查每个请求的会话状态?
-
注销后可以用JS关闭浏览器窗口,防止出现这种情况。
-
注销后,您会跳转到一个页面,在该页面中您会使用“确定”按钮提醒消息。一旦用户单击“确定”按钮,您就会关闭浏览器窗口。
-
这种情况下如何使用Filter?
标签: jsp jakarta-ee servlet-filters logout back-button-control