`
Josh_Persistence
  • 浏览: 1647585 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Spring3.X @MVC - (四)解析用户区域实现国际化

阅读更多

前言:

一、总共有10节,也就是10篇博客来讲述Spring的MVC,几乎涵盖了所有Spring MVC中的内容。

 

二、我创建的例子是一个球场预订系统,例子我已经测试调试通过,是一个Maven的project,包含一个Parent project:wsheng-spring-base和一个子Module:wsheng-spring-mvc.

 

三、在Eclipse中直接import maven的project即可,会同时引入上诉两个project的。

 

四、如果你没有耐心,可以不必往下学习,因为网上有很多例子,但是都是讲的Spring MVC很少的面,而且你可以快速的上手,但如果你想真正了解Spring MVC中的很多细节,就可以慢慢的去看博客(从第一节到第十节),如果有什么问题,欢迎信息告诉我。

 

五、学习的方法是你可以先将源码导入到eclipse中,然后根据博客上的内容,对照源码,慢慢消化,这是个漫长的过程,但是会帮助你了解很多Spring MVC的细节。

===================================================================================

 

 

在Spring3.X @MVC - (三)Spring3中的拦截器的基础上http://josh-persistence.iteye.com/blog/1880324

实现web显示内容的国际化。

 

一、问题:为了让web应用支持国际化,必须识别每个用户的的首选区域并且根据这个区域显示内容。

 

二、解决方案:在Spring MVC中,有自己特定的区域解析器Local Resolver来识别用户的区域,Spring MVC中自带了多个Local Resolver,以提供和满足各种不同的条件解析。当然也可以通过实现Local Resolver来创建自己的区域解析器。

 

三、工作原理:

1. 按照HTTP请求头解析区域

     Spring使用的默认区域解析器是AcceptHeaderLocalReslover。这个解析器会去检测HTTP请求的accept-language头表来解析区域。这个头标由用户的Web浏览器根据底层操作系统的区域进行设置。注意,这个区域解析器不能修改用户的区域,因为他不能修改用户操作系统的区域设置。

  

2. 按照会话属性解析区域

     SessionLocalResolver这个解析器会检查用户会话中的一个预定义属性解析区域,如果会话属性不存在,这个解析器从accept-language HTTP头标中确定默认区域。注意,SessionLocalResolver能够修改存储区域的会话属性,改变用户的区域。

<bean id = "localResolver" class="org.springframework.web.servelt.i18n.SessionLocalReslover">

      <property name="defaultLocale" value="en"/>

</bean>

 

3. 根据Cookie解析区域

    CookieLocalResolver检查用户浏览器中的一个Cookie来解析区域。如果这个Cookie不存在,区域解析器从accept-language HTTP头标中确定默认区域。

<!-- Locale resolver for cookies --> 

    <bean id="localeResolver"

        class="org.springframework.web.servlet.i18n.CookieLocaleResolver">

        <property name="cookieName" value="language" />

       <property name="cookieMaxAge" value="3600" />

        <property name="defaultLocale" value="en" />

    </bean>

 

4. 修改用户区域

   除了调用LocaleResolver.setLocale()显示地修改用户的区域之外,你还可以将LocaleChangeInterceptor应用到处理程序映射。这个拦截器检测当前HTTP请求中是否存在一个特殊的参数。这个参数名可以通过这个拦截器的

paramName属性定制。换句话说,如果当前的请求中包含了这样一个参数,这个拦截器将会根据参数值修改用户的区域。

<bean id="localeChangeInterceptor"

        class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">

        <property name="paramName" value="language" />

    </bean>

在web上下文中注册该拦截器

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">

        <property name="order" value="1"/>

        <!-- Interceptors are applied to all annotated controllers -->

         <property name="interceptors">

            <list>

                <ref bean="localeChangeInterceptor" />

            </list>

        </property>

    </bean>。

 

现在用户的区域就可以由带有language参数的任何URL修改,例如下面的两个URL分别将用户区域改成美国和德国:

http://localhost:8888/wsheng-spring-mvc/welcome?language=en-US

http://localhost:8888/wsheng-spring-mvc/welcome?language=de

接着,你可以在welcome.jsp中显示HTTP响应对象的区域,验证区域拦截器配置:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

 

<html>

<head>

<title><spring:message code="welcome.title" text="Backup - Welcome" /></title>

</head>

 

<body>

<h2><spring:message code="welcome.message" text="Backup - Welcome to Court Reservation System" /></h2>

 

Today is <fmt:formatDate value="${today}" pattern="yyyy-MM-dd" />.

<hr />

Handling time : ${handlingTime} ms

<br />

Locale : ${pageContext.response.locale}

</body>

</html>

1
6
分享到:
评论

相关推荐

    Spring boot 配置参数一览.pdf

    - `spring.mvc.locale`:设置应用的固定区域设置,例如'en_UK'。 - `spring.mvc.date-format`:设置应用的固定日期格式,例如'dd/MM/yyyy'。 - `spring.mvc.message-codes-resolver-format`:设置消息代码的格式。 -...

    SpringMVC4整合tiles3

    在你的`pom.xml`或`build.gradle`文件中,添加Spring MVC和Tiles3的依赖。例如,对于Maven: ```xml &lt;!-- Spring MVC --&gt; &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-webmvc &lt;version&gt;4.3.28.RELEASE...

    Struts2.0学习笔记.doc

    Struts2.0是一个流行的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)架构的实现。在Struts2中,类型转换是自动进行的,旨在帮助开发者处理请求参数与Action类属性之间的类型匹配问题。文档中的内容主要...

    Spring攻略(第二版 中文高清版).part1

    8.4 解析用户区域 302 8.4.1 问题 302 8.4.2 解决方案 302 8.4.3 工作原理 302 8.5 外部化区分区域的文本信息 304 8.5.1 问题 304 8.5.2 解决方案 304 8.5.3 工作原理 305 8.6 按照名称解析视图 ...

    简单的springMVC.rar

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在 "简单的springMVC.rar" 压缩包中,我们可以看到它包含了实现 ...

    Spring攻略(第二版 中文高清版).part2

    8.4 解析用户区域 302 8.4.1 问题 302 8.4.2 解决方案 302 8.4.3 工作原理 302 8.5 外部化区分区域的文本信息 304 8.5.1 问题 304 8.5.2 解决方案 304 8.5.3 工作原理 305 8.6 按照名称解析视图 ...

    webx3框架指南PDF教程附学习Demo

    该文档为官方webx框架文档,对webx进行了全面的讲解,非常实用,并附学习...3.1.1. 初始化级联的Spring容器 ............................................................... 24 3.1.2. 初始化日志系统 ..............

    酒店管理 jsp struts1.x

    在酒店管理系统中,可以使用Tiles创建模板化的布局,如头部、导航栏、主要内容区域等。 在名为"Myhotel"的压缩包中,可能包含了这个酒店管理系统的源代码、配置文件、资源文件等。开发者可以从中学习到如何使用JSP...

    软件技术公司面试题,可以查看

    - **ApplicationContext**:高级容器,扩展了BeanFactory的功能,支持国际化、事件发布等。 #### 12. 数据库连接池工作机制 - **核心思想**:预创建多个数据库连接,并将这些连接存储在一个池中供应用程序重复使用...

    Tiles框架入门教程示例(springmvc整合tiles)

    通过这种方式,开发者可以创建一个主模板,然后在其中插入不同的内容区域,从而实现页面布局的模块化。 集成Tiles到SpringMVC项目中,我们需要以下步骤: 1. 添加依赖:在`pom.xml`文件中,我们需要添加Tiles和...

    115个Java经典面试题和答案

    - 类加载机制:加载、验证、准备、解析、初始化。 - 类加载器:Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader。 - 类加载过程中的双亲委派模型。 - 类的生命周期和类加载器的交互。 4. **...

    图片的截取上传java+Jcrop

    在后端,我们通常使用Java的Servlet或Spring MVC来接收请求。收到请求后,解析传递过来的裁剪参数,并使用Java的图像处理库(如Java AWT或ImageMagick)根据这些参数裁剪原始图片。以下是一个简单的Java Servlet示例...

    2021-2022计算机二级等级考试试题及答案No.9778.docx

    22. 标准键盘通常分为主键区、功能键区、光标控制键区和数字编辑键区四个区域。 23. ASCII码中,字母'H'的值为48H,'J'在'H'之后两个位置,所以'J'的ASCII码值为50H。 24. 域名服务器存储了Internet主机的域名和IP...

    中级程序员必备面试题.txt

    ### 中级程序员必备面试题解析 #### 如何创建一个有序集合 有序集合通常是通过`TreeSet`或`LinkedHashSet`等类实现。`TreeSet`基于红黑树存储元素,可以保证元素的自然排序;而`LinkedHashSet`则是基于哈希表与...

    MyEclipse 6 Java EE 开发中文手册.pdf

    - **Struts:** MVC 框架,实现业务逻辑和视图分离。 - **JSF:** JavaServer Faces,简化 Web 应用开发。 - **XFire WebService:** 实现 Web Service 接口。 - **Hibernate:** ORM 框架,简化数据持久化操作。 - ...

    jstl操作教程

    **JSTL(JavaServer Pages Standard Tag ...同时,JSTL与其他Java Web框架(如Spring MVC)的结合使用,可以进一步提升开发效率和应用质量。所以,无论你是初学者还是有经验的开发者,掌握JSTL都是非常有价值的。

Global site tag (gtag.js) - Google Analytics