一,准备的jar
如果是maven管理的话:直接在pom.xml下添加如下文件
<properties>
<!-- Spring版本号 -->
<spring.version>4.3.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- common-beanutil begin -->
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- AOP相关包 -->
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.0</version>
</dependency>
<dependencies>
二,国际化配置文件,这里只准备了两个文件,message_en_US.properties和message_zh_CN.properties文件
1.message_en_US.properties
tom.lanague=English
tom.name=tom
tom.action=TO c
tom.en=English
tom.zh=Chinese
2.message_zh_CN.properties
tom.lanague=\u4E2D\u6587
tom.name=\u6C64\u59C6
tom.action=\u8DF3\u8F6C
tom.en=\u82F1\u6587
tom.zh=\u4E2D\u6587
三,spring配置文件和web配置文件(重点)
1.spring.xml文件配置
<context:component-scan base-package="com.iln8.*" />
<context:annotation-config /> <!-- 激活Bean中定义的注解 -->
<mvc:annotation-driven />
<!-- 视图相关配置 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" /> <!-- 视图前缀 -->
<property name="suffix" value=".jsp" /> <!-- 视图后缀 -->
</bean>
<!-- 存储区域设置信息 -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<!-- 国际化资源文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:message" />
<property name="useCodeAsDefaultMessage" value="true"/>
</bean>
<mvc:interceptors>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptors>
2.web文件配置
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.LocalizationContext</param-name>
<param-value>message</param-value>
</context-param>
<!-- 配置SpringMVC环境 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
四。java代码-------->控制界面的跳转
package com.iln8.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class TestController {
@RequestMapping("/test.action")
public ModelAndView test(HttpServletRequest request,HttpServletResponse response) {
return new ModelAndView("b");
}
@RequestMapping("/tt.action")
public ModelAndView tt(HttpServletRequest request,HttpServletResponse response) {
return new ModelAndView("c");
}
}
五,jsp界面设置
1.index.jsp
<jsp:forward page="/test.action"></jsp:forward>
2.b..jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fmt:message key="tom.lanague"></fmt:message><hr>
<a href="?lang=zh_CN"><fmt:message key="tom.zh"></fmt:message></a>
<a href="?lang=en_US"><fmt:message key="tom.en"></fmt:message></a>
<a href="tt.action"><fmt:message key="tom.action"></fmt:message></a>
</body>
</html>
3.c.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fmt:message key="tom.lanague"></fmt:message><hr>
</body>
</html>
五,访问http://localhost:8080/iln8/
六,关于fmt:message乱码问题
为什么会出现乱码呢?原因是在配置文件,国际化文件是再spring配置文件内执行的,当你同过静态网地址访问网页时,不经过他们的spring拦截,国际化文件不会被加载,所以会出现乱码。所以上面我们通过转发的形式实现国际化切换操作。
国际化demo下载地址: