您的位置:首页 > 编程语言 > Java开发

springmvc国际化 基于请求的国际化配置

2013-10-13 22:50 387 查看

springmvc国际化 基于请求的国际化配置

基于请求的国际化配置是指,在当前请求内,国际化配置生效,否则自动以浏览器为主。

项目结构图:



说明:properties文件中为国际化资源文件.格式相关见文章: /article/4929389.html

这里不同点是,在国际化资源文件中增加参数位.例如:messages_ja.properties如下

main.target=愛してる
main.title=こんにちは {0},{1}


web.xml文件中声明spring监听与上下文资源、spring-mvc应用文件.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context/spring-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


spring-context.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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

<context:component-scan base-package="com.pudp" />

<!-- 定义国际化消息
说明:dispatcherServlet.xml 只会在servlet做出响应,所以加载信息应该放置在servlet中.
-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<!-- 其中basename用来指定properties文件的通用名
如实例中的messages_en.properties,messages_ja.properties通用名都是messages
-->
<property name="basename" value="messages" />
<property name="defaultEncoding" value="UTF-8"/>
<property name="useCodeAsDefaultMessage" value="true" />

</bean>

</beans>


servlet-context.xml文件中声明springmv相关,并定义国际化请求处理拦截器,处理用户请求式国际化

<?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven />

<context:component-scan base-package="com.pudp" />

<!-- 配置基于Session的处理,将提交上来的locale参数进行处理 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<!-- 该属性可以不用配置 -->
<property name="defaultLocale" value="ja"></property>
</bean>

<!-- 国际化请求拦截器处理 -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>

</beans>


视图层实现国际化请求处理

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>spring国际化</title>
</head>

<body style="font-size: 13px;">

<span>

<a href="index.html?locale=zh">中文版</a> | <!-- 对应 messages_zh.properties文件-->
<a href="index.html?locale=ja">日文版</a> |    <!-- 对应 messages_ja.properties文件-->
<a href="index.html?locale=ko">韩文版</a> |    <!-- 对应 messages_ko.properties文件-->
<a href="index.html?locale=en">英文版</a>     <!-- 对应 messages_en.properties文件-->
</span>

<!-- 使用message 标签配置需要显示的国际化文本,
code对应国际化文件中对应的键的名称,arguments 对应国际化属性文件中的参数。 -->
<p>
<spring:message code="main.title" arguments="苏若年,林允熙"/> ,
<spring:message code="main.target"/>
</p>
</body>
</html>


springmvc控制器类实现

package com.pudp.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.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/**
* description:
*
* @author <a href='mailto:dennisit@163.com'> Cn.苏若年 (En.dennisit)</a> Copy Right since 2013-10-9
*
* com.pudp.controller.ComponentController.java
*
*/

@Controller
@RequestMapping(value="/")
public class ComponentController {

/**
* 跳转到首页视图层
*
* @author <a href='mailto:dennisit@163.com'>Cn.pudp(En.dennisit)</a> Copy Right since 2013-10-9 下午12:54:54
*
* @param request
* @param response
* @return
*/
@RequestMapping(value={"index","index.html"},method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView windexPage(HttpServletRequest request, HttpServletResponse response){
return new ModelAndView("main/index");
}
}


程序首次运行结果:



因为我们默认的资源文件为日文,所以展示日语版.

当我们点击韩语版本的话,即可将系统的国际化资源设定为韩语,效果图如下



转载请注明出处:[/article/4929392.html]



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: