1. 引入依赖pom.xml
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  8. </dependency>
  1. 导入网页资源,这里给大家推荐一个我自己在使用的页面资源,SB ADMIN-2

    html页面放在templates目录下,这是thymeleaf默认的解析目录,其他的样式文件放在static目录下

  2. 接管spring Mvc,自定义url访问路径,可做可不做

    建一个config目录,在这里建一个myWebMvcConfig

    1. import org.springframework.context.annotation.Bean;
    2. import org.springframework.context.annotation.Configuration;
    3. import org.springframework.web.servlet.LocaleResolver;
    4. import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    5. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    6. @Configuration
    7. public class myWebMvcConfig implements WebMvcConfigurer {
    8. @Override
    9. public void addViewControllers(ViewControllerRegistry registry) {
    10. registry.addViewController("/wq").setViewName("register");//localhost:8080/wq
    11. registry.addViewController("/").setViewName("register");//localhpst:8080/
    12. registry.addViewController("/register.html").setViewName("register");
    13. //localhost:8080/register.html
    14. }
    15. }

    路径可以设置多个,这样只要是这三个url,spring 都会访问register.html

    还有一种方式也能实现

    1. import org.springframework.stereotype.Controller;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. @Controller
    4. public class demoController {
    5. @RequestMapping({"/","/wq"})
    6. public String test(){
    7. return "register";
    8. }
    9. }
    1. 国际化配置文件:en_US英文,zh_CN中文



      点击左上角加号,便可以添加配置的属性,只要在右边填写相应的中英文即可



5. 配置文件已经写好,如何在我们的页面中使用呢?thyme leaf的作用又来了

  1. 首先在你的网页添加这样的头部
  2. ```html
  3. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  4. ```
  5. 在所有的html属性前加**th:**就被thymeleaf接管了,根据thymeleaf 语法,获取国际化值使用**#{}**,本地值用**${}**,url用**@{}**
  6. ![image-20220228101634725](C:\Users\32944\AppData\Roaming\Typora\typora-user-images\image-20220228101634725.png)
  7. ![image-20220228101806743](C:\Users\32944\AppData\Roaming\Typora\typora-user-images\image-20220228101806743.png)
  8. ```html
  9. <a th:href="@{/register.html(l='zh_CN')}" >中文 </a>
  10. <a th:href="@{/register.html(l='en_US')}">English </a>
  11. ```
  12. 6. 页面和配置文件都准备好了,怎样实现跳转呢?
  13. WebMvcAutoConfiguration.class
  14. ```java
  15. @Bean
  16. @ConditionalOnMissingBean(
  17. name = {"localeResolver"}
  18. )
  19. public LocaleResolver localeResolver() {
  20. if (this.webProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.WebProperties.LocaleResolver.FIXED) {
  21. return new FixedLocaleResolver(this.webProperties.getLocale());
  22. } else {
  23. AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
  24. localeResolver.setDefaultLocale(this.webProperties.getLocale());
  25. return localeResolver;
  26. }
  27. }
  28. ```
  29. 我们再找到AcceptHeaderLocaleResolver.class,发现它实现了LocaleResolver
  30. ```java
  31. public class AcceptHeaderLocaleResolver implements LocaleResolver {
  32. private final List<Locale> supportedLocales = new ArrayList(4);
  33. @Nullable
  34. private Locale defaultLocale;
  35. ```
  36. 那我们就编写自己的LocaleResolver
  37. ```java
  38. public class myLocaleResolver implements LocaleResolver {
  39. @Override
  40. public Locale resolveLocale(HttpServletRequest request) {
  41. String mylocale=request.getParameter("l");
  42. Locale locale=Locale.getDefault();
  43. if(!StringUtils.isEmpty(mylocale)){
  44. String[] split=mylocale.split("_");
  45. locale=new Locale(split[0],split[1]);
  46. }
  47. System.out.println("debug====>"+mylocale);
  48. return locale;
  49. }
  50. @Override
  51. public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
  52. }
  53. }
  54. ```
  55. 然后在spring配置中注入myLocaleResolver
  56. ```java
  57. @Bean
  58. public LocaleResolver localeResolver(){
  59. return new myLocaleResolver();
  60. }
  61. ```
  62. **注意:方法名必须是localeResolver**,**因为源码中名字为localeResolverbean**



7. 最后我们来测试一下







而且控制台输出也没问题

springboot页面国际化的更多相关文章

  1. SpringBoot Web开发(5) 开发页面国际化+登录拦截

    SpringBoot Web开发(5) 开发页面国际化+登录拦截 一.页面国际化 页面国际化目的:根据浏览器语言设置的信息对页面信息进行切换,或者用户点击链接自行对页面语言信息进行切换. **效果演示 ...

  2. SpringBoot 国际化配置,SpringBoot Locale 国际化

    SpringBoot 国际化配置,SpringBoot Locale 国际化 ================================ ©Copyright 蕃薯耀 2018年3月27日 ht ...

  3. SpringBoot页面访问处理

    SpringBoot页面访问处理 1.介绍 Springboot推荐使用thymeleaf模板引擎搭载html页面实现jsp动态渲染效果,因此这里才会用该种方案进行. 2.集成步骤 引入thymele ...

  4. 配置和修改springboot默认国际化文件

    SpringBoot默认国际化文件为:classpath:message.properties,如果放在其它文件夹中,则需要在application.properties配置属性spring.mess ...

  5. SpringBoot的国际化使用

    在项目中,很多时候需要国际化的支持,这篇文章要介绍一下springboot项目中国际化的使用. 在这个项目中前端页面使用的thymeleaf,另外加入了nekohtml去掉html严格校验,如果不了解 ...

  6. SpringBoot整合国际化功能

    (1).编写国际化配置文件 在resources下新建i18n文件夹,并新建以下文件 ①index.properties   username=username ②index_en_US.proper ...

  7. SpringBoot日记——国际化篇

    听起来高大上的国际化,起始就是在利用浏览器语言,或者页面中的中英文切换,将页面的文字在其他语言和中文进行切换,比如: 我们想让这个功能实现,点击中文,页面就是中文的,点击英文就是英文的. 国际化配置 ...

  8. SpringBoot资源国际化

    Springboot根据浏览器实现网站资源国际化 根据浏览器地区主动选择资源 1.创建资源化文件 resource目录下创建messages目录 创建messages_en_US.properties ...

  9. SpringBoot配置国际化

    1).国际化 1).编写国际化配置文件: 2).使用ResourceBundleMessageSource管理国际化资源文件 3).在页面使用fmt:message取出国际化内容 步骤: 1).编写国 ...

随机推荐

  1. 【C++】类-多态

    类-多态 目录 类-多态 1. 基本概念 2. 运算符重载 2.1 重载为类的成员函数 2.2 重载为非成员函数 3. 虚函数 4. 抽象类 5. override与final 1. 基本概念 多态性 ...

  2. 【刷题-LeetCode】264. Ugly Number II

    Ugly Number II Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose ...

  3. synergy最佳解决方案——barrier

    synergy最佳解决方案--barrier ​ 不知道大家有没有一套键盘鼠标控制多台电脑的需求,主流的硬件或说软件有大神整理如下: 软件方案: Windows 之间:Mouse Without Bo ...

  4. gin中的query和postform用法

    package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // Que ...

  5. zabbix表达式

    system.cpu.load[all,avg1].min(10)}>2 load连续10分钟>2 system.cpu.load[percpu,avg1].count(#3,0.6,&q ...

  6. python for循环while循环数据类型内置方法

    while 条件: 条件成立之后循环执行的子代码块 每次执行完循环体子代码之后都会重新判断条件是否成立 如果成立则继续执行子代码如果不成立则退出 break用于结束本层循环 ### 一:continu ...

  7. docker和K8s对应参数

    创建 Pod 时设置命令及参数 创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数.如果要设置命令,就填写在配置文件的 command 字段下,如果要设置命令的参数,就填写在配置文件的  ...

  8. python if-elif-else 判断

    #!/usr/bin/python #coding=utf-8 #好好学习,天天向上 age=12 if age<4: price=0 elif age<18: price=40 elif ...

  9. java中的泛型,简单介绍。 修饰方法的用法

    一.<R>  ( R  r ) 默认object  可以存所有类型.   R 这个是随便定义的大写字母,前后要保持一致性! package com.aaa.test; /* * 演示 泛型 ...

  10. Java安全之BCEL ClassLoader

    目录 Java安全之BCEL ClassLoader 写在前面 About BCEL 调试分析 食用姿势 Fuzz反序列化Gadget Fastjson BCEL Payload Thymeleaf ...