zoukankan      html  css  js  c++  java
  • springmvc国际化 基于请求的国际化配置

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

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

    项目结构图:

    说明:properties文件中为国际化资源文件.格式相关见文章http://www.cnblogs.com/dennisit/p/3359008.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");
        }
    }
    复制代码

     

    程序首次运行结果:


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

     

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



    转载请注明出处:[http://www.cnblogs.com/dennisit/p/3366368.html]

    在线交谈

    热爱生活,热爱Coding,敢于挑战,用于探索 ...
     
    分类: Javaeespring
    标签: springmvc
  • 相关阅读:
    Linux文件/proc/net/tcp分析
    为什么系统调用会消耗较多资源
    为什么Linux默认页大小是4KB
    为什么Linux需要虚拟内存
    Make 命令教程
    关于同步的一点思考-下
    关于同步的一点思考-上
    Linux下的进程控制块(PCB)
    汇编语言基础:寄存器和系统调用
    内核栈与thread_info结构详解
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3367302.html
Copyright © 2011-2022 走看看