定义两个相同的前台页面index1、index2,在其中一个页面点中文,那么另一个页面刷新一下也会显示中文,在当前页面点英文,另一个页面刷新一下也会同步成英文。
controller:
@Controller
@RequestMapping("/test")
public class TestInterceptorForwordCon {
@Resource
private UserService userService;
@GetMapping("/test3")
public String test3(Model model, HttpSession session, HttpServletRequest request){
ManagerUser user1 = userService.selectUserById(1);
model.addAttribute("user1",user1);
return "jsps/index2";
}
@GetMapping("/test4")
public String test4(Model model, HttpSession session, HttpServletRequest request){
ManagerUser user1 = userService.selectUserById(4);
model.addAttribute("user1",user1);
return "jsps/index1";
}
@GetMapping("/test2")
public String test2(String lang, HttpServletRequest request, HttpServletResponse response){
//获取区域解析器
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
//根据lang参数,设置区域解析器的语言
if(lang.equals("zh")){
localeResolver.setLocale(request,response, Locale.CHINA);
}else if(lang.equals("en")){
localeResolver.setLocale(request,response, Locale.US);
}
String referer = request.getHeader("referer");
return "redirect:"+referer;
}
}
application.yml:
#热部署
spring:
devtools:
restart:
enabled: true
#配置springMvc视图解析器
mvc:
view:
prefix: /jsps/
suffix: .jsp
#配置数据源
datasource:
url: jdbc:mysql://localhost:3306/witkey
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#thymeleaf缓存关闭,让它实时进行更新
thymeleaf:
cache: false
#国际化语言默认读取的配置文件路径,默认读取以messages开头的文件
messages:
basename: messag/messages
#mybatis相关配置
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.example.demo6.pojo
configuration:
map-underscore-to-camel-case: true
#jsp热部署
server:
jsp-servlet:
init-parameters:
development: true
#打印mybatis的sql语句
logging:
level:
com.example.demo6.mapper: debug
index1.html、index2.html:
springboot项目里创建的html文件是html5文件,需要自己手动在标签上加上结束符/,变成
Title
中文|EngLish
messages.properties文件里可以为空
messages_en_US.properties文件里内容如下:(我就随便定义了三个)
userName=mrsChen:
password=chen123:
phone=17667448304:
messages_zh_CN.properties文件里也一样,不过这后面的中文需要转换,Unicode中英文转换,网址:http://tool.chinaz.com/tools/unicode.aspx
userName=\u7528\u6237\u540d:
password=\u5bc6\u7801:
phone=\u7535\u8bdd:
例如:用户名的转换(符号也可以进行转换)
定义一个配置类MessagesConfiguration:这里面可以设置默认语言,如果用户在浏览器上对其他语言进行了选择,那么就会读取controller里面的设置,对默认语言进行覆盖;
package com.example.demo6.configuration;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import java.util.Locale;
@SpringBootConfiguration
public class MessagesConfiguration {
//区域解析器
@Bean
public LocaleResolver localeResolver(){
SessionLocaleResolver slr = new SessionLocaleResolver();
//设置默认语言
slr.setDefaultLocale(Locale.US);
return slr;
}
}
这样,这个语言之间的转换就可以使用了,这里只讲解了中英文之间的转换,如果想转换成其他语言,方法也类似,over,over!