第五章开发国际化的Struts应用 update

合集下载

第五章:struts2标签库

第五章:struts2标签库

IBM Software Group
IBM Software Group
数据标签-----property标签
property标签用于输出值栈中的对象的属性(property)值,使用value属性来指定要输出 的对象属性,如果没有指定value属性,那么默认输出栈顶对象。
IBM Software Group
IBM Software Group
IBM Software Group
Struts2标签库
在早期的WEB开发中,JSP视图控制和显示技术主要依靠Java脚本来实现,这样一来 ,JSP页面重新嵌入了大量的Java脚本代码,给开发带来了极大的不方便。 从JSP1.1规范后,JSP增加了自定义标签库的支持。标签库是一种组件技术,通过标 签库,可以将复杂的Java脚本代码封装在组件中,开发者只需要使用简单的代码就可 以实现复杂的Java脚本功能。提供了Java脚本的复用性,提高了开发者的开发效率。 Struts2标签库相对struts1.x进行了巨大的改进,支持OGNL表达式,不再依赖任何表现 层技术。
IBM Software Group
IBM Software Group示例:访问地址:http://localhost:8080/.../setTag.action
IBM Software Group
数据标签-----push标签
push标签用于把一个值压入值栈(位于栈顶),注意和set标签的区别,set标签是将值放 到action上下文中。当push标签结束后,push标签放入值栈中的对象将被删除,换句 话说,要访问push标签压入栈中的对象,需要在标签内部去访问。 push标签的属性
IBM Software Group

基于struts框架的国际化问题的解决方案

基于struts框架的国际化问题的解决方案

默认 资 源 文 件 抽 题 组 卷 英 文 资 源文 件 中文 资源 文 件
Co mpo e pp ia in p o e t s s a l to . r p ri c e Co o e p l a in e . r p ris mp s a p i t c o n p o ete
下 面 以登 录模 块 为例来讨 论 资源 文件 的建 立 和
使 用.
表 1 网 上 考 试 系 统 各 模 块 对 应 的 资 源 文 件
模 块名 资源文件类型 默认资源文件
考生登录 英文资源文件
资源文件名称
S u e t o ia p ia in. r p r e td nL gn p l t c o p o et s i
这种 多模 块 的 Srt 应用 ,可 以考 虑 为 网上 考 试 系 t s u
关 的格式化 或解 析工 作 , 它代 表 一种 特 定 的语 言 和 地 区 ,向本地 敏感 的类 提供 本地化 信 息 ….
R suc u de类 提 供存 放 和 管理 与 L c 相 eo r B n l e oa l
_
存 在 ssi es n内 , 样 ,Srt框 架 能 自动 根 据这 一 o 这 t s u o ae L cl实 例从 R suc ude中选 择合 适 的资源 文 eoreB nl 件, 再从 资 源文件 中读 取本 地化 的消 息文 本 ] 2.
Srt框 架提 供 了对 国际化 的支 持 , 文 利 用 Srt t s u 本 t s u 框 架解决 了网上考 试 系统 的 国际化 问题 ,使其 支 持 面 向中文和 英文 两种 不 同的语 言环境 .
2 网 上考 试 系统 国 际化 问题 解 决 方 案

struts1 详解

struts1 详解

01struts基础J2EE1.4ServletJspJDBCJTA(Java Transaction API)JPA(Java persistence API)---EJBJavaMailJSTLEJBJNDIModel_1的执行流程Mode2_2的执行流程Struts框架的版本Struts充当表现层的作用。

Struts框架的核心组件ActionServlet总控制器。

核心组件,用于将具体的请求分配到各自处理的Action组件中。

Action具体的业务处理过程组件ActionFrom(FormBean)获取表单参数,并将参数封装到Bean中。

ActionForward用来Action的请求转发ActionMapping帮助控制器[ActionServlet]将请求映射到操作类[Action]Struts-config.xml用来配置Stuts组件的关联关系。

Struts框架的工作流程Struts-config.xml<form-bean name="loginForm" type="com.softfz.login.LoginForm" />name:用来表示actionform的名称type:用来表示actionform的类路径<actionattribute="loginForm" name="loginForm"path="/loginAction" scope="request"type="com.softfz.login.LoginActionAction" validate="true"input="/index.jsp" />attribute:表示ActionFrom的实例放到作用域中的名称.LoginForm aa = new LoginForm();aa.setUsername(request.getParameter("username"));aa.setPassword(request.getParameter("password"));request.setAttribute("attribute的值",aa);name:表示Action和ActionFrom关联的名称。

Strust技术的应用

Strust技术的应用

struts-config.xml配置文件的说明
<action-mappings> <action type="com.sinosoft.visa.ui.control.facade.UILogonFacade" validate="false" scope="request" path="/logonin"> <forward name="success" path="/common/SystemFrame.jsp" /> <forward name="false" path="/index.jsp" /> </action>
对应的页面表单:
<form method="post" action="/payment/logonin.do?UIAction=LogOn">
Struts中的标签库



· struts-html标签库。这个库可以被用来生成动 态HTML用户界面和窗体。 · struts-bean标签库。在将JavaBean代码放入 JSP 页面时这个库提供实质性的加强的功能以改 善其性能,它由标签提供。 · struts-logic标签库。这个库可管理有条件的 文本生成,在对象集合中循环以重复生成输出文 本和应用程序流程管理。 · struts-template标签库。在为具有相同的风格 或格式生成动态JSP模板时,这个库所提供的标 签会有很大的帮助。
目前用到的标签

<bean:message key="prompt.payment.startSerialNo" /> <bean:write name="vsDossierDto" property="userName"/>

Struts框架与Web程序开发的应用研究

Struts框架与Web程序开发的应用研究

库结合, 可以实现对客户 端的表单数据的良 好
封装和支持, Action 处理器对象可以直接对它 象进行数据交互, uts 可根据系统的复杂度 Str 使用O/ R 映射或EJB 组件来实现业务逻辑层 的开发。
库具有强大的页面开发功能。St ruts 框架的 处理流程清楚地体现了MVC 系统的特点, 简 单的Str uts 组件结构如图1所示。客户端发 出HTTP 请求后, 请求被Struts 的 控制器接 收, 它实际就是一个Servlet , 在Struts 中它的 名字是ActionSer vlet , ion Servlet 在 Act struts- config .xm} 配置文件中 查找有效映射, 转发给Action 处理器对象进行处理。在移交 之前如有 Fo r m 就先填充它, r m 是一个 Fo
Java 类, 它记载的信息和http 表单所提交的属 性名及内容是一样的, Action 处理器对象访问 Form 中的数据, 处理和响应客户的请求, 它还 调用后台的Bean 组件, 这些组件封装了具体 的业务逻辑。Act ion 处理器对象根据处理结
进行读写, 而不再需要与Request ,Response对
一1 编码, 而我们呈现给用户的是国际化以后 的代码 , 显示和处理时要进行代码的转化。 (2)控制层的实现 控制层的主要任务是接受、截获用户请
Model 部分中的ActionForm 的映射, 完成对 用户数据的封装, 同时自 定义标记还提供了 对
标签最大灵活性的使用。
(3)Control er :它由ActionServlet 和它的 l 核心类是 R e q u e s t P r o c e s s o r 构成, ActionServlet 这个类的作用是从 客 户端接收请求 ,然后交给 RequestProcessor 类并且选择执 行相应的业务逻辑, 包括初始化、

Struts5

Struts5
孙 丰 伟
7/35
5.1.2 RequestProcessor类



在Struts1.1之前的版本中,ActionServlet类本身包含了很多 处理请求的代码,从1.1 开始,多数功能被移到 org.apache.struts.action.RequestProcessor类中,以减轻 ActionServlet类的负担. 对于多应用模块的struts应用,每个子模块都有各自的 RequestProcessor实例. 在ActionServlet 的process()方法中,一旦选择正确的子应 用模块,就会调用子应用模块的RequestProcessor实例的 process()方法来处理请求,在ActionServlet调用这个方法时, 会把当前的request和response对象传给它.
10/35
孙 丰 伟
public class UserLoginAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UserLoginForm userLoginForm = (UserLoginForm) form; if(userLoginForm.getUserName().equals("admin") && userLoginForm.getPassword().equals("admin")) { request.setAttribute("userName", userLoginForm.getUserName()); return mapping.findForward("success"); } // end if else { return mapping.findForward("failed"); } //end else } // method execute }

Struts框架Web应用的国际化

Struts框架Web应用的国际化
Ke rs: tus W e p i t n;itr ai ai t n ywo d Sr t; ba pl i a c o ne t n onl a i z o
O 引 言
在电子商务时代的今 天 , b We 应用 程序 已变得 非
国家。对 于已经 开发好 的软件 , 比如某种英文软件 , 如
对软 件的本地 化涉及 修改原 有程 序 的代码、 数据
和配置文 件等 , 需要 在原有 软件 的基础 上开 发 出新 的 软 件版本 。
国际化指的是在软件 设计 阶段 , 就应该 使软件具 有支持多种语言 和地 区的功 能。这样 , 当需要 在应用
中添加对 一种新 的语言 和 国家 的支持 时 , 不需 要对 已
本 地化 与 国际化 的概念 , v 和 Srt框架对 We 应 用 国际化 的支 持 , Ja t s a u b 并讲 述 了创 建 Srt的 RsucBn l和 Srt应 t s u e r ud o e e t s u
用 中访 问 RsucB nl的各种 途径 。 e r ud o e e
Abta t A o dfa wo ki v r o tntt fwaed v lp n . r t n ftebs rme r urnt e p l aind — sr c : g o rme r ey i s mp ra os t r e e me tStu sio eo h etfa wo ki c re ba pi t e o o s n W c o
开发提供 了一个非 常有竞 争力的选择 。怎样把这些技
术组合起来 形成 一个适应项 目需要的稳定框架是项 目
开发过程 中一个非 常 重要 的步骤 。长期 以来 ,aa Jv 开 发者致力 于找到一 种完美的 we 层应用框 架 , 而规 b 从

struts2国际化配置

struts2国际化配置

前提条件:strut2的必须架包已经引入,struts2的配置文件全部配置完成1.首先创建一个struts.properties在src目录下,服务器启动时候会自动加载该文件,在这个文件中写入struts.custom.i18n.resources=globalMessages,服务器会自动选择前缀为globalMessages资源文件。

(或者你在你的struts.xml文件中添加<constant name="struts.custom.i18n.resources"value="globalMessages"></constant>服务器加载struts.xml的时候会加载国际化资源文件);2.在src目录下创建资源文件英文globalMessages_en.properties 中文globalMessages_zh.properties。

globalMessages_en.properties 文件内容为home=homeglobalMessages_zh.properties文件内容为home=¥u9996¥u98753.在页面端获得资源文件信息。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'test.jsp' starting page</title></head><body><s:text name="home"></s:text></body></html>struts2的国际化分三种情况1.前台页面的国际化,2.Action类中的国际化,3.配置文件的国际化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– org.apache.struts.util.MessageResources – org.apache.struts.util.PropertyMessageResources – 注意的是MessageResources类仍然是一个抽象类,它的功能定义和 ResourceBundle类定义非常类似;PropertyMessageResources类是 MessageResources类的非抽象子类.
IT Education & Training
国际化
国际化(Internationalization)又称为I18N 一个支持国际化的应用程序应该具有以下特征:
– 不需要改变代码就可以实现支持添加的语言. – 文本元素,消息元素以及图像都要从代码中脱离出来,存储在代码外部. – 文化相关的数据,如:时间,货币.都应该根据用户所在的地理位置及语言环境进行 格式化. – 支持非标准的字符集. – 能够快速适应新的语言或地区.
IT Education & Training
Struts对国际化的支持
Struts框架提供了对国际化的支持,处理国际化的重点在于将客户所看到的所有 资源(文本,图像等)进行本地化处理.Struts框架可以获得客户的Locale对象 信息,并且Locale对象将存储在Session领域,一旦确定了客户的区域信息,框 架就可以使用该信息从资源包中查询本地化的文本及其他资源信息了. Struts已经将国际化的实现封装在框架中. 在Struts框架中实现国际化,需要做以下工作:
IT Education & Training
Struts资源文件(续)
资源文件分为两类,一类是默认的资源文件,即我们在struts-config.xml中使用 <message-resources>标记描述的内容,如下:
<message-resources parameter=".neusoft.struts.ApplicationResources" <message-resources parameter=".neusoft.struts.ApplicationResources" /> /> 另一类就是特定语言的资源文件,特定语言的资源文件的名字格式有两种,分 别为:
– Return RequestUtils.getUserLocale(request,null);
} 而在RequestUtils类的getUserLocale()方法中,其实还是调用了 request.getLocale()方法.
IT Education & Training
ResourceBundle类
– Public java.util.Locale getLocale(); – Public java.util.Enumeration getLocales();
IT Education & Training
续:
那么客户的Locale信息怎么传递到服务器上的呢?所谓的web客户端指的就是 浏览器.在IE上选择[工具]->[Internet选项] ->[常规] ->[语言] 如上操作之后出现了提供的选择语言用的页面.它是一个列表,按自上而下优 先级逐渐递减.getLocale()方法返回列表中的第一个语言设置,而getLocales() 方法返回列表中所有设置. 使用浏览器的时候其中的语言设置会随着用户的请求传递到web服务器中.可 以见例子5-1,通过Servlet获得客户Locale信息. 将如下的servlet类发布到web服务器上,通过客户端浏览器请求该Servlet类, 浏览器的语言区域设置信息就会作为相应信息输出在浏览器上.
IT Education & Training
本地化
本地化(Localization)通过添加特定组件和翻译来使软件适用于特定的场所和 语言的过程.Localization可以缩写为L10N. 通常本地化最费时间的部分是翻译消息文本. 其他类型的数据如声音,图像等如果也是文化敏感的,可能也需要进行本地 化. 本地化也包括对货币符号,时间格式,数字格式,日期格式等的修改.
IT Education & Training
使用资源文件
资源文件定义完毕,我们可以在以下情况中使用资源文件,从而实现国际化.
– 在进行错误处理时,使用资源文件中的内容封装错误信息. – 在代码中,通过调用方法,获得资源文件中的信息. – 在JSP中使用自定义标记库标记,引用资源文件中的文本信息.
IT Education & Training
MessageFormat类
MessageFormat类是对文本资源进行格式化的类. 在Struts框架中最常用的资源文件就是ApplicationResources.properties.该文件 给出了文本消息和资源名字的对应关系. 在这个文件中包含两种文本:
IT Education & Training
Locale类
Java对国际化的支持的核心是Locale类.Locale对象可以封装语言,国家等信息. 语言和国家代码通过ISO标准来定义[ISO-3166,ISO-639].
国家代码 es de fr gb cn kr jp
说明 西班牙 德国 法国 英国 中国 韩国 日本
– 针对不同的语言编写资源文件. – 使用资源文件夹.
IT Education & Training
Struts资源文件
创建Struts的资源文件的时候要遵守一些约定,例如资源包文件名应该是以 ".properties"为扩展名的一个文本文件,该文本文件中的消息格式为: key=value.下面是一个资源文件的定义. .error=invalidate name! .error=invalidate name! login.password.error=invalidate password! login.password.error=invalidate password! invalidate.input=invalidate username or password! invalidate.input=invalidate username or password! 要注意的是:在定义key的时候要注意,分隔符应该是".";在一个资源文件中 key是不应该重复的. 资源文件有两种,一类是默认资源文件,即在struts-config.xml中用<messageresources>标记描述的内容:<message-resources parameter=".struts.ApplicationResources"/> 另一类是特定语言的资源文件,如果要开发一个国际化的应用,就一定要针对 不同的国家语言定义相应的资源文件.比如当客户的Locale信息是英文时,要 提供一个ApplicationResources_en.properties文件;如果Locale信息是中文 的,就要提供一个ApplicationResources_cn.properties文件.框架会自动根据 客户的Locale信息找到相应的资源文件.这些文件就是特定语言的资源文件.
把语言代码和国家代码传递到Locale构造中,即可创建一个Locale对象. 注意:Locale对象并不作任何的国际化相关的解析或是格式化工作,它的作用 是将这些信息传递给一些敏感类.所谓的敏感类是:一个类根据Locale对象在 运行期更改其运行功能,那么这个类就被称为敏感类.如:DateFormat类, NumberFormat类. 对于一个java应用程序来说,JVM将会自动的检测到当前操作系统,为当前环 境设置一个Locale,这就是默认的Locale设置.可以通过调用Locale类的 getDefault()方法获得当前的默认Locale设置信息:Locale defaultLoc = Locale.getDefault(); 那么对于一个web应用程序来说,作为web服务器它需要获得客户端的Locale信 息.如何获得呢?可以通过调用ServletRequest接口中的两个方法来查询相关 信息:
IT Education & Training
续:
在Struts框架中对Locale访问进行了封装. 在Action组件类中如果想获得Locale对象,只需要调用getLocale()方法即可, 该方法定义在Action类中: Protected Locale getLocale(HttpServletRequest request){
– 静态文本:即文本内容已经明确指定; – 动态文本:即文本内容没有完全指定,只有在运行时候才能确定文本内容,不确定的 文本内容使用{ }来指定.
Struts框架已经把相关的操作进行了封装,对于应用Struts框架的开发者来说不 需要自己进行资源文件的读取,Struts框架提供的资源文件读取的功能是透明 的.
IT Education & Training
Beyond Techn用
Copyright2007 版权所有 东软培训
IT Education & Training
本章要点
国际化与本地化 Java对国际化的支持 Struts对国际化的支持转换函数 将sayHello应用实现国际化 解决中文问题的最佳实践
IT Education & Training
续:
特定语言的资源文件的名字格式有两种:
– 默认资源文件名_语言代码.properties – 默认资源文件名_国家代码_语言代码.properties
并且特定语言的资源文件不需要描述在struts-config.xml文件中.
客户1
Locale=zh
语言代码 es de fr en zh ko ja
相关文档
最新文档