Spring Boot学习10——Thymeleaf国际化配置

使用Thymeleaf配置国际化页面---学习11 文章目录一、标准表达式语法二、Thymeleaf配置国际化页面1、创建项目2、添加依赖3、初始化4、把ThymeleafDemo项目的登录控制器、拷贝到新项目里5、在resources下创建i18n目录6、在i18n目录里创建login.properties7、在i18n目录里创建login_zh_CN.properties8、在i18n目录里创建login_en_US.properties9、编写全局配置文件10、在main/java下创建net.tp.lesson11.resolver子包11、创建自定 阅读详情

  • 国际化即多语言环境

Thymeleaf国际化配置

一、创建项目Thymeleaf18

在这里插入图片描述
在这里插入图片描述

二、实现登录功能(包含控制器、登录页面、全局配置文件)

在这里插入图片描述

1.控制器LoginController
package net.lj.lesson10.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.Calendar;

/**
 * 登录控制器
 */
@Controller
public class LoginController {
    /**
     * 通过请求“toLoginPage”跳转到templates目录下的
     * login页面,并把当前年份数据保存到模型对象中
     */
    @GetMapping("/toLoginPage")
    public String toLoginPage(Model model) {
        model.addAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
        return "login"; // 返回逻辑页面视图名称
    }
}
2.全局配置文件
#缓存配置,默认即是true,开发阶段设置为false
spring.thymeleaf.cache = false
#设置模板使用的编码为utf-8
spring.thymeleaf.encoding = UTF-8
#指定为模板使用的模式为html5,默认html
spring.thymeleaf.mode = HTML5
#指定前缀,默认位置为/templates/,可以修改成其它位置
spring.thymeleaf.prefix = classpath:/templates/
#指定模板文件后缀,默认值为.html,可以修改成其它值
spring.thymeleaf.suffix = .html

#配置国际化文件基础名
spring.messages.basename=i18n.login
3.登录页面login
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
    <script src="https://cdn.staticfile.org/twitterbootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="col-6 m-auto" style="margin-top:30px!important;">
    <div class="text-center">
        <span th:text="${currentYear}">今年</span> -
        <span th:text="${currentYear} + 1">明年</span>
    </div>
    <div class="border border-info bg-light p-2" style="border-radius: 5px">
        <form action="/login" method="post">
            <h3 class="text-center">用户登录</h3>
            <div class="mt-1">
                <input type="text" id="username" name="username" class="form-control" placeholder="输入用户名" autofocus>
            </div>
            <div class="mt-1">
                <input type="password" id="password" name="password" class="form-control" placeholder="输入密码">
            </div>
            <div class="checkbox text-center">
                <label>
                    <input class="form-check-input text-center" type="checkbox">记住我
                </label>
            </div>
            <div>
                <button class="btn btn-lg btn-primary btn-block" id="login" type="submit">登录</button>
            </div>
        </form>
    </div>
</div>
</body>
</html>
运行效果

在这里插入图片描述

三、国际化配置

  • 在resources下创建i18n目录
1.在i18n目录里创建login.properties
login.title = 用户登录
login.username = 输入用户名
login.password = 输入密码
login.rememberme = 记住我
login.button = 登录
2.在i18n目录里创建login_zh_CN.properties
login.title = 用户登录
login.username = 输入用户名
login.password = 输入密码
login.rememberme = 记住我
login.button = 登录
3.在i18n目录里创建login_en_US.properties

在这里插入图片描述

login.title = User Login
login.username = Enter Username
login.password = Enter Password
login.rememberme = Remember Me
login.button = Login
4.定制区域信息解析器
  • 在net.lj.lesson10下创建resolver子包,并在子包下创建MyLocaleResolver .java
package net.lj.lesson10.resolver;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

/**
 * 自定义区域
 */
@Configuration
public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        // 获取区域标识
        String flag = httpServletRequest.getParameter("flag");
        // 获取默认区域对象
        Locale locale = Locale.getDefault();
        // 判断区域标识是否为空
        if (!StringUtils.isEmpty(flag)) {
            // 对区域标识进行拆分处理
            String[] splits = flag.split("_"); // 使用下划线切分字符串,返回一个字符串数组,如zh_CN --> ["zh", "CN"]
            // 利用区域标识创建区域对象
            locale = new Locale(splits[0], splits[1]);
        }
        // 返回区域对象
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
    }

    @Bean // 定义Bean组件,交给Spring容器管理
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }
}
5.在HTML页面实现实现国际化功能
  • 增加语言切换功能和使用模板语法
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="col-6 m-auto" style="margin-top:30px!important;">
    <div class="text-center">
        <span th:text="${currentYear}">今年</span> -
        <span th:text="${currentYear} + 1">明年</span>
    </div>
    <div class="border border-info bg-light p-2" style="border-radius: 5px">
        <form action="/login" method="post">
            <h3 class="text-center" th:text="#{login.title}">用户登录</h3>
            <div class="mt-1">
                <input type="text" id="username" name="username" class="form-control" th:placeholder="#{login.username}" required autofocus>
            </div>
            <div class="mt-1">
                <input type="password" id="password" name="password" class="form-control" th:placeholder="#{login.password}" required>
            </div>
            <div class="checkbox text-center">
                <label>
                    <input class="form-check-input text-center" type="checkbox" id="remember-me">[[#{login.rememberme}]]
                </label>
            </div>
            <div>
                <button class="btn btn-lg btn-primary btn-block" id="login" type="submit" th:text="#{login.button}">登录</button>
            </div>
            <div class="text-center">
                <a class="btn btn-sm" th:href="@{/toLoginPage(flag='zh_CN')}">中文</a>
                <a class="btn btn-sm" th:href="@{/toLoginPage(flag='en_US')}">English</a>
            </div>
        </form>
    </div>
</div>
</body>
</html>

效果

在这里插入图片描述

使用Thymeleaf配置国际化页面 文章目录一、使用Thymeleaf配置国际化页面1、创建项目文件2、拷贝上一讲控制器等3、测试是否能运行4、在i18n目录里创建login.properties5、在i18n目录里创建login_zh_CN.properties6、在i18n目录里创建login_en_US.properties7、编写全局配置文件8、定制区域信息解析器9、页面国际化使用10、运行服务器二、Thymeleaf复杂数据的展示1、创建用户实体类2、创建用户控制器3、创建显示全部用户信息模板页面4、修改登录成功界面5、启动项目,查 阅读详情

相关推荐

Spring Boot基础学习笔记10:使用Thymeleaf配置国际化页面

1.创建项目【ThymeleafI18N】 (将上一讲的)

qianyikang的博客 276

国际化(SpringBoot+Thymeleaf)

如果有自己的需求,例如通过点击页面上的超链接来完成文本的转换,就需要自定义LocaleResolver了。效果图前四步和上面一样。

qq_44846964的博客 1828

Spring Boot集成Thymeleaf模板引擎技术指南

如果你需要自定义静态资源的位置或URL映射,可以通过配置文件来实现。

聚焦于深度解析最新的编程语言特性、框架升级、架构设计、开发工具和最佳实践,涵盖Web前端(如Vue3, React, Angular等)、后端开发(如Node.js, Java, Python等)、移动端开发(iOS, Android原生及跨平台开发) 5万+

快速使用Thymeleaf实现国际化

目录 什么是国际化? 1.创建一个springboot工程 2.创建存放文字的文件 3.编辑文件 4.编写页面代码 5.实现中英文的切换 什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。 1.创建一个springboot...

weixin_46102505的博客 3037

Spring Boot10:Thymeleaf配置国际化页面

文章目录一、使用Thymeleaf配置国际化页面1、创建Spring项目2、添加依赖3、拷贝ThymeleafDemo部分内容4、设置登录属性的语言5、全局配置文件6、定制区域信息解析器7、页面国际化功能使用8、整合效果测试二、Thymeleaf复杂数据的展示1、创建用户实体类2、创建用户控制器3、创建显示全部用户信息模板页面4、修改登录成功模板页面5、启动项目,查看效果 一、使用Thymeleaf配置国际化页面 1、创建Spring项目 2、添加依赖 热部署 网页 百里香叶模板 3、拷贝Thyme

qq_46300856的博客 638

Spring Boot国际化(i18n)

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。        那么当我们使用Spring Boot如何进行国际化呢?那么当你读完这篇文章你会学到如下知

ForeverLove的博客 1万+

Spring Boot中的Thymeleaf、自动配置、国际化、容器

SpringBoot 系列: 1.Spring Boot 入门 文章目录SpringBoot 开发 WebThymeleafweb 定制容器定制 SpringBoot 开发 Web 在 Spring Boot 入门 中,我们知道了: 如何根据我们需要的模块创建一个 Spring Boot 应用 自动配置的原理 SpringBoot对静态资源的映射规则: 以 jar 包的方式引入静态资源,...

MOKE_SPACE 2180

Spring Boot学习笔记10——配置国际化页面

文章目录一、使用Thymeleaf配置国际化页面1、编写多语言国际化配置文件(1)在resources下创建i18n目录(2)在i18n目录里创建login.properties(3)在i18n目录里创建login_zh_CN.properties(4)在i18n目录里创建login_en_US.properties2、编写全局配置文件3、定制区域信息解析器4、页面国际化使用5、整合效果测试二、Thymeleaf复杂数据的展示1、创建用户实体类2、创建用户控制器3、创建显示全部用户信息模板页面4、修改登录成

weixin_50659534的博客 859

Spring Boot | Spring Boot 整合 Thymeleaf 模板引擎 、Spring Boot “国际化功能“ 实现

目录: 1. Thymeleaf "标准表达式" : ${ } : 变量表达式 ( 从 "上下文" 中获取 "变量值") *{ } : 选择变量表达式 ( 从 "被选定对象" 中获取 "变量值") #{ } : 消息表达式 ( 主要用于 "国际化内容" 的 "替换和展示" ) @{ } : 链接表达式 ( 使用该表达式会生成一个 "URL字符串" ) ~{ } : 片段表达式 ( 引入页面中的 "模板片段" ) 2. Thymeleaf "内置对象" 3. Thymeleaf "基本使用" ......

m0_70720417的博客 1344

Spring Boot基础学习10 - 配置国际化页面

文章目录一、 一、

lbj5063的博客 375

Thymeleaf 国际化(i18n)实现:多语言支持的终极指南

想象你开发了一个超棒的电商网站,法国用户打开看到满屏中文会抓狂,日本用户也看不懂英文——这就是为什么需要“国际化(i18n)”。本文聚焦Thymeleaf模板引擎的国际化实现,覆盖Spring Boot集成、资源文件管理、多语言切换等核心场景,帮你解决“让不同国家用户看到母语界面”的技术难题。本文将按“概念-原理-实战-场景”的逻辑展开:先通过生活案例理解国际化核心概念,再拆解Thymeleaf的实现原理,接着用完整项目演示从0到1实现多语言支持,最后总结常见问题和未来趋势。i18n。

AI开发架构师 792

《Spring Boot实战指南》04-06:使用Thymeleaf配置国际化页面

--

西安极客联盟 6406

Spring Boot整合Thymeleaf模板开发:从入门到精通

Thymeleaf是一个现代化的服务器端Java模板引擎,适用于Web和独立环境,支持HTML、XML、JavaScript、CSS等多种文件类型。其核心特点包括自然模板、与Spring框架的无缝集成、丰富的表达式语言、模块化设计以及国际化支持。与其他模板引擎如JSP、Freemarker和Velocity相比,Thymeleaf在自然模板、HTML5支持和静态原型方面具有优势。Thymeleaf的核心概念包括模板、表达式、处理器和方言。在Spring Boot中集成Thymeleaf只需添加相关依赖,并进

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 3399

19Spring Boot国际化

国际化(Internationalization 简称 I18n,其中“I”和“n”分别为首末字符,18 则为中间的字符数)是指软件开发时应该具备支持多种语言和地区的功能。换句话说就是,开发的软件需要能同时应对不同国家和地区的用户访问,并根据用户地区和语言习惯,提供相应的、符合用具阅读习惯的页面和数据,例如,为中国用户提供汉语界面显示,为美国用户提供提供英语界面显示。

qq_41946216的博客 2077

Spring Boot基础学习笔记10:配置国际化页面

1. 掌握使用Thymeleaf配置国际化页面; 2. 掌握Thymeleaf复杂数据的展示

howard2005的专栏 1174

【Spring Boot】Thymeleaf模板引擎 — Thymeleaf入门

Thymeleaf是一款非常优秀的服务器端页面模板引擎,适用于Web和独立环境,具有丰富的标签语言和函数,能够处理HTML、XML、JavaScript甚至文本。Thymeleaf相较于其他模板引擎更加优雅。它强调自然模板化(允许模板成为工作原型,而Velocity、FreeMarker模板不允许这样做),所以它的语法更干净,更符合当前Web开发的趋势。

衍生星球的博客 2947

Spring Boot-国际化

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!33%;" />

2401_84049061的博客 1148

矿卡CMP 170HX的AI推理性能优化实战

GPU计算在现代AI推理中扮演着核心角色,其并行计算架构特别适合处理神经网络的大规模矩阵运算。通过CUDA指令集优化和计算管线重构,可以显著提升硬件利用率,这在边缘计算和带宽敏感型任务中尤为重要。以NVIDIA CMP 170HX矿卡为例,通过禁用FMA指令和框架适配优化,其FP32性能可提升15.9倍,在Qwen2.5-1.5B模型的4-bit量化推理中达到A100同架构78%的解码速度。这种优化技术不仅让淘汰矿卡重获新生,更为边缘AI部署提供了高性价比解决方案,特别适合7B以下量化模型部署和多路视频分析

weixin_30432579的博客 630

Spring Boot国际化与本地化详解

摘要 Spring Boot国际化(i18n)开发指南:介绍了国际化概念及其重要性(支持全球市场、提升用户体验、满足合规要求等),详细说明了国际化组件(Locale、MessageSource等)和核心依赖配置。提供了基础配置方法,包括YAML配置文件和Java配置类,展示了如何配置LocaleResolver和消息资源。文章还包含英文消息资源文件示例,涵盖了通用消息、用户相关字段、验证消息等常见场景的国际化文本。通过这套方案,开发者可以轻松实现多语言支持,满足不同地区的应用需求。

程序员大凯的博客 713

2026深度破解:OpenClaw开源AI框架架构与实战全景解析

2026年初,一款名为OpenClaw的开源AI Agent框架以惊人的速度席卷全球开发者社区,短短数周GitHub星标突破20万,成为史上增长最快的开源项目。本文从架构设计、核心原理、代码实现和工程实战四个维度,深度剖析OpenClaw的技术内核,帮助开发者从理解到实践,快速掌握这一革命性的AI开发框架。

fox0329的博客 2373

10位PWM能否满足电梯±5mm平层精度?4位扩展法让10位PWM达到14位精度

电梯平层精度直接关系乘坐舒适性与安全性,而PWM分辨率是决定精度的关键因素之一。10位PWM能否满足±5mm的平层精度要求?本文从分辨率与物理量的对应关系出发,结合工程精度需求与实战对比,给出明确的选型结论与解决方案,请参考优快云博客《4位扩展法:基于ATtiny816的高精度PWM软件扩展方法》和《低成本高精度PWM:4位扩展法原理、实现和工程实践》。10位PWM的分辨率为 $2^{10} = 1024$ 级。

m0_73354873的博客 244
上一篇: Spring Boot 学习9——Thymeleaf
下一篇: SpringBoot学习11——登录拦截
doubleview
博客等级 码龄7年 12粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值