1. 程式人生 > >使用spring session解決session共享問題

使用spring session解決session共享問題

在Web專案中配置Spring Session分為四步:

  • 搭建用於Spring Session的資料儲存
  • 將Spring Session的jar檔案新增到web應用中
  • 將Spring Session filter新增到web應用的配置中
  • 配置Spring Session如何選擇session資料儲存的連線

一、匯入Maven依賴

藉助像Maven或Gradle這樣的依賴管理器,將Spring Session新增應用中是很容易的。

<dependency>
    <groupId>org.springframework.session</groupId
>
<artifactId>spring-session-data-redis</artifactId> <version>1.3.0.RELEASE</version> <type>pom</type> </dependency> <dependency> <groupId>biz.paluch.redis</groupId> <artifactId>lettuce</artifactId> <version
>
3.5.0.Final</version> </dependency>

二、 新增Spring配置檔案

進行配置前,需要先安裝redis,然後基於redis進行一系列的配置。Linux下的redis安裝教程:Linux下redis安裝和部署 ,windows下直接官網下載,執行即可。
添加了必要的依賴之後,我們需要建立相應的Spring配置。Spring配置是要建立一個Servlet過濾器,它用Spring Session支援的HttpSession實現來替換容器本身HttpSession實現。這一步也是Spring Session的核心。(注意:需新增對應的xml宣告檔案)

    <!-- 建立名為 springSessionRepositoryFilter 的Spring Bean,繼承自Filter。
        springSessionRepositoryFilter替換容器預設的HttpSession支援為Spring Session,
        將Session例項存放在Redis中 -->
    <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
    <!-- 使用LettuceConnectionFactory -->
    <bean class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory">
        <property name="hostName" value="127.0.0.1"/>
        <property name="port" value="6379"/>
    </bean>
    <!-- 讓Spring Session不再執行config命令 -->
    <util:constant static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/>

三、在web.xml中新增相應的filter過濾器

在web.xml中加入以下過濾器,注意如果web.xml中有其他過濾器,一般情況下Spring Session的過濾器要放在第一位

<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>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

相關推薦

使用spring session解決session共享問題

在Web專案中配置Spring Session分為四步: 搭建用於Spring Session的資料儲存 將Spring Session的jar檔案新增到web應用中 將Spring Session filter新增到web應用的配置中 配置Sprin

nginx簡單入門和redis+session解決session問題

nginx是什麼? nginx高效能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器,IMAP就是internet mail acceess protocol(郵件訪問協議),和POP3的區別是它不需要使用者把所有郵件下載,可以

spring boot + session+redis解決session共享問題

tar session tail ref href spring pan dream spa 自己沒有親自試過,不過看了下這個例子感覺靠譜,以後做了測試,在加以說明。spring boot + session+redis解決session共享問題

使用Spring Session和Redis解決分布式Session跨域共享問題

默認 mark value des nested project pty 錯誤 lte 前言 對於分布式使用Nginx+Tomcat實現負載均衡,最常用的均衡算法有IP_Hash、輪訓、根據權重、隨機等。不管對於哪一種負載均衡算法,由於Nginx對不同的請求分發到某一個To

基於 spring-session 解決分散式 session 共享問題

摘要:本文主要研究 基於 spring-seesion 解決分散式 session 的共享問題。首先講述 session 共享問題的產生背景以及常見的解決方案;然後講解本文主要研究的 spring-session 的概念和功能;接著演示了 spring-session 的兩種

利用spring session解決共享Session問題

1.共享Session問題 HttpSession是通過Servlet容器建立和管理的,像Tomcat/Jetty都是儲存在記憶體中的。而如果我們把web伺服器搭建成分散式的叢集,然後利用LVS或Nginx做負載均衡,那麼來自同一使用者的Http請求將有可能被分發到兩個不

Spring Boot中使用Spring Session解決分散式會話共享問題

如果你正在使用Java開發Web應用,想必你對HttpSession非常熟悉,但我們知道HpptSession預設使用記憶體來管理Session,如果將應用橫向擴充套件將會出現Session共享問題。 Spring Session提供了一套建立和管理Servlet Ht

解決session共享的幾種思路

數據共享 解決 png coo img 內置 文件中 請求 方案 session與cookie的區別在於:session是保存在服務器端,cookie保存在客戶端。session怎麽樣保存的?以文件的形式保存。 第一種辦法:把原來存儲在服務器磁盤上的session數據存儲到

spring cloud redis session共享

mvn依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start

20181101-springBoot解決Session共享問題

1、session共享的解決方案 ①使用spring-session+redis解決 ②使用負載均衡策略的ip繫結解決 ③tomcat配置session共享 2、springBoot2.0.6下使用springSession+redis實現Session共享 ①pom.xml引入依賴

Spring Boot Redis session共享

Spring Boot Redis session共享 配置Maven依賴 RedisSessionConfig application.properties application.yml 配置Maven依賴 <dep

(三)配置nginx負載tomcat,redis解決session共享

Nginx ("engine x") 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的。 何為反向代理呢?即以代理伺服器來接受internet上的連線請求,然後將請

Apache shiro叢集實現 (六)分散式集群系統下的高可用session解決方案---Session共享

      Apache Shiro的基本配置和構成這裡就不詳細說明了,其官網有說明文件,這裡僅僅說明叢集的解決方案,詳細配置:shiro web config     Apache Shiro叢集要解決2個問題,一個是session的共享問題,一個是授權

Spring-Session實現Session共享實現原理以及原始碼解析

知其然,還要知其所以然 ! 本篇介紹Spring-Session的整個實現的原理。以及對核心的原始碼進行簡單的介紹! 實現原理介紹 實現原理這裡簡單說明描述: 就是當Web伺服器接收到http請求後,當請求進入對應的Filter進行過濾,

spring-session和redis解決spring cloud中session不一致性問題

       現在都比較流行使用spring boot來進行開發,使用spring cloud來搭建分散式。在搭建的時候會涉及到一個關鍵的問題,session統一的問題。使用zuul作為閘道器轉發來呼叫其他模組,zuul中的session和其他模組的session會不一致,同

session跨域共享問題解決方案

在討論session跨域共享問題之前,我們首先要了解session做了什麼,沒做到什麼 HTTP是無狀態的,也就是說伺服器不知道誰訪問過他,但是有時候,又需要我們去保留這個狀態比如說使用者的登入資訊,如果每次訪問都要登陸,這個使用者體驗實在是太糟糕了,ses

Spring Data實現分散式共享session

1、自定義HttpSession實現Session https://www.cnblogs.com/youzhibing/p/7348337.html 2、Spring整合Jedis2.9(叢集帶密碼版) https://blog.csdn.net/cslucifer/article/d

sso單點登入系統(解決session共享

場景:假設一個使用者將自己的登入資訊提交到後臺,如果session儲存的資訊分佈在多臺機器上,並且不共享,那麼可能導致使用者的登入資訊出現短暫的丟失,為什麼這樣講,因為使用者訪問伺服器中間還要經過負載均衡伺服器,負載均衡採用輪詢的方式轉發使用者的登入請求。有可能訪問到的那臺

linux負載均衡之後解決session共享問題

個人建議:還是選擇ip_hash把,雖然輪不到我實現這個功能,但個人感覺不是真正大牛的話還是穩妥一些比較好 1) 不使用session,換作cookie 能把session改成cookie,就能避開session的一些弊端,在從前看的一本J2EE的書上,也指明在集群系統中

Spring MVC 使用 Spring Session 實現 Session 共享-Redis

使用Spring Session 通過 Redis 實現 Session 共享,用於多例項應用 Session 共享的簡單原理 使用者第一次訪問應用時,應用會建立一個新的 Session,並且會將 Session 的 ID 作為 C