iln8实现国际化deme及乱码问题解决方案

1 篇文章 0 订阅
1 篇文章 0 订阅

一,准备的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下载地址:

    国际化iln8demo下载


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值