struts2学习笔记之十(用户选择语言环境小程序)

struts 默认使用浏览器设置选择国家和语言,提供机制让用户选择国家语言环境 根据request_locale来确定。

如在提交请求时加上request_locale=en_US来设定语言环境为English

例如:http://localhost:8080/I18n/I18nJSP?request_locale=zh_CN

这样就会得到中文的语言环境显示JSP页面

接下来演示一个用户在JSP页面选择语言环境的小程序

  • web.xml配置
  • 制作JSP页面
  • Action处理类
  • struts.xml配置

web.xml配置

使用空项目的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts Blank</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

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

</web-app>

JSP页面

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s"  uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<s:i18n name="/resource/selectlanguage">
<html>
  <head>
    <title><s:text name="LanguageEnvironment" /></title>
  </head>
  <s:bean var="selectlanguage" name="org.struts2.bean.LanguageEnvironmentList"/>
  <body>
    <s:form action="selectlanguage">
        <s:select id="sl" list="#selectlanguage.localeList"
            listKey="value"
            listValue="key"
            key="selectLanguageEnvironment"
            name="request_locale"
            onchange="this.form.submit();"
        />
    </s:form>
  </body>
  <script type="text/javascript">
        document.getElementById("sl").value="${param.request_locale}";
  </script>
</html>
</s:i18n>

这里的form的action不能写成”#”(至少我在实验的时候不能用),否则的话会出错,查看网页源代码显示提交的页面是#.action

Action处理类

在这个项目里,用户没有提交过来什么数据,Action也不需要返回逻辑视图,因此这个项目不需要编写Action。但是却需要一个Bean,用于返回系统中的系统中可选的语言环境

package org.struts2.bean;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class LanguageEnvironmentList {

    private Map<String,Locale> localeList;

    {
        localeList = new HashMap<String,Locale>();
        localeList.put(Locale.CHINA.getDisplayLanguage(Locale.CHINA), Locale.CHINA);
        localeList.put(Locale.US.getDisplayLanguage(Locale.US),Locale.US);
    }

    public Map<String,Locale> getLocaleList() {
        return localeList;
    }

}

Locale.CHINA.getDisplayLanguage(Locale.CHINA)表示返回中文环境的显示;

Locale.CHINA中文环境。

struts.xml配置

使用的是一个自己制作的空项目的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 开发模式为true,出错的时候信息很多,或者配置文件修改会自动备份,减少重启服务器 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- 编码字符集,应于页面的字符集一样 -->
    <constant name="struts.i18n.encoding" value="gb2312"></constant>
    <package name="general" extends="struts-default">

            <!-- 万能的action,可以匹配任何action -->
            <action name="*">
                <!-- 这样的处理可以访问WEB-INF下面的内容,一般来说,用户是不可以访问WEB-INF的内容,有利于安全 -->
                <!-- 这个思想也就是用户的一切请求都是action请求-->
                <result>/WEB-INF/content/{1}.jsp</result>
            </action>

    </package>
</struts>
时间: 2025-01-04 20:08:18

struts2学习笔记之十(用户选择语言环境小程序)的相关文章

struts2学习笔记之十八(国际化)

java国际化 程序国际化: 程序可以根据机器所在国家.语言环境,自动翻译内容 国际化的本质就是:查找.替换,从资源包里找到相应国家下的关键字对应的语言文字 国际化的步骤: (1)提供国际化资源文件 如果国家化资源包中有非西欧字符,需要使用native2ascii处理文件, native2ascii sourcefile destfile 生成一个是Unicode字符的文件 资源文件的写法:文件名语言代码国家代码 xiyang_en_US.properties hi="hello" x

Debian系统学习笔记(3):语言环境

3.修改系统语言环境 (1)按照dpkg包后设定语系 #apt-getinstall dpkg #dpkg-reconfigure locales //选择:en_US.UTF-8 UTF-8    确认OK,即可添加英语语言包 //远程控制台中文显示正常设置,需要加入: [*]zh_CN GB2312  [*]zh_CN.GB18030 GB18030  [*]zh_CN.GBK GBK [*]zh_CN.UTF-8 UTF-8 (2)#vim /etc/locale.gen //查看语言信息

struts2学习笔记之十二(控制标签)

在struts2的文件包中,有关于标签的具体使用方法,但是却需注意的是,官方文档某些地方描述是不准确,需要自己根据实际验证. 官方文档所在位置,struts-2.3.16.1/docs/WW/docs/home.html,进入网页后选择Guide,然后就可以看到Tag Developers Guide,在这里就可以查阅tag的使用了. java领域MVC框架 主要实现控制器(StrutsPrepareAndExecuteFilter + Action ) 提供大量的标签库,可以简化view的开发

struts2学习笔记之十五(输入校验)

输入校验 输入校验和类型转换相辅相成 提交String请求参数,首先是类型转换,再次验证数据的合理性,然后进一步处理 分为客户端校验和服务器校验 客户端:js代码 服务器校验:java代码 客户端校验不能阻止恶意行为,决不能代替服务器校验 客户端也必不可少,由于大部分的浏览行为是正常行为,这样可以降低服务器的负担 两者必不可少. struts2的输入校验完全是模块化的方式 需要检验哪个Action 1.继承ActionSupport类 2.为该Action增加校验规则文件 --struts2会自

struts2学习笔记之十:文件上传

Struts2的上传 1.Struts2默认采用了apache commons-fileupload 2.Struts2支持三种类型的上传组件 3.需要引入commons-fileupload相关依赖包 * commons-io-1.3.2.jar * commons-fileupload-1.2.1.jar 4.表单中需要采用POST提交方式,编码类型需要使用:multipart/form-data 5.Struts2的Action 取得文件名称->>规则:输入域的名称+固定字符串FileN

struts2学习笔记之十四:使用注解配置Action(不是和spring集成使用)

Struts2支持使用注解配置Action,减少配置文件的配置 Struts2如果要支持注解配置Action,需要插件的支持,导入插件struts2-convention-plugin-2.1.8.1.jar 项目目录树: 1.导入struts2需要的基本包 2.修改web.xml,让struts2拦截Action <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="htt

struts2学习笔记之十六(token标签)

token 为了防止重复提交数据,可以使用token标签,使用token标签之后,会自动生成一个hidden的GUID,提交的时候会将GUID保存到session中,然后根据提交的GUID和保存的GUID,判断是否是同一个 GUID,从而确定是否是同一次提交.如果是的话就返回一个invalid.token的逻辑视图,所以也需要配置invalid.token的物理视图. <input type="hidden" name="struts.token.name"

魏兆辉的IOS基础学习笔记之十二 OC语言基础-07 Foundation内存管理

本篇博文,将给大家介绍下再Objective-C中如何使用内存管理.一个程序运行的时候,如果不及时的释放没有用的空间内存.那么,程序会越来 越臃肿,内存占用量会不断升高.我们在使用的时候,就会感觉很卡,最终使得程序运行奔溃.因此,将无效的内存及时清理释放,是非常有必要的. 一个对象在最初创建使用,到最后的回收释放,经历的是怎样一个过程呢?包括:诞生(通过alloc或new方法实现).生存(接收消息并执行操作).交友(通过复合以及向方法传递参数).最终死去(被释放掉). 一.引用计数 在对象创建的

魏兆辉的IOS基础学习笔记之十四 OC语言基础-09 OC对象的内存管理

一. 原理 对于任何继承了NSObject的对象,都有一个与之关联的整形变量,称为引用计数器:只有计数器的值为0的时候,OC就回收该对象,否则永不回收. 1. 创建对象时,如使用alloc ,new , copy,引用计数器的值为1 2. 当使用release方法释放时,计数器的值减1 3. 当使用retain方法时,计数器的值加1 4. 当对象被回收时候,自动调用对象的dealloc方法, 5. 使用retainCount方法来获取引用计数器的值 二. 防止内存泄露标准示例写法: @class