通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器不支持 cookies,或者将浏览器设置为不接受 cookies,我们可以通过 URL 重写来实现会话管理。

实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session ID 。

把 session ID 加到一个连接可以使用一对方法来简化:response.encodeURL() 使 URL 包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL () 来对 URL 进行编码。

encodeURL () 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。

来看下面的例子,两个 JSP 文件:hello1.jsp 和 hello2.jsp,及它们之间的影响。我们在 hello1.jsp 中简单的创建一个会话,并在 session 中存储一个对象实例。接着用户可以点击页面的连接到达 hello2.jsp。在 hello2.jsp 中,我们从 session 中获取原先放置的对象并显示它的内容。注意,我们在 hello1.jsp 中调用了 encodeURL() 方法来获得 hello2.jsp 的链接,使得在浏览器停用 cookies 的情况下,session ID 自动添加到 URL,hello2.jsp 仍能得到 session 对象。

首先在启用 cookies 的情况下运行。然后关闭对 cookie 的支持,重启浏览器,再运行一次。每次你都可以看到会话管理在起作用,并能在页之间传递信息。

注意,广州java如果你想让这个例子能在关闭了 cookies 的浏览器中工作,你的 JSP 引擎必须支持 URL 重写。

hello1.jsp

Integer num = new Integer(100);

session.putValue("num",num);

String url =response.encodeURL("hello2.jsp");

%>

hello2.jsp

hello2.jsp

Integer i= (Integer)session.getValue("num");

out.println("Num value in session is "+i.intValue());

%>

java模拟浏览器不关闭会话_JSP实现浏览器关闭cookies情况下的会话管理相关推荐

  1. Java的流读一行丢一行_java – 在少数特定情况下记录丢失的消息

    我正在使用 java.util.logging来完成我的应用程序的所有日志记录. 直到最近,我在没有任何特定配置的情况下使用日志工具.一切都按预期工作,所有日志都在控制台中可见(stderr) 现在, ...

  2. Java前后端分离第三方登录_网站前后端分离情况下如何实现QQ微信等第三方登陆-Fun言...

    前言 最近在弄第三方登录,实现起来很简单,就是调几个接口获取个人信息即可,详细了解:maven项目整合QQauth2.0第三方登录详细说明,然后因为本网站是前后端分离的,所以不能再回调接口那里直接跳转 ...

  3. Java的长整型Long/long后面的数字什么情况下必须加L?

    [1] 问题的由来   在日常开发中,实体类需要序列化,一般写法如下: public class User implements java.io.Serializable {private stati ...

  4. java启动无线网络连接_在无线模式存在的情况下,如何连接无线网络

    我使用下面的代码在android手机上创建一个无线模式.出于某种原因它每次都会创建一个新模式,因此对于相同的无线网络手机将会有多个模式.是否有办法能实现当一个模式已经存在时,就不要再创建一个新的模式? ...

  5. java 队列和rabbitmq_java – 如何在不使消息出列的情况下浏览rabbitmq中的队列

    我正在尝试获取具有特定相关ID的消息,如rabbitmq docs中所述.但是我看到无关的消息被出列了.我不希望它发生.在得到消息后,我怎么能告诉rabbitmq没有出队,并且知道这不是我想要的那个. ...

  6. java 改像素不改尺寸_如何不改变分辨率的情况下缩小尺寸PNG图片

    有的地方(比如腾讯自制APP的图标)对上传的图片不仅有格式的限制,并且还有分辨率和大小的限制,那要如何在不改变格式和分辨率的前提下,缩小图片大小呢? 通常来说,要把一张图片缩小,可以减小它的尺寸,或者 ...

  7. java读取rvt文件数据_在不打开Rvt文件情况下读取rvt 里的信息

    https://blog.csdn.net/The_Eyes/article/details/52328305 在Revit中插件中可以在后台打开rvt文件,并且访问他的数据,但是这个数据读取时依赖于 ...

  8. java模拟使用接口,关于java:模拟一个类与模拟它的接口

    对于单元测试,我需要模拟几个依赖项.依赖项之一是实现接口的类: public class DataAccessImpl implements DataAccess { ... } 我需要设置一个这个类 ...

  9. 通过Xvfb实现无显示器情况下调用浏览器

    今天要记录的是通过Xvfb实现无显示器情况下调用浏览器,实现浏览器视频功能. 问题是这样的,最近我在学openVidu的相关技术,测试类中有通过浏览器去调取视频的相关代码,在windows操作系统下能 ...

最新文章

  1. 百度:2020年十大科技趋势
  2. 宁波机器人餐厅需要预约吗_拍婚纱照需要预约吗 预约婚纱照需要注意哪些问题...
  3. 【2】HashMap
  4. 【数据结构与算法】之深入解析“石子游戏VII”的求解思路与算法示例
  5. 微软公布 Windows Phone 8 多项新特性
  6. 单片机oled显示浮点数函数_问中文编程在单片机上实现一个电子时钟,总共有几步?...
  7. 谁顶住双11的世界级流量洪峰?神龙架构负责人等9位大牛现场拆解阿里秘籍
  8. Qt工作笔记-Linux上字体问题,导致所有文字重叠在一起
  9. android向h5传递参数,H5与安卓传递多个参数
  10. shared_ptr and
  11. pv 6.3升级日志
  12. MySQL常用函数之聚合函数
  13. ArcPad 10 的安装和部署
  14. 使用UltraISO将苹果dmg镜像转换标准ISO镜像
  15. 发现同义词 python_同义词查找算法
  16. 从0开始的TypeScriptの八:类
  17. 中小网吧网络安全解决方案(转)
  18. 牛牛的闹钟--网易2019实习生招聘编程题
  19. iOS- 网络访问JSON数据类型与XML数据类型的实现思路及它们之间的区别
  20. 使用BIOS进行键盘输入和磁盘读写

热门文章

  1. python中lines是什么类型_python里的splitlines详解
  2. stm32之ADC应用实例(单通道、多通道、基于DMA)
  3. .net get set 初始化_RAM初始化的下板验证(Xilinx)
  4. 到底什么是AI0T?现在不少头部企业都在打造AIOT概念,今天我们就梳理一下AIOT产业都包含了哪些,启明云端在AIOT中,能提供哪些解决方案?
  5. 用启明云端支持ESP32的GUI做了一个测温HMI交互界面
  6. android 自动补全方法,Android零基础入门|自动完成文本框AutoCompleteTextView
  7. 广东计算机好的2a学校,广东专插本2A院校排名情况
  8. JSDoc --JS API文档生成器
  9. 国产linux 中标麒麟安装.net core sdk
  10. chage 修改用户密码有效期限的命令