我正在研究 Jsp-servlet。我有 3 个 jsp 页面。一个用于登录,成功登录后它将显示员工的记录然后注销。所以我的问题是注销后当我按下后退按钮时它会显示员工的记录,所以我禁用后退按钮并清除缓存.并将其重定向到登录页面
但是现在的问题是,当用户成功登录后,在他的记录页面上,如果他按下返回按钮,登录页面就会显示而无需按注销。对此有什么解决方案?
You can disable back button ,but you should not do it like this , instead you should tell the browser not to cache the page , which is being loaded from the cache on back button after logout . Servlet Filters would be best suited for pre-process the request .You could do something like this in your filter :
response.setHeader("Cache-Control","no-cache");
I think in your case you might have been clearing the cookies too , which would invalidate the session and would redirect you to login page as you implemented . It would be better if you can provide the code .
当我们按下后退按钮时,会话不会失效。这不是因为缓存(尝试在显示员工仪表板的页面中打印日期。每次我们按下前进按钮时,新请求都会发送到服务器)。
我添加了: response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("过期", 0); 但它不锻炼。
所以你可能需要添加一个java脚本来禁用你的后退按钮(客户端可能禁用js,所以不是解决方案)或者另一个解决方案是在你的第一个jsp中添加一个条件,即只有当用户名(或您正在使用的任何属性)在会话中为空。
如果您按下返回按钮,即如果会话没有失效,那么用户名仍然存在,您可以只显示已经登录的人并在那里提供注销按钮。
或者,您可以在 LoginPage jsp 中检查 sessionAttribute 中的 session 参数,而不是 null 使会话无效。
<script>
$(document).ready(function() {
function disableBack() { window.history.forward() }
window.onload = disableBack();
window.onpageshow = function(evt) { if (evt.persisted) disableBack() }
});
</script>
我们只能在该 jsp 页面上使用 java 脚本禁用后退键。