中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

詳解Spring-Boot集成Springsession并存入redis

spring Session 提供了一套用于管理用戶 session 信息的API和實(shí)現(xiàn)。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出倉山免費(fèi)做網(wǎng)站回饋大家。

Spring Session為企業(yè)級Java應(yīng)用的session管理帶來了革新,使得以下的功能更加容易實(shí)現(xiàn):

  1. 編寫可水平擴(kuò)展的原生云應(yīng)用。
  2. 將session所保存的狀態(tài)卸載到特定的外部session存儲(chǔ)中,如redis或Apache Geode中,它們能夠以獨(dú)立于應(yīng)用服務(wù)器的方式提供高質(zhì)量的集群。
  3. 當(dāng)用戶使用WebSocket發(fā)送請求的時(shí)候,能夠保持HttpSession處于活躍狀態(tài)。
  4. 在非Web請求的處理代碼中,能夠訪問session數(shù)據(jù),比如在JMS消息的處理代碼中。
  5. 支持每個(gè)瀏覽器上使用多個(gè)session,從而能夠很容易地構(gòu)建更加豐富的終端用戶體驗(yàn)。
  6. 控制session id如何在客戶端和服務(wù)器之間進(jìn)行交換,這樣的話就能很容易地編寫Restful API,因?yàn)樗梢詮腍TTP 頭信息中獲取session id,而不必再依賴于cookie。

Spring-Boot集成Spring session并存入redis

添加maven依賴

Redis的相關(guān)依賴可以看之前的內(nèi)容,這里需要增加如下依賴。

<dependency> 
   <groupId>org.springframework.session</groupId> 
   <artifactId>spring-session</artifactId> 
</dependency> 

Java代碼實(shí)現(xiàn)

增加HttpSessionConfig。

package com.core.config; 
 
import org.springframework.context.annotation.Bean; 
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; 
import org.springframework.session.web.http.HeaderHttpSessionStrategy; 
import org.springframework.session.web.http.HttpSessionStrategy; 
 
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 100, redisNamespace = "xxxx") 
public class HttpSessionConfig { 
 
  @Bean 
  public HttpSessionStrategy httpSessionStrategy() { 
    return new HeaderHttpSessionStrategy(); 
  } 
} 

其中注解 EnableRedisHttpSession 創(chuàng)建了一個(gè)名為springSessionRepositoryFilter的Spring Bean,該Bean實(shí)現(xiàn)了Filter接口。該filter負(fù)責(zé)通過 Spring Session 替換HttpSession從哪里返回。這里Spring Session是通過 redis 返回。

類中的方法 httpSessionStrategy(),用來定義Spring Session的 HttpSession 集成使用HTTP的頭來取代使用 cookie 傳送當(dāng)前session信息。如果使用下面的代碼,則是使用cookie來傳送 session 信息。

@Bean 
public HttpSessionStrategy httpSessionStrategy() { 
  return new CookieHttpSessionStrategy(); 
} 

使用HTTP的頭,會(huì)看到如下信息

-- response -- 
200  
x-auth-token: 4792331e-44c2-4285-a9d1-ebabf0e72251 
Content-Type: text/html;charset=UTF-8 
Content-Length: 75 
Date: Mon, 09 Jan 2017 10:14:00 GMT 
 
8e107efb-bf1e-4a55-b896-c97f629c8e40 : 4792331e-44c2-4285-a9d1-ebabf0e72251 

使用cookie,會(huì)看到如下信息

-- response -- 
200  
Set-Cookie: SESSION=4792331e-44c2-4285-a9d1-ebabf0e72251;path=/;HttpOnly 
Content-Type: text/html;charset=UTF-8 
Content-Length: 75 
Date: Mon, 09 Jan 2017 10:47:37 GMT 

測試

在controller中增加如下代碼

@GetMapping("/") 
public String uid(HttpServletRequest request) { 
  HttpSession session = request.getSession(); 
  UUID uid = (UUID) session.getAttribute("uid"); 
  if (uid == null) { 
    uid = UUID.randomUUID(); 
  } 
  session.setAttribute("uid", uid); 
  return uid.toString() + " : " + session.getId(); 
} 

啟動(dòng)服務(wù),在chrome瀏覽器輸入 http://127.0.0.1:8080/,得到sessionId

fbfae849-1d49-4301-b963-573048e763e7 

在redis中可以看到如下信息

1) "spring:session:xxxx:sessions:fbfae849-1d49-4301-b963-573048e763e7" 

2) "spring:session:xxxx:expirations:1483958700000" 

3) "spring:session:xxxx:sessions:expires:fbfae849-1d49-4301-b963-573048e763e7" 

打開火狐的HttpRequester,使用chrome獲取的sessionId點(diǎn)擊Get,可以看到如下輸出

詳解Spring-Boot集成Spring session并存入redis

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)頁題目:詳解Spring-Boot集成Springsession并存入redis
網(wǎng)站路徑:http://www.rwnh.cn/article10/jiphdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)做網(wǎng)站、網(wǎng)站內(nèi)鏈品牌網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
藁城市| 龙岩市| 疏勒县| 偏关县| 德格县| 深州市| 剑川县| 东乌珠穆沁旗| 沭阳县| 楚雄市| 黔西县| 赫章县| 陆良县| 荆门市| 潜江市| 阳西县| 沙洋县| 宁蒗| 托克逊县| 电白县| 新宁县| 乐平市| 花莲市| 上饶县| 马山县| 保山市| 新昌县| 永寿县| 巴林左旗| 固安县| 巨鹿县| 金沙县| 大渡口区| 祥云县| 聂荣县| 内江市| 贡觉县| 北流市| 长阳| 讷河市| 同德县|