項目中使用JSTL,SpringMVC會把視圖由InternalView轉換為JstlView。
若使用Jstl的fmt標簽,需要在SpringMVC的配置文件中配置國際化資源文件。
實現過程:
1.引入jstl.jar和standard.jar兩個jar文件到classpath中。
2.在src目錄下新建i18n.properties,內容如下:
i18n.username=Username
i18n.password=Password
3.復制i18n.properties文件為i18n_zh_CN.properties,內容如下:
i18n.username=\u7528\u6237\u540D
i18n.password=\u5BC6\u7801
4.復制i18n.properties文件為i18n_en_US.properties,內容如下:
i18n.username=Username
i18n.password=Password
5.在sprinvmvc.xml文件中添加國際化配置文件信息,內容如下:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> <!-- 配置自動掃描包 --> <context:component-scan base-package="com.tiekui.springmvc.handlers"></context:component-scan> <!-- 配置視圖解析器:如何把handler方法返回給視圖 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="i18n"></property> </bean> </beans>
6.在success.jsp視圖文件中添加fmt標簽的內容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> </head> <body> <h1>Hello SpringMVC View</h1> time : ${requestScope.time} <br> <fmt:message key="i18n.username"></fmt:message> <br> <fmt:message key="i18n.password"></fmt:message> <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script> </body> </html>
目錄結構如下圖:
測試視圖index.jsp
<a href="helloworld">Hello World</a>
測試控制器代碼:
package com.tiekui.springmvc.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HelloWorld { @RequestMapping("/helloworld") public String hello(){ System.out.println("hello world"); return "success"; } }
測試方法:
1) 初次將IE瀏覽器首選語言設置為中文
2)將IE瀏覽器的首先語言優先級調整為英文優先。
注意事項:如果發現返回的中文有亂碼,需要將success.jsp的編碼設置為UTF-8。