如何避免按钮或链接点击页面过期。当我为表单上的任何按钮单击或链接返回null时页面过期

问题描述:

我正在使用过滤器检查用户是否登录,然后不缓存上一页。造成这种情况的代码是什么样子,如何避免按钮或链接点击页面过期。当我为表单上的任何按钮单击或链接返回null时页面过期

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) 
     throws IOException, ServletException { 
    .... 
    if (isRegisteredUser.equalsIgnoreCase(("1"))) { 

     sessionID = UUID.randomUUID().toString(); 

     session.setMaxInactiveInterval(1800); 

     Cookie userCookie = new Cookie("userCookie", "loginUser"); 
     userCookie.setPath("/"); 
     httpServletResponse.addCookie(userCookie); 

     Cookie sessionCookie = new Cookie("WITSessionCookie", sessionID); 
     sessionCookie.setMaxAge(60*30); 
     sessionCookie.setPath("/");  
     httpServletResponse.addCookie(sessionCookie); 

     if (!httpServletRequest.getRequestURI().startsWith(httpServletRequest.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc) 
      httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
      httpServletResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
      httpServletResponse.setDateHeader("Expires", 0); // Proxies. 
     } 

     filterChain.doFilter(httpServletRequest, httpServletResponse); 

    } 
    ... 

} //end of doFilter() 

但问题是,如果对任何按钮或链接任何网页的用户点击,我的那个动作返回null,然后我点击浏览器的后退按钮,然后将其说页面过期。 我该如何预防?这很好,该页面没有缓存,但为什么当我点击任何按钮或任何链接并返回null时,它会到期我的页面?
感谢

+1

您的会话和cookie处理方式很奇怪。你似乎很想念一些基本概念。 – BalusC 2012-04-19 12:00:08

+0

... :)你是什么意思的基本概念?你能告诉我关于这些基本概念吗?你是对的。其实我只是从章节中读到它。但那是针对servlet和JSP的。现在我正在使用JSF。显然会话跟踪是一样的,但是我缺乏概念.. – Basit 2012-04-19 12:52:19

这是正常的,指定的行为,当终端用户尝试重新发送未在浏览器中缓存的POST请求。您需要实现重定向后获取模式。在操作方法中发送重定向到目标页面。或者,更好的做法是将它改为ajax提交。顺便说一句,无论您是否返回null而返回相同视图。

+0

我该如何实现**后重定向 - 获取模式**?因此,如果我的操作返回null,那么该页面不会过期。是的,我回到了相同的观点。假设我有页面faq.xhtml。所以我检查验证,如果任何验证失败,那么我返回null。 – Basit 2012-04-19 12:53:06

+0

HHmm你的意思是说,而不是返回null,我重定向用户。就像使用'return null'一样,我应该使用像这样的'return'MyDashboard?faces-redirect = true“'。是吗?这是重定向到相同的页面。 – Basit 2012-04-19 12:58:56

+0

谢谢。你是对的。而不是返回null,我用这样的'/ /返回null;返回“NewsAndAnnouncementAddUpdate?faces-redirect = true”;'即重定向到同一页面。现在,当我点击后退按钮时,pageExpires消息消失了。谢谢 :) – Basit 2012-04-19 13:41:44