使用servlet在浏览器中禁用返回功能

时间:2012-02-12 05:39:32

标签: java servlets tomcat6

我创建了一个带登录页面的简单网站,一切正常,除非用户点击浏览器中的GO BACK按钮,退出后会显示上一页。

我试图跟踪会话,但没有成功,有什么建议吗? ps:我更喜欢在服务器端编程实现这一点。

由于

这是我的重定向网址过滤器,如果有的话,这可能是问题所在的地方

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
                    throws IOException, ServletException 
{
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    HttpSession session= request.getSession(false);

   if(request.getRequestURI().compareToIgnoreCase("/login.jsp")!=0&&
           request.getRequestURI().compareToIgnoreCase("/")!=0)
   {
            if (session!=null &&!session.isNew()) 
            {
                    chain.doFilter(req, res);
            }
            else 
            {
                response.sendRedirect(request.getContextPath()+"/login.jsp"); 
               }
  }
   else
   {
       chain.doFilter(req, res);

   }
}

2 个答案:

答案 0 :(得分:1)

我能想到的两种快速方式:

  1. 调用以下javascript代码:

    window.history.back(0)= window.location

  2. 将您的正文标记更改为:

    < body onunload =“javascript:history.go(1)”>

答案 1 :(得分:-1)

如果您有两个页面page1和page2并且(page1重定向到第2页)并且您希望限制用户返回到page1,则使用javascript,只需将此代码放在page1即可。

 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            function disableBack() {
                window.history.forward()
            }

            window.onload = disableBack();
            window.onpageshow = function (evt) {
                if (evt.persisted)
                    disableBack()
            }
        });
    </script>