解决session共享问题

方法一

使用Nginx让它绑定ip(没有共享所以就没有共享问题了)

配置Nginx

upstream backserver {
	ip_hash;
	server localhost:8080;
	server localhost:8081;
}
server {
	listen       80;
	server_name  www.wish.com;
	location / {
		proxy_pass http://backserver;
		index index.html index.htm;

        }
}

  

这样就可以,但是还是没用根本的解决问题,所以使用下面这个

方法二:

使用spring session+redis的方法解决session共享问题

第一步:导入依赖

   <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!-- spring-boot-starter-web是为我们提供了包括mvc,aop等需要的一些jar -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 因为我们已经配置了 parent 中的version 所以这里不需要指定version了 -->
        </dependency>
        <!--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>

  

注意:spring session的版本最高是1.3.5.RELEASE

第二步:配置application.properties

server.port=8081

spring.redis.password=redis

  

注意:redis的密码一定要填写对

第三步:写一个controller进行测试

package com.wish.session;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class SessionController {
    //存放Session值
    @RequestMapping("/setSession")
    public String setSession(HttpServletRequest request){
        System.out.println("123456");
        request.getSession().setAttribute("username","zhangsan");
        return "success";
    }

    //获取Session值
    @RequestMapping("/getSession")
    public String getSession(HttpServletRequest request){
        System.out.println("123456");
        return (String)request.getSession().getAttribute("username");
    }
}

  

测试结果:

页面

redis:会生成一个spring的文件(用于存储session)

原文地址:https://www.cnblogs.com/wishsaber/p/12299982.html

时间: 2024-10-31 11:32:50

解决session共享问题的相关文章

解决Session共享

举例两种方式实现Session共享问题 方法一:Nginx通过负载均衡IP地址固定绑定,解决Session共享 1. 修改Nginx.conf文件 2. 编写一个servlet并启动两个tomcat模拟session共享失败状态 @WebServlet("/NginxSessionServlet") public class NginxSessionServlet extends HttpServlet { @Override protected void doPost(HttpSer

解决session共享的几种思路

session与cookie的区别在于:session是保存在服务器端,cookie保存在客户端.session怎么样保存的?以文件的形式保存. 第一种办法:把原来存储在服务器磁盘上的session数据存储到客户端的cookie中去.php由原来的"从本地(也就是服务器)磁盘上读取session数据"转变为"浏览器的cookie中读取数据",一般是把session数据按照自己定义的加密规则,加密后后存在cookie中.数据保存在cookie中这种做法有好处,也有坏处

spring boot + session+redis解决session共享问题

自己没有亲自试过,不过看了下这个例子感觉靠谱,以后做了测试,在加以说明.

nginx 解决session共享问题(jvm-route)方式

1.下载安装jvm_route:http ://nginx-upstream-jvm-route.googlecode.com/svn/trunk/nginx-upstream-jvm-route-read-only cd /usr/src/nginx-1.2.1 patch - p0 < /usr/local/nginx/nginx_upstream-jvm-route-read-only/jvm_route.patch ./configure --add-module=/usr/local/

解决nginx负载均衡的session共享问题

PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题: 1.不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站.你访问web服务器A,产生了session然后把它放到cookie里面,当你的

怎么样 解决nginx负载均衡的session共享问题呢

php服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题: 1.不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站.你访问web服务器A,产生了session然后把它放到cookie里面,当你的

解决nginx负载均衡的session共享问题 (转)

转: http://blog.csdn.net/xluren/article/details/16951247 查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享 PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题: 1.不使用session,换用cookie session是存放在服务器端的,co

如何运用PHP+REDIS解决负载均衡后的session共享问题

一.为什么要使用Session共享? 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名.密码在整个网站的各个模块中都是可以登录使用的.各个服务器共享用户数据是比较容易实现的,只需要在后端放个数据库服务器,各个服务器通过统一接口对用户数据进行访问即可.但还存在一个问题,就是用户在这个服务器登录之后,进入另一个服务器的别的模块时,仍然需要重新登录,这就是一次登录,全部通行的问题,映射到技术上,其实就是各个

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服