首先说下
http>https>http
session是不会丢失的。
这个就是用户登录时候通过http访问了首页,或者页面,然后点击登录按钮,跳转到https协议下,输入完毕用户名密码等信息,登录录成功,在服务端session放入当前登录用户信息.
这种跳转方式不会出现session丢失情况。
这时候,如果用户没有访问你的http页面,而是直接通过https访问你的登录页面,这时候就是
https>http
用户输入完用户名密码等信息,登录成功,在服务端session放入当前用户信息, 再跳转回http的页面, session就丢失了, 说丢失可能不严谨(其实session还在服务端保存,只是tomcat帮我们创建了新的session id导致我们的会话跟踪失效)
以上是问题的描述
下面说解决办法。 我的项目是ssh架构的, 其他语言或者架构触类旁通即可.
解决之前首先我们要明白 服务端跟踪客户端的会话是通过 浏览器每次提交的一个cookie表示 这个cookie的key是JSESSIONID,value是session的id,
浏览器请求时候就会带上这个,服务端就可以成功跟踪客户端了。
问题的解决原理说清楚了。 现在说说代码怎么写
这里就以我的项目为例了。
用户直接访问https的登录页面,我这里留给客户端的链接是要经过struts的action的。 在action中
- HttpServletRequest request = ServletActionContext.getRequest();
- HttpServletResponse response=ServletActionContext.getResponse();
- Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
- response.addCookie(cookie);
假如我们不这样写,tomcat会发给浏览器jsessionid是重新创建的,就会出现session丢失情况,这样写了之后再从https>http就不会有问题了。
上面如有不对, 欢迎批评指正!
相关推荐
网上很多说是支持的,其实都不行,基本上是各个依赖包之间的版本不兼容或者依赖包不全,我这个包是一个一个依赖下载的,完美同步Seesion,解决老架构下的单Web应用,利用集群支持大并发,补救方案。
会话存储同步跨浏览器选项卡从相同来源同步本地和会话存储。 Typescript友好,无需@types 专为amd模块装载机而打造建造克隆仓库npm install -g打字稿$ TSC 修改module选项以支持所需的任何模块加载器用法该模块将...
语言:English 一个简单的会话管理器,可在您的PC之间进行同步 使用会话管理器,您可以将标签分组并保存到多个会话中。...此扩展是开源的,可在https://github.com/rjgtav/chrome-session-manager上获得。
西瓜 在WatermelonDB和Firestore之间进行同步的一种简单方法。安装使用npm: $ npm install firemelon使用纱: $ yarn add firemelon兼容性Firemelon可与 firebase 和用法import { syncFireMelon } from 'firemelon'...
特征同步安装之间的会话通过新注册验证用户电子邮件通过手动管理员操作验证用户电子邮件通过电子邮件验证码验证用户电子邮件防止用户表单更改电子邮件显示历史会话如果用户不存在,则自动添加新订户注销时销毁会话...
特征: (SG),推荐示例(SSR)示例,以备不时之需使用useUser钩子和模块在浏览器窗口/选项卡之间同步登录状态根据用户的登录/注销状态进行的布局会话数据已在Cookie中签名和加密还支持: Express / Connect中间件...
特征: (SG),推荐示例(SSR)示例,以备不时之需使用withUser hook和模块在浏览器窗口/选项卡之间同步登录状态根据用户的登录/注销状态进行的布局会话数据已在Cookie中签名和加密在线演示,为 :eyes:自己部署...
理解系统的关键是搞清GridView、内存数据表与Session对象三者之间的关系。 系统的执行过程是: 进入“主界面”,显示商品分类,以及欢迎界面;在分类数据表(Categories)中任选一种数据类型,同步打开“产品”网页...
FastDHT是一个基于键值对的高效分布式hash系统, 可以存储文件名和 file_id的映射表 、session数据、用户相关等 ,底层采用erkeley DB做数据库 来持久存储数据 持久存储数据 (也可以使用SSDB),数 据同步方式是使用...
151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、...
151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、...
16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,...
处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...
处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...
19、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,...
所有有趣的“会话保存”扩展似乎都太杂乱了,还是没有在chrome实例之间同步您的会话?然后,此扩展程序适合您!这是一个suuuuper简单扩展,可让您单击两次即可将当前窗口中的选项卡另存为书签!第一:单击chrome工具...
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍...