解决Session共享

举例两种方式实现Session共享问题

方法一:Nginx通过负载均衡IP地址固定绑定,解决Session共享

1. 修改Nginx.conf文件

2. 编写一个servlet并启动两个tomcat模拟session共享失败状态

@WebServlet("/NginxSessionServlet")
public class NginxSessionServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("当前请求端口号:"+req.getLocalPort());
        String action=req.getParameter("action");
        //像session中存放数据
        if(action.equals("setSession")){
            req.getSession().setAttribute("username","lisi");
        }else if (action.equals("getSession")){
            resp.getWriter().write((String)req.getSession().getAttribute("username"));
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

3. 从nginx运行页面存数据

4. 控制台效果  当前走的时8080端口

5. 运行页面取数据

6. 控制台效果  还是走8080端口

7. 我们再走一遍取数据方法  控制台效果

方法二:Spring-session+Redis解决Session共享

1. 创建Controller编写存取数据的方法

@RestController
public class SessionController {
    //存放session值
    @RequestMapping("setSession")
    public String setSession(HttpServletRequest request){
        request.getSession().setAttribute("username","zhangsan");
        return "success";
    }
    //获取session
    @RequestMapping("getSession")
    public String getSession(HttpServletRequest request){
        return (String)request.getSession().getAttribute("username");
    }
}

2. 创建启动类

@SpringBootApplication
public class SpringBootStart {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootStart.class);
    }
}

3. 编写Application.yml文件

server:
  port: 8080

#redis配置
spring:
  redis:

4. 启动两遍启动类分别是8080端口和8090端口

5. 启动运行本地Redis

6. 运行页面访问存放数据地址

6.  查看Redis

7. 访问获取数据地址

8.  现在更换端口号获取数据

server:  port: 8080

#redis配置spring:  redis:

原文地址:https://www.cnblogs.com/1314Justin/p/12299305.html

时间: 2024-08-06 10:10:48

解决Session共享的相关文章

解决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; } } 这样就可以,但是

解决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服