SpringMVC 国际化问题

1、首先在src文件下添加3个properties文件

  a、message.properties

1 message.username=UserName
2 message.password=Password

  b、message_en.properties

1 message.username=UserName
2 message.password=Password

  c、message_zh.properties

1 message.username=\u7528\u6237\u540D
2 message.password=\u5BC6\u7801

 

2、配置spring-mvc.xml文件

1 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
2     <!-- 指定文件基名 -->
3      <property name="basename" value="message"/>
4      <!-- 当没有找到资源文件时,用这基名文件 -->
5      <property name="useCodeAsDefaultMessage" value="true" />    
6  </bean>

  这里配置属性userCodeAsDefaultMessage=true。意思当在其他语言区域里,没有找到对应的国际化文件。比如日语区、韩语区等。默认使用message.properties文件。当为false时,显示有问题。

 

3、配置Controller

 1 @Controller
 2 public class UserController {
 3 
 4     @RequestMapping("/updateUser")
 5     public String update(){
 6 
 7         return "success";
 8     }
 9     
10 }

 

4、Jsp页面

  要做jsp页面中使用国际化信息。需要添加一个fmt标签。该标签在JSTL标签表中。添加方式

1 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

  index.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 3 
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7     <title>My JSP 'hello.jsp' starting page</title>
 8   </head>
 9   
10   <body>
11     
12     <fmt:message key="message.username"/><input type="text" name="username" /><br/>
13     <fmt:message key="message.password"/><input type="text" name="password" /><br/>
14   </body>
15 </html>

 

  hello.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 3 
 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 5 <html>
 6   <head>
 7     <title>My JSP 'hello.jsp' starting page</title>
 8   </head>
 9   
10   <body>
11     
12     <fmt:message key="message.username"/><input type="text" name="username" /><br/>
13     <fmt:message key="message.password"/><input type="text" name="password" /><br/>
14   </body>
15 </html>

 

  我们通过url访问success.jsp页面。

  访问地址:http://localhost:8080/springmvc-1/updateUser

 

  我们访问index.jsp页面http://localhost:8080/springmvc-1

  结果出现这样的结果

 

为什么JSP页面都是一样的。为什么结果不一样呢?

  原因是index.jsp页面可以直接被访问到,而success.jsp页面在WEB-INF下面,不能够直接访问,需要通过servlet转发的方式才够访问。在SpringMVC中,DispatcherServlet前端控制器,拦截了所有请求,对http://localhost:8080/springmvc-1/updateUser访问。交个SpringMVC去处理。而在spring-mvc.xml配置了ResourceBundleMessageSource,所以在success页面中可以使用国际化信息。

   综上所述:要使用基于页面的国际化信息,需要使用转发的方式才能生效。

 

 

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC的国际化是建立在Java国际化的基础之上的。它通过提供不同国家/语言环境的消息资源,然后通过Resource Bundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息。整个过程与Java程序的国际化完全相同,只是Spring MVC框架对Java程序国际化进行了进一步的封装,从而简化了应用程序的国际化。 在Spring MVC中,实现国际化有以下几个步骤: 1. 给系统加载国际化资源文件。 2. 输出国际化消息。可以在视图页面上输出国际化消息,需要使用Spring MVC的标签库;也可以在Controller的处理方法中输出国际化消息,需要使用org.springframework.web.servlet.support.RequestContext的getMessage()方法来完成。 除了默认的实现方式之外,Spring MVC还提供了其他两种国际化方式:SessionLocaleResolver和CookieLocaleResolver。这两种方式的配置稍有不同,包括配置国际化资源文件、配置国际化操作拦截器和配置LocaleResolver。 总结起来,Spring MVC的国际化是通过加载不同国家/语言环境的消息资源文件来实现的,可以在视图页面或Controller的处理方法中输出国际化消息。同时,Spring MVC还提供了不同的国际化实现方式供选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Spring MVC的国际化](https://blog.csdn.net/A_Runner/article/details/83684593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值