码迷,mamicode.com
首页 > 其他好文 > 详细

解决Session共享

时间:2020-02-12 16:17:23      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:ted   请求   配置   image   rri   inf   username   控制   gap   

举例两种方式实现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:

解决Session共享

标签:ted   请求   配置   image   rri   inf   username   控制   gap   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!