session

Session共享

家住魔仙堡 提交于 2020-02-12 15:06:36
  1.Nginx通过负载均衡IP地址固定绑定,解决Session共享 upstream backserver { ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8090; } server { isten 80; server_name www.wdksoft.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://backserver; index index.html index.htm; } }   2.Spring-session+Redis解决Session共享     2.1 保证Redis启动     2.2 导入依赖 <!--spring boot 与redis应用基本环境配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <!--spring session 与redis应用基本环境配置,需要开启redis后才可以使用,不然启动Spring boot会报错 -->

cookie和session

自作多情 提交于 2020-02-12 14:48:09
1、什么是cookie和session? cookie是网站用来辨别用户身份,进行会话跟踪,存储在本地终端上的数据。 session(会话)起来本含义是指有始有终的一系列动作和消息。在web中,session主要用来在服务器端存储特定用户对象会话所需要的信息。 2、cookie和session产生的原因: http协议是一个无状态协议,在特定操作的时候,需要保存信息,进而产生了cookie和session。 3、cookie原理: 由服务器来产生,浏览器第一次请求,服务器发送给客户端进而保存。 浏览器继续访问时,就会在请求头的cookie字段上附带cookie信息,这样服务器就可以识别是谁在访问了。 但是cookie存在缺陷: 1、不安全--本地保存,容易被篡改。 2、大小受限,本身最大4kb。 cookie虽然在一定程度上解决了‘保持状态’的需求,但是我们希望有一种新的技术可以克服cookie缺陷,这种技术就是session。 4、session原理: session在服务器保存。----解决安全问题。 问题来了:服务器上的session,但是客户端请求发送过来,服务器如何知道session_a,session_b,到底和那个请求对应。 所以为了解决这个问题:cookie就作为这个桥梁。在cookie有一个sessionid字段

Spring-session+Redis解决Session共享

自古美人都是妖i 提交于 2020-02-12 14:10:16
   1. 保证Redis启动 2. 导入依赖 SpringBoot+Spring-Session+Redis <!--spring boot 与redis应用基本环境配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId></dependency> <!--spring session 与redis应用基本环境配置,需要开启redis后才可以使用,不然启动Spring boot会报错 --><dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> 3. 配置大配置文件application.yml server: #port: 8080 port: 8081 #redis配置

Nginx绑定IP,解决session共享

纵饮孤独 提交于 2020-02-12 14:04:43
1.Nginx通过负载均衡IP地址固定绑定,解决Session共享 upstream note.java.itcast.cn{      ip_hash;   server localhost:8080 weight=1;   server localhost:8081 weight=1;    } server { listen 80; server_name note.java.itcast.cn; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://note.java.itcast.cn; index index.html index.htm; } } 只需要在 upstream添加一个 ip_hash;属性, 相同的请求就会一直请求第一次绑定的这个IP 实现方式 新建一个servlet用于接收请求 @WebServlet("/NginxSessionServlet") public class NginxSessionServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws

Session共享解决方案

放肆的年华 提交于 2020-02-12 13:23:09
使用nginx做的负载均衡添加一个ip_hash配置   步骤一:创建一个工程,启动两个Tomcat        步骤二:编写一个servlet测试   @WebServlet("/nginxSessionServlet") public class NginxSessionServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("当前使用端口:"+req.getLocalPort()); String action = req.getParameter("action"); if (action.equals("setSession")){ req.getSession().setAttribute("username",

javaweb--过滤器filter/监听器

我的未来我决定 提交于 2020-02-12 13:10:00
文章目录 一、过滤器filter 1、编写字符编码过滤器 2、实现权限拦截的过滤器 二、监听器 一、过滤器filter 1、编写字符编码过滤器 编写一个实现servlet接口的程序 public class ServletShow extends HttpServlet { @Override protected void doGet ( HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException { resp . getWriter ( ) . print ( "你好,世界!" ) ; } @Override protected void doPost ( HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException { doGet ( req , resp ) ; } } 可以发现在网页打印出来的为乱码 1、用过滤器进行编码设置,使得打印出来的为正常中文 public class FilterDemo implements Filter { @Override public void init ( FilterConfig

node通过session保存登录状态

佐手、 提交于 2020-02-12 11:38:51
本文介绍下node通过session保存登录状态 (1)需求分析   1、登录成功后下拉框显示当前登录用户:xxx;2、隐藏登录和注册按钮。这里便需要用到session      关于cookie和session详见文章 node之cookie和session对比 . (2) (3) (4) . 来源: https://www.cnblogs.com/jianxian/p/12298132.html

[导入]跨平台跨服务器跨网站SSO(单点登录)方案的DEMO

二次信任 提交于 2020-02-12 08:28:44
登录 1. 打开 A 网站进行登录; 2. 检测 Login 服务器是否可用; 3. 如果 Login 服务器可用,检测发现 Login 服务器 Session 未创建; 4. 重定向到 A 网站的页面,接受 Login 服务器传来的 Key 和 UID 组成的类序列化后的数据; 5. 得到的 Key 是 1 ,说明 Login 服务器 Session 未创建,在 A 网站创建 Session ,登录完成后使用 <script> 访问 Login 服务器上的页面创建 Session 并记录网站名和网站登出页面地址; 6. 打开 B 网站登录,发现没有登录,检测 Login 服务器是否可用; 7. 如果 Login 服务器可用,检测发现 Login 服务器 Session 已经创建并记录网站名和网站登出页面地址; 8. 重定向到 B 网站的页面,接受 Login 服务器传来的 Key 和 UID 组成的类序列化后的数据; 9. 得到的 Key 不是 1 ,说明 Login 服务器 Session 已经创建,根据 Key 到数据库进行验证,验证通过后在 B 网站创建 Session 。 登出 1. 每个网站都有登出按钮,点击按钮后先清空本地 Session ; 2. 然后检测 Login 服务器是否可用; 3. 可用的话跳转到 Login 服务器的登出页面; 4. 根据 Session

跨服务器之间的session共享

大兔子大兔子 提交于 2020-02-12 06:56:25
跨服务器之间的Session共享方案需求变得迫切起来,最终催生了多种解决方案,下面列举4种较为可行的方案进行对比探讨: 1. 基于NFS的Session共享 NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。 这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的 本地session目录即可,缺点是NFS依托于复杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。 2. 基于数据库的Session共享 首选当然是大名鼎鼎的Mysql数据库,并且建议使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强,相信大家普遍在 使用,它的缺点在于session的并发读写能力取决于Mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除 session记录,当并发过高时容易出现表锁,虽然我们可以选择行级锁的表引擎,但不得不否认使用数据库存储Session还是有些杀鸡用牛刀的架势。 3. 基于Cookie的Session共享 这个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密

学习 Spring (三) Bean 的配置项 & 作用域

可紊 提交于 2020-02-12 05:49:14
Spring入门篇 学习笔记 配置项 Id: 整个 IoC 容器中的唯一标识 Class: 具体实例化的类(必须配置项) Scope: 作用域 Constructor arguments: 构造器参数 Properties: 属性 Autowiring mode: 自动装配模式 lazy-initialization mode: 懒加载模式 Initialization/destruction method: 初始化/销毁 方法 作用域 singleton: 单例(默认模式),指一个 Bean 容器中只存在一份 prototype: 每次请求(每次使用创建新的实例),destory 方式不生效 request: 每次 http 请求创建一个实例且仅在当前 request 內有效 session: 同上,每次 http 请求创建,当前 session 内有效 global session: 基于 portlet 的 web 中有效(portlet 定义了 global session),如果是在 web 中同 session 作用域示例 添加 BeanScope: public class BeanScope { public void say() { System.out.println("BeanScope say : " + this.hashCode()); } }