我有一种情况 - 在我从页面注销后,如果有人在浏览器中单击“返回”按钮,它会自动再次进入后页。在Logout.java(Servlet)中我使用:
session.invalidate();
request.getRequestDispatcher("index.jsp").forward(request,response);
一切正常。但是在退出后如果我在浏览器中单击“返回”按钮(左上角),它会回到原来的位置。如果我点击返回然后必须说你的会话是Expiered或登录或其他什么我想做。怎么做。请提出宝贵的建议 我刚看过这个&我创建了一个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>
但它无法正常工作。我错了什么?我从这个页面读到了它:
答案 0 :(得分:4)
在filter
HttpSession session = request.getSession(false);
// don't create if it doesn't exist
if(session != null && !session.isNew()) {
chain.doFilter(request, response);
} else {
response.sendRedirect("/index.jsp");
}
答案 1 :(得分:1)
使用servlet Filter链接以提高安全性。
来源Oracle
堆栈溢出时出现说明
How to use a servlet filter in Java to change an incoming servlet request url?
有关教程,请参阅此链接。
http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/
一个好的 - http://tutorials.jenkov.com/java-servlets/servlet-filters.html
过滤器可以执行许多不同类型的功能。我们将在本文中讨论斜体项的示例:
身份验证 - 根据用户身份阻止请求。
记录和审核 - 跟踪Web应用程序的用户。
图片转换 - 缩放地图等。
数据压缩 - 缩小下载量。
本地化 - 将请求和响应定位到特定区域设置。
阅读官方文档http://www.oracle.com/technetwork/java/filters-137243.html
答案 2 :(得分:1)
是否再次从服务器加载页面?然后,您需要检查您的用户识别和会话代码。其他答案中给出了一些提示。
如果页面位于浏览器的缓存中,则表示运气不佳,浏览器可以再次显示该页面。毕竟,这是一份本地文件。
但是有一些可能的解决方法(如果您的用户和会话识别有效)。
答案 3 :(得分:0)
由此完成:
<script>
history.forward();
</script>
在每个页面的<head>
部分添加此项,可以防止出现此问题。