如何避免按钮或链接点击页面过期。当我为表单上的任何按钮单击或链接返回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时,它会到期我的页面?
感谢
这是正常的,指定的行为,当终端用户尝试重新发送未在浏览器中缓存的POST请求。您需要实现重定向后获取模式。在操作方法中发送重定向到目标页面。或者,更好的做法是将它改为ajax提交。顺便说一句,无论您是否返回null
而返回相同视图。
我该如何实现**后重定向 - 获取模式**?因此,如果我的操作返回null,那么该页面不会过期。是的,我回到了相同的观点。假设我有页面faq.xhtml。所以我检查验证,如果任何验证失败,那么我返回null。 – Basit 2012-04-19 12:53:06
HHmm你的意思是说,而不是返回null,我重定向用户。就像使用'return null'一样,我应该使用像这样的'return'MyDashboard?faces-redirect = true“'。是吗?这是重定向到相同的页面。 – Basit 2012-04-19 12:58:56
谢谢。你是对的。而不是返回null,我用这样的'/ /返回null;返回“NewsAndAnnouncementAddUpdate?faces-redirect = true”;'即重定向到同一页面。现在,当我点击后退按钮时,pageExpires消息消失了。谢谢 :) – Basit 2012-04-19 13:41:44
您的会话和cookie处理方式很奇怪。你似乎很想念一些基本概念。 – BalusC 2012-04-19 12:00:08
... :)你是什么意思的基本概念?你能告诉我关于这些基本概念吗?你是对的。其实我只是从章节中读到它。但那是针对servlet和JSP的。现在我正在使用JSF。显然会话跟踪是一样的,但是我缺乏概念.. – Basit 2012-04-19 12:52:19