Spring MVC使用SessionLocaleResolver实现用户自定义切换语言实例
创始人
2024-04-16 14:30:31
0

在许多成熟的商业软件系统中可以让用户自由切换语言,而不是修改浏览器的语言设置。一旦用户选择了自己需要使用的语言环境,整个系统的语言环境将一直是这种语言环境。

Spring MVC 也可以允许用户自行选择程序语言。本章通过 Web 应用 springMVCDemo09 演示用户自定义切换语言,在该应用中使用 SessionLocaleResolver 实现国际化,具体步骤如下:

1)创建应用

创建应用 springMVCDemo09,并导入 Spring MVC 相关的 JAR 包。

2)创建国际化资源文件

在 WEB-INF/resource 目录下创建中英文资源文件 messages_en_US.properties 和 messages_zh_CN.properties。

messages_en_US.properties 的内容如下:

  1. first=first
  2. second=second
  3. third={0} third{1}
  4. language.en=English
  5. language.cn=Chinese

messages_zh_CN.properties 的内容如下:

  1. first=\u7B2C\u4E00\u9875
  2. second=\u7B2C\u4E8C\u9875
  3. third={0} \u7B2C\u4E09\u9875 {1}
  4. language.cn=\u4E2D\u6587
  5. language.en=\u82F1\u6587

3)创建视图 JSP 文件

在 WEB-INF/jsp 目录下创建 3 个 JSP 文件,即 first.jsp、second.jsp 和 third.jsp。

first.jsp 的代码如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
  4. Insert title here
  5. --




second.jsp 的代码如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
  4. Insert title here


third.jsp 的代码如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
  4. Insert title here


4)创建控制器类

该应用有两个控制器类,一个是 I18NTestController 处理语言种类选择请求,一个是 MyController 进行页面导航。在 src 目录中创建一个名为 controller 的包,并在该包中创建这两个控制器类。

I18NTestController.java 的代码如下:

  1. package controller;
  2. import java.util.Locale;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. @Controller
  5. public class I18NTestController {
  6. @RequestMapping("/i18nTest")
  7. /**
  8. * locale接收请求参数locale值,并存储到session中
  9. */
  10. public String first(Locale locale) {
  11. return "first";
  12. }
  13. }

MyController 的代码如下:

  1. package controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. @Controller
  5. @RequestMapping("/my")
  6. public class MyController {
  7. @RequestMapping("/first")
  8. public String first() {
  9. return "first";
  10. }
  11. @RequestMapping("/second")
  12. public String second() {
  13. return "second";
  14. }
  15. @RequestMapping("/third")
  16. public String third() {
  17. return "third";
  18. }
  19. }

5)创建配置文件

在 WEB-INF 目录下创建配置文件 springmvc-servlet.xml 和 web.xml。web.xml 的代码与 Spring MVC 简单应用的相同,这里不再赘述。springmvc-servlet.xml 的代码如下:

  1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xmlns:mvc="http://www.springframework.org/schema/mvc"
  3. xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  13. class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
  14. class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

6)发布应用并测试

首先将 springMVCDemo09 应用发布到 Tomcat 服务器并启动 Tomcat 服务器,然后通过地址“http://localhost:8080/springMVCDemo08/my/first”测试第一个页面,运行结果如图 1 所示。


图 1 中文环境下 first.jsp 的运行结果

单击图 1 中的“第二页”超链接,打开 second.jsp 页面,运行结果如图 2 所示。


图 2 中文环境下second.jsp的运行结果

 

单击图 2 中的“第三页”超链接,打开 third.jsp 页面,运行结果如图 3 所示。


图 3 中文环境下third.jsp的运行结果

单击图 1 中的“英文”超链接,打开英文环境下的 first.jsp 页面,运行结果如图 4 所示。


图 4 英文环境下 first.jsp 的运行结果

单击图 4 中的 second 超链接,打开英文环境下的 second.jsp 页面,运行结果如图 5 所示。


图 5 英文环境下 second.jsp 的运行结果

单击图 5 中的 third 超链接,打开英文环境下的 third.jsp 页面,运行结果如图 6 所示。


图 6 英文环境下 third.jsp 的运行结果

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...