Jsp 将页面重定向到自定义页面,而不是默认显示“自定义”;“网页已过期”;使用后退/前进按钮时
我正忙于一个只有一个页面的网站,只有在登录后才能访问:Jsp 将页面重定向到自定义页面,而不是默认显示“自定义”;“网页已过期”;使用后退/前进按钮时,jsp,servlets,Jsp,Servlets,我正忙于一个只有一个页面的网站,只有在登录后才能访问:home.jsp。一旦用户使用有效会话登录,如果他按下浏览器上的“后退”按钮,那么他应该被重定向到login.jsp,如果他按下浏览器的“前进”按钮,则再次被重定向到login.jsp。没有登录,他应该无法访问home.jsp。在进行了一些搜索之后,我实现了: <% response.setHeader ( "Cache-Control","no-cache,no-store,must-revalidate"); response.s
home.jsp
。一旦用户使用有效会话登录,如果他按下浏览器上的“后退”按钮,那么他应该被重定向到login.jsp
,如果他按下浏览器的“前进”按钮,则再次被重定向到login.jsp。没有登录,他应该无法访问home.jsp
。在进行了一些搜索之后,我实现了:
<%
response.setHeader ( "Cache-Control","no-cache,no-store,must-revalidate");
response.setHeader("Pragma","no-cache");
response.setDateHeader ( "Expires", 0)
%>
在home.jsp
页面上,按下“前进”按钮时,显示网页已过期,但我要查找的是我的cutom页面,类似于sessionExpired.jsp
的内容是再次登录
请帮助我解决此问题。实现此模式。因此,每次终端用户发送(成功的)POST请求时,都要向目标页面发送重定向。这样,“后退”按钮将指向重定向的GET请求,而不是POST请求(因为您指示浏览器不缓存它,所以POST请求显然已过期)
例如,在处理登录的doPost()
方法中:
User user = userService.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
response.sendRedirect("nextpage.jsp"); // Here, you need to send a redirect to landing page after login.
}
实现该模式。因此,每次终端用户发送(成功的)POST请求时,都要向目标页面发送重定向。这样,“后退”按钮将指向重定向的GET请求,而不是POST请求(因为您指示浏览器不缓存它,所以POST请求显然已过期)
例如,在处理登录的doPost()
方法中:
User user = userService.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
response.sendRedirect("nextpage.jsp"); // Here, you need to send a redirect to landing page after login.
}
@BalusC--谢谢,我可以使用与requestDispatcher
方法相同的逻辑吗?在该方法中,我将通过rdObj.forward(请求,响应)-requestDispatcher对象指向目标。这不会发送重定向。它发送一个转发。你明白其中的区别吗?@BalusC--谢谢,我可以使用与requestdispather
方法相同的逻辑吗?我将通过rdObj.forward(request,response)---requestdispather对象指向目标。这不会发送重定向。它发送一个转发。你明白其中的区别吗?