我尝试设计一个讨论论坛,但似乎有一点问题。对于我的例子,我的论坛的结构是topicsPage.jsp包含一堆主题,而replyPage.jsp包含一堆回复,textArea允许人们回复该主题。现在我遇到了一个问题,如果用户发布了回复,他想回到topicPage.jsp,他点击浏览器的后退按钮,浏览器没有去topicPage.jsp,而不是那样做,浏览器仍然留在replyPage.jsp与用户提交回复之前的状态。
我相信这不是唯一会导致这个问题的情况,任何需要servlet转发到原始网页的情况都会出现这个问题。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
我的建议最好是监控jsp中的会话,看起来像这样
if (session == null || session.getAttribute("username") == null) {
response.sendRedirect("yourDesiredpage.jsp"); // No logged-in user found, so redirect to login page.
} else {
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
chain.doFilter(req, res);
}
希望这有助于你
答案 1 :(得分:1)
作为一般规则,您应该在提交后始终执行重定向而不是转发(post
)。它避免了浏览器后退按钮的许多问题。这称为post - redirect - pattern