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]
相关文章推荐
- Java RMI之HelloWorld篇
- Java基础——Java对象杂谈
- MyEclipse安装出现 Unable to find Java environment
- java--括号匹配
- 《Java语言程序设计(基础篇)》读书笔记(三)
- NetBeans的快捷键使用
- 更改jdk后,eclipse运行jsp出错
- 为什么java.net.URLEncoder.encode方法要调用两次而不是一次呢?
- java--打渔晒网问题(时间间隔的获取)
- JAVA异步任务执行之-FutureTask
- java 多线程基础
- Java多线程
- java--整数翻转后相加
- UEditor 与Struts2 结合上传图片
- java.lang.ClassNotFoundException: javax.persistence.EntityListeners
- JAVA笔试题集合
- java设计原则之开闭原则 (转载)
- Binary String Matching Java实现
- Java的内存管理机制
- java编程思想之吸血鬼数字