退出后点击浏览器后退不能回到成功页面;直接进入页面和跳转进入页面样式不同;防止直接输入页面地址或servlet;当servlet跳servlet时,进行其他操作后后退出现错误!

本文主要是介绍退出后点击浏览器后退不能回到成功页面;直接进入页面和跳转进入页面样式不同;防止直接输入页面地址或servlet;当servlet跳servlet时,进行其他操作后后退出现错误!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何实现:
 一,不能直接进入页面或者直接访问servlet,必须通过页面点击的方式!即不能直接输入url/页面地址进入页面,这是为了防止在登录的情况下,直接输入url/页面地址访问登录成功后的页面!
  
  * 只需要在拦截器中获取referer头:request.getHeader("referer")。
   > 如果为null,表示是直接输入url/页面地址进入的!这是就直接跳转到指定页面,不让他得逞!
   > 如果不为空,则放行或进行其他操作!
  
  * 这样还能防止:直接进入页面和通过跳转进入页面的样式不同的问题!!!


 
 二,直接进入页面和跳转进入页面的样式不同。
  
  * 出现这个错误的前提是存放jsp页面的文件夹和存放css/js的文件夹在同一级文件夹里,解决方法有两个:
   > 1,将jsp页面提出来,和存放css/js的文件夹同级!
   > 2,防止直接输入url地址进入页面,必须通过web程序跳转进入!参照一
  
 三,成功页面(success.jsp)退出(session.invalidate())后跳转到登录页面(login.jsp),
 点击浏览器后退不会回到先前成功页面,还是登录页面,且地址栏一直是login.jsp不变。
  
  * 因为浏览器前进后退是直接读取浏览器缓存的html页面,而不是访问服务器。
  所以只要禁用浏览器缓存即可在后退前进时再去访问服务器,只要它访问服务器,我们这时就可以使用拦截器,
  判断session中是否有登录信息!这样就可以实现退出后点击浏览器后退不能退回到成功页面而是一直在登录页面!
  
  * 退出时跳转到登录页面使用重定向而不是转发,就可以实现推出后点击后退地址栏一直是login.jsp!


  
 四,禁用浏览器缓存时(为了实现1),在访问servlet时这个servlet又跳另一servlet再跳页面时(edit.jsp(编辑页面)->editServlet(编辑信息)->getMsgServlet(获取信息)->show.jsp(展示页面)),
 点击其他操作再点击浏览器后退(想回到show.jsp)时,会出现页面出错的问题!如何避免?
  
  * 我们在整个流程中,先去editServlet,再转发到另一getMsgServlet时是用的转发,所以在show.jsp点击其他操作后再后退时(即后退到show.jsp)时,地址栏是editServlet!!!这是关键!
  所以我们只需要在editServlet跳到getMsgServlet时用重定向而不是转发,这样就是通过客户端跳转的getMsgServlet!返回时的地址栏就是getMsgServlet了,这样就可以解决这个问题!
  
  * 这是因为禁用浏览器缓存时,每次前进后退都会去访问服务器,当我们返回时,如果地址栏是editServlet,由于它是服务端跳转的,不是客户端跳转的,相当于没有之前的页面!所有没办法回到之前的页面!所有浏览器报错!
  所以我们只需要让servlet跳servlet时使用重定向而不是转发即可,就相当于是客户端跳转了!相当于有那个页面了!这是后退才能回到之前的页面!


 
 

这篇关于退出后点击浏览器后退不能回到成功页面;直接进入页面和跳转进入页面样式不同;防止直接输入页面地址或servlet;当servlet跳servlet时,进行其他操作后后退出现错误!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908855

相关文章

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su