SpringBoot实现session共享和国际化,java基础案例教程思维导图

@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

SpringBoot实现session共享和国际化

然后修改配置文件application.yml

spring:

profiles:

active: test

重新运行IDEA,test配置文件配置的端口是8085,所以浏览器输入

http://localhost:8085/boot/uid

SpringBoot实现session共享和国际化

我们看到两个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=我是中国人

添加完之后,会自动将这几个文件包在一块

SpringBoot实现session共享和国际化

需要注意的是这个命名是有讲究的, 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);

Loca

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

开源分享完整内容戳这里

leResolver 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”));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值