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=u7528u6237u540D 2 message.password=u5BC6u7801
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页面中可以使用国际化信息。
综上所述:要使用基于页面的国际化信息,需要使用转发的方式才能生效。