从.Net到Java学习第八篇——SpringBoot实现sessi…
2018-06-27 09:46:29来源:博客园 阅读 ()
SpringBoot Session共享
修改pom.xml添加依赖
<!--spring session--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
添加配置类RedisSessionConfig
@Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)//默认是1800秒过期,这里测试修改为60秒 public class RedisSessionConfig { }
添加一个控制器类SessionController来进行测试
@RestController public class SessionController { @RequestMapping("/uid") String uid(HttpSession session) { UUID uid = (UUID) session.getAttribute("uid"); if (uid == null) { uid = UUID.randomUUID(); } session.setAttribute("uid", uid); return session.getId(); } }
先访问http://localhost:8083/boot/uid
然后修改配置文件application.yml
spring:
profiles:
active: test
重新运行IDEA,test配置文件配置的端口是8085,所以浏览器输入http://localhost:8085/boot/uid
我们看到两个uid是一样的。
在这里我是使用spring boot redis来实现session共享,你还可以配合使用nginx进行负载均衡,同时共享session。
关于nginx可以参考我的另一篇文章:Nginx详解-服务器集群
spring boot 国际化
在spring boot中实现国际化是很简单的的一件事情。
(1)在resources目录下面,我们新建几个资源文件,messages.properties相当于是默认配置的,当其它配置中找不到记录的时候,最后会再到这个配置文件中去查找。
messages.properties
messages_en_US.properties
messages_zh_CN.properties
依次在这三个配置文件中添加如下配置值:
msg=我是中国人
msg=I'm Chinese
msg=我是中国人
添加完之后,会自动将这几个文件包在一块
需要注意的是这个命名是有讲究的,messages.properties部分是固定的,不同语言的话,我们可以在它们中间用_区分。为什么是固定的命名,因为源码是硬编码这样命名的。
(2)新建一个配置文件LocaleConfig
@Configuration @EnableAutoConfiguration @ComponentScan public class LocaleConfig extends WebMvcConfigurerAdapter { @Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); // 默认语言 slr.setDefaultLocale(Locale.CHINA); return slr; } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); // 参数名 lci.setParamName("lang"); return lci; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } }
(3)在控制器中,我们添加测试用的方法
// i18n @RequestMapping("/") public String i18n() { return "i18n"; } @RequestMapping("/changeSessionLanauage") public String changeSessionLanauage(HttpServletRequest request, HttpServletResponse response, String lang){ System.out.println(lang); LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if("zh".equals(lang)){ localeResolver.setLocale(request, response, new Locale("zh", "CN")); }else if("en".equals(lang)){ localeResolver.setLocale(request, response, new Locale("en", "US")); } return "redirect:/"; }
(4)添加视图来展示,在templates下新建文件i18n.html,通过#可以直接获取国际化配置文件中的配置项的值。
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>$Title$</title> </head> <body> <a href="/changeSessionLanauage?lang=en">English(US)</a> <a href="/changeSessionLanauage?lang=zh">简体中文</a> <br /> <h3 th:text="#{msg}"></h3> <h4 th:text="${message}"></h4> </body> </html>
(5)运行查看效果
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash