解決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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM