import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
/**
- session共享controller
*/
@RestController
@RequestMapping(value = “/session”)
public class SessionShareController {
@Value(“${server.port}”)
Integer port;
@GetMapping(value = “/set”)
public String set(HttpSession session){
session.setAttribute(“user”,“王大锤”);
return String.valueOf(port);
}
@GetMapping(value = “get”)
public String get(HttpSession session){
return “用户:”+session.getAttribute(“user”)+“,端口:”+port;
}
}
a模块配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
@Configuration
public class SpringSessionConfig {
public SpringSessionConfig() {
}
@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
// 取消仅限同一站点设置
return cookieSerializer;
}
}
a模块配置文件:
spring:
redis:
port: 6379
password: 123456
host: 127.0.0.1
server:
port: 9001
b模块pom.xml:
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
4.0.0
org.springframework.boot
spring-boot-starter-parent
1.5.2.RELEASE
pers.wwz.springsession.study
springsession-study-low-springversion
0.0.1-SNAPSHOT
springsession-study
Demo project for Spring Boot
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-data-redis-reactive
2.3.1.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.session
spring-session-data-redis
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
io.projectreactor
reactor-test
3.3.6.RELEASE
test
org.springframework.boot
spring-boot-maven-plugin
b模块测试类:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
/**
- session共享Controller
*/
@RestController
@RequestMapping(value = “/session”)
public class SessionShareController {
@Value(“${server.port}”)
Integer port;
@GetMapping(value = “/set”)
public String set(HttpSession session){
session.setAttribute(“user”,“王大锤”);
return String.valueOf(port);
}
@GetMapping(value = “get”)
public String get(HttpSession session){
return “用户:”+session.getAttribute(“user”)+“,端口:”+port;
}
}
b模块配置文件:
spring:
redis:
port: 6379
password: 123456
host: 127.0.0.1
server:
port: 9003
使用两个端口9001和9002启动a模块,使用端口9003启动b模块
分别访问:
http://localhost:9001/session/set
http://localhost:9002/session/get
http://localhost:9003/session/get
发现9001和9002两个模块之间session可以共享
发现session不能与9001,9002模块共享
后来在网上发现:
spring session 1.x与2.x 同时在项目中使用时,导致session不一致原因是1.x useBase64Encoding=false 而 2.0 为useBase64Encoding=true.
因此解决只需保证两边 useBase64Encoding 一致就行。目前,我们采用直接修改2.x useBase64Encoding 为主。
在使用spring session 2.x 工程添加以下配置。
@Bean public CookieSerializer cookieSerializer() { DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer(); cookieSerializer.setUseBase64Encoding(false); return cookieSerializer; }
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/00c27cd4651b5f7a64537aa42759a23c.jpeg)
总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。
如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
d303032d36.jpg" alt=“img” style=“zoom: 33%;” />
总结
总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。
如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。
[外链图片转存中…(img-BIn2bHTr-1713373243516)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!