學(xué)習(xí)Spring-Session+Redis實(shí)現(xiàn)session共享的方法
1、添加依賴
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.2.1.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency>
2、配置
spring-mvc.xml:
<bean id="redisHttpSessionConfiguration"
class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
<property name="maxInactiveIntervalInSeconds" value="600"/>
</bean>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="100" />
<property name="maxIdle" value="10" />
</bean>
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
<property name="hostName" value="${redis_hostname}"/>
<property name="port" value="${redis_port}"/>
<property name="password" value="${redis_pwd}" />
<property name="timeout" value="3000"/>
<property name="usePool" value="true"/>
<property name="poolConfig" ref="jedisPoolConfig"/>
</bean>
web.xml添加攔截器:
<filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSessionRepositoryFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、使用spring-session
只要使用標(biāo)準(zhǔn)的servlet api調(diào)用session,在底層就會(huì)通過(guò)Spring Session得到的,并且會(huì)存儲(chǔ)到Redis或其他你所選擇的數(shù)據(jù)源中。
這里是我寫的一個(gè)demo:
/**
* @author fengzp
* @date 17/2/23下午3:19
*/
@Controller
@RequestMapping(value = "index")
public class IndexController {
private final Gson gson = new GsonBuilder().setDateFormat("yyyyMMddHHmmss").create();
@RequestMapping(value = "login")
public String login(HttpServletRequest request, String username){
request.getSession().setAttribute("user", gson.toJson(new User(username,"123456")));
return "login";
}
@RequestMapping(value = "index")
public String index(HttpServletRequest request, Model model){
User user = gson.fromJson(request.getSession().getAttribute("user").toString(), User.class);
model.addAttribute("user", user);
return "index";
}
}
index.jsp:
第一個(gè)tomcat
<html>
<body>
<h2>Hello World!</h2>
<p>${user.username}</p>
</body>
</html>
第二個(gè)tomcat
<html>
<body>
<h2>Hello World! i am the second!</h2>
<p>${user.username}</p>
</body>
</html>
測(cè)試
這里利用上一篇nginx負(fù)載配置的兩個(gè)tomcat來(lái)測(cè)試。
首先訪問(wèn) http://192.168.99.100/feng/index/login.htm?username=nginx 來(lái)觸發(fā)生成session。
查看redis,發(fā)現(xiàn)session已經(jīng)保存到redis。

訪問(wèn) http://192.168.99.100/feng/index/index.htm 來(lái)讀取session, 并刷新多次。


發(fā)現(xiàn)在負(fù)載的情況下讀取session沒(méi)問(wèn)題,并且是同一個(gè)session,成功實(shí)現(xiàn)負(fù)載+session共享!以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot初始化啟動(dòng)報(bào)錯(cuò)Error?creating?bean?with?name?'da
這篇文章主要為大家介紹了Springboot初始化啟動(dòng)報(bào)Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
JDK都出到14了,你有什么理由不會(huì)函數(shù)式編程(推薦)
這篇文章主要介紹了JDK都出到14了,你有什么理由不會(huì)函數(shù)式編程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
簡(jiǎn)單了解Java的默認(rèn)和靜態(tài)方法
這篇文章主要介紹了簡(jiǎn)單了解Java的默認(rèn)和靜態(tài)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
SpringBoot結(jié)合Redis實(shí)現(xiàn)序列化的方法詳解
Spring提供了一個(gè)RedisTemplate來(lái)進(jìn)行對(duì)Redis的操作,但是RedisTemplate默認(rèn)配置的是使用Java本機(jī)序列化。如果要對(duì)對(duì)象操作,就不是那么的方便。所以本文為大家介紹了另一種SpringBoot結(jié)合Redis實(shí)現(xiàn)序列化的方法,需要的可以參考一下2022-06-06
Java反射根據(jù)不同方法名動(dòng)態(tài)調(diào)用不同的方法(實(shí)例)
下面小編就為大家?guī)?lái)一篇Java反射根據(jù)不同方法名動(dòng)態(tài)調(diào)用不同的方法(實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08

