第五章 Spring MVC的国际化

本文介绍了SpringMVC框架中的国际化实现方法,详细解释了如何通过配置MessageSource Bean来加载不同语言环境的消息资源文件,并展示了如何使用LocaleResolver来自动识别用户的语言偏好。此外,还介绍了几种常用的国际化标签及其属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring MVC的国际化是建立在Java国际化的基础之上的,其一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息。这整个过程与Java程序的国际化完全相同,只是Spring MVC框架对Java程序国际化进行了进一步的封装,从而简化了应用程序的国际化。

Spring MVC的国际化步骤与Java国际化的步骤基本相似,只是实现起来更加简单。Spring MVC的国际化可按以下步骤进行:

(1)给系统加载国家化资源文件

(2)输出国际化。Spring MVC输出国际化消息有两种方式

  • 在视图页面上输出国际化消息,需要使用Spring MVC的标签库

  • 在Controller的处理方法中输出国家化消息,需要使用org.springframework.web.servlet.support.RequestContext的getMessage()方法。

P88 Spring MVC国家化的相关知识

P88 MessageSource

在Spring MVC中,不直接使用java.util.ResourceBundle,而是利用messageSource bean告诉Spring MVC国际化的属性文件保存在哪里。配置信息代码文件如下所示:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
    <list>
      <value>message</value>
      <value>fkit</value>
    </list>
  </property>
</bean>

上面的配置使用了ResourceBundleMessageSource类作为messageSource bean的实现,basenames属性用来指定国际化的属性文件名称。如果项目中只有一组属性文件,则可以使用basename来制定国际化的属性文件名称,实例代码如下:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames" value="message"/>
</bean>

P88 localeResolver

为用户选择语言区域时,最常用的方法是通过读取用户浏览器的accept-language标题值。accept-language标题提供了关于用户浏览器语言的信息。选择语言区域的其他方法还包括读取HttpSession或者Cookie。

在Spring MVC中选择语言区域,可以使用语言区域解析器。Spring MVC提供了一个语言区域解析器接口LocaleResolver,该接口的常用实现类都在org.springframework.web.servlet.i18n包下面,包括:

  • AcceptHeaderLocaleResolver
  • SessionLocaleResolver
  • CookieLocaleResolver

其中,AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用那个语言区域。AcceptHeaderLocaleResolver可以不用显式配置,而SessionLocaleResolver和CookieLocaleResolver需要手动显式配置。

P89 message标签

在Spring MVC中显示本地化消息通常使用Spring的message标签。使用message标签,需要在JSP页面最前面使用taglib指令导入Spring的标签库,如下所示:

%@taglib prefix="spring" url="http://www.springframework.org/tags"%
message标签的属性(所有属性均为可选)
属性描述
arguments标签的参数,可以是一个字符串、数组或对象
argumentSepatorar用来分隔该标签参数的字符
code获取消息的key
htmlEscapeboolean值,表示被渲染的值是否应该进行HTML转义
javaScriptEscapeboolean值,表示被渲染的值是否应该进行javaScript转义
messageMessageSourceResolver参数
scope保存var属性中定义的变量的作用范围域
text如果code属性不存在,所显示的默认文本
var用于保存消息的变量

P89 AcceptHeaderLocaleResolver国际化

AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用哪个语言区域。AcceptHeaderLocaleResolver可以不用显式配置,也可以显式配置。

P92 SessionLocaleResolver国际化

SessionLocaleResolver不是默认的语言区域解析器,需要对其进行显式配置。如果使用它,Spring MVC会从HttpSession作用域中获取用户所设置的语言区域,来确定使用哪个语言区域。

P95 CookieLocaleResolver国际化

CookieLocaleResolver不是默认的语言区域解析器,需要显式对其进行配置。使用它,Spring MVC会从Cookie中获取用户所设置的语言区域,来确定使用哪个语言区域。

2018.8.6 

 キラメキ—wacci

再见我的青春

再见双门洞

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值