SpringBootSession基本使⽤
⼀、            Spring Session 简介
Spring Session 提供了管理⽤户session的API 和实现,直接集环境Sesison管理,单浏览器多个Session,RESTful APIs Session,集Session 管理集成并不依赖应⽤程序容器;⽀持Session存储Redis、GemFire、JDBC、Mongo。
⼆、            Spring Session ⽀持功能
l  同⼀个浏览器同⼀个⽹站,⽀持多个session问题。
l  Restful API,不依赖于cookie。可通过header来传递jessionID。
l  WebSocket和spring-session结合,同步⽣命周期管理。
三、            Spring Session 的使⽤步骤
⽣成
l  后台业务模块使⽤ Spring-Session ⽣成⼀个 Session
l  后台业务模块往Session ⾥设置信息
l  将 Session 存到 Redis 缓存中(⽀持持久化)
l  将 Session Id 返回给浏览器
l  浏览器根据 Cookie ⽅式保存 Session Id
使⽤
l  浏览器取出 Session Id 通过HTTP 报⽂带给后台
l  后台根据 Session Id 从Redis ⾥取出缓存的 Session
l  从 Session 中读取出信息,进⾏业务处理。
四、            Spring Session 对 HTTP 的⽀持
Spring Session对HTTP的⽀持是通过标准的servlet filter来实现的,这个filter必须要配置为拦截所有的web应⽤请求,并且它应该是filter 链中的第⼀个filter。Spring Session filter会确保随后调⽤HttpServletRequest的getSession() ⽅法时,都会返回Spring Session的HttpSession实例,⽽不是应
⽤服务器默认的HttpSession。
五、            Spring Session 集成项⽬⽰例
项⽬集成 Spring Session 框架
添加l 依赖
引⼊Spring Session和Redis需要的依赖:
<!--spring boot 与redis应⽤基本环境配置 -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
Spring Session 配置
创建⼀个Spring配置,⽤于创建⼀个⽀持Spring Session的Servlet Filter来代替原有的HttpSession的实现:
package fig;
import t.annotation.Configuration;
import org.springframework.fig.annotation.web.http.EnableRedisHttpSession;
@Configuration
@EnableRedisHttpSession
public class HttpSessionConfig {
}
说明:
这个类⽤配置redis服务器的连接。
maxInactiveIntervalInSeconds为SpringSession的过期时间(单位:秒)。
创建配置⽂件 application.properties
redis.hostname=localhost
redis.port=6379
说明:
默认连接端⼝:6379
默认连接地址:localhost 。
修改则可以使⽤setPort() ⽅法和setHostName() ⽅法来修改默认的端⼝和连接地址
使⽤ Spring Session ⽰例
在 Controller 类中使⽤ session 功能:
package com.ller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class CookieController {
@RequestMapping("/test/cookie")
public String cookie(@RequestParam("browser") String browser, HttpServletRequest request, HttpSession session) {        //取出session中的browser
Object sessionBrowser = Attribute("browser");session如何设置和读取
if (sessionBrowser == null) {
System.out.println("不存在session,设置browser=" + browser);
session.setAttribute("browser", browser);
} else {
System.out.println("存在session,browser=" + String());
}
Cookie[] cookies = Cookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
System.out.Name() + " : " + Value());
}
}
return "index";
}
}
验证 spring session
确定 Redis 服务正在启动,然后启动 spring session 项⽬,在浏览器输⼊:localhost:8080/test/cookie?browser=chrome,后台显⽰:注意:spring boot 版本是基于 1.4.7.RELEASE

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。