第五章开发国际化的Struts应用 update
第五章: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框架的国际化问题的解决方案
默认 资 源 文 件 抽 题 组 卷 英 文 资 源文 件 中文 资源 文 件
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 详解
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技术的应用
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程序开发的应用研究
库结合, 可以实现对客户 端的表单数据的良 好
封装和支持, 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
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应用的国际化
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国际化配置
前提条件: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.配置文件的国际化。
Struts框架技术在管理信息系统中的应用
Struts框架技术在管理信息系统中的应用【摘要】伴随着管理信息系统业务逻辑的日趋复杂,基于MVC设计模式的Struts框架在系统开发中越来越受重视。
本文在概述MVC设计模式及Struts框架之后,结合案例系统阐述了Struts框架在管理信息系统中的应用。
【关键词】Struts框架;MVC设计模式;页面代码分离0引言当前管理信息系统在业务逻辑上日益复杂,并且对系统可维护性、可扩展性以及系统移植性的要求越来越高,因此新系统的设计开发大多倾向于采用MVC 设计模式。
而在诸多MVC框架中,Struts作为一款开源框架,建立在动态网站设计领域中JSP、XML及Servlet等相关开发技术之上,成为J2EE Web开发的首选。
1MVC及Struts概述1.1MVC设计模式MVC即Model-View-Controller,模型—视图—控制器模式。
早期Web应用系统开发中,业务逻辑和视图界面通常是耦合在一起的,比较适用于规模较小,业务简单且变化较少的情况,但随着应用系统业务逻辑日趋复杂,用户界面大量增加,同时在系统健壮性、代码可重用性的要求越来越高,MVC模式在软件开发效率方面的优势日益凸显,因而得到广泛应用。
MVC强制性的使应用程序的输入、处理和输出分开,将其划分成三个相对独立的层次:模型层、视图层和控制器层,从而降低了复杂的耦合关系,实现界面与应用逻辑的有效分离。
1.2Struts框架Struts由Apache软件组织负责开发,其实质是在JSP Model2基础上实现的一个MVC开源框架,其中模型部分由JavaBean或EJB组件构成,视图部分由Jsp文件和Struts客户化标签组成,控制器部分由ActionServlet和Action类来完成。
由于是一款开源框架,文档丰富且源代码公开,并且具备丰富的Taglib标签库,页面导航性强,对MVC有良好的实现,在业界J2EE架构中有广泛的应用。
2案例具体应用2.1系统整体框架设计案例系统为某管网管理系统,包含日志管理、权限管理、数据维护、查询统计、报表输出等多个模块。
struts框架详细介绍
struts框架详细介绍Struts是一个开源的Java Web应用程序开发框架,可以帮助开发者构建可扩展的、高性能的Web应用程序。
它遵循了Model-View-Controller(MVC)设计模式,通过将业务逻辑、表示逻辑和用户交互进行分离,使得应用程序更易于开发、测试和维护。
下面是关于Struts框架的详细介绍。
1.MVC设计模式:Struts采用了MVC设计模式,将应用程序的不同组成部分进行分离。
- Model层负责处理数据和业务逻辑。
在Struts中,开发者可以使用JavaBean、EJB、Hibernate等技术作为Model层的实现。
- View层负责展示数据和用户界面。
Struts提供了JSP(JavaServer Pages)作为主要的View技术,也可以使用Velocity、Freemarker等模板引擎。
- Controller层负责接收用户请求、处理业务逻辑以及将结果返回给View层。
Struts的Controller层使用ActionServlet来处理请求,它根据配置文件中的映射规则将请求转发给合适的Action类进行处理。
2.核心组件:Struts由以下几个核心组件组成:- ActionServlet:负责接收和处理来自客户端的请求,并根据配置文件中的映射规则将请求转发给合适的Action类进行处理。
- Action类:实现了业务逻辑的处理,接收请求和返回结果。
开发者需要继承Action类,并覆写其中的execute(方法来实现自定义的业务逻辑。
- ActionForm:用于封装请求参数并传递给Action类进行处理。
ActionForm可以与表单元素进行绑定,从而方便地获取和验证用户输入。
- ActionMapping:配置文件中的一项规则,用于将请求URL映射到具体的Action类和方法。
- ActionForward:配置文件中的一项规则,用于指定请求处理完成后需要跳转到的页面。
Struts教程
Struts教程本教程将介绍Struts的基本概念和核心组件,以及如何使用Struts开发Web应用程序。
一、Struts概述1. 模型(Model):模型表示应用程序的数据和业务逻辑。
在Struts中,模型通常由Java类组成,用于处理数据操作和业务逻辑的实现。
2. 视图(View):视图是用户界面的呈现,通常是JSP(JavaServer Pages)文件。
它负责将数据呈现给用户,并处理用户输入。
3. 控制器(Controller):控制器负责处理用户请求,并将其分派给适当的模型和视图。
在Struts中,控制器由Action类实现,它根据请求的URL路径和参数执行相应的业务逻辑。
二、Struts的基本原理1.客户端发送HTTP请求到服务器。
2. 服务器的Servlet容器接收到请求,并将其分派给Struts的ActionServlet。
3. ActionServlet根据请求的URL路径找到相应的Action类。
4. Action类执行业务逻辑,并将业务结果存储在模型中。
5. Action类调用适当的视图呈现模型数据。
6.视图生成HTML页面并将其返回给客户端。
三、Struts的核心组件1. Action:Action是一个Java类,用于处理用户请求和执行业务逻辑。
它包含了不同的方法,如初始化、数据校验和处理逻辑等。
2. ActionForm:ActionForm是一个JavaBean,用于封装和验证用户输入的数据。
它通常与JSP页面的表单相对应,并且可以通过XML配置文件进行验证。
3. ActionMapping:ActionMapping用于将URL路径和参数映射到正确的Action类。
通过配置XML文件,开发人员可以指定不同URL路径的映射关系。
4. ActionServlet:ActionServlet是整个框架的核心控制器,负责接收客户端请求并将其分派给正确的Action类。
5. Struts配置文件:Struts配置文件是一个XML文件,用于配置整个应用程序的所有映射关系和其他设置。
Struts应用程序中文显示方案及其国际化技术
次划分 , 也提供 了一 系列有 效 的技 术来 简化 We 应用 的开 发 。文 中针对 Srt应用 程序开 发 中 出现 的中文 显 示 问题 同时 b t s u
进行 了探讨 , 出了相 应的解 决方案 , 提 并对 Srt应 用 程序 的国际 化 问题做 出了技 术研究 。 t s u
I e na i n lz to c o o y ntr to a ia i n Te hn lg
M A n, UANG e p i Li H W n— e
(  ̄ot f nomao c ne& T cn l y Suh sJat gUnvri , h nd 10 1C ia S ho o fr tnSi c I i e ehoo ,otwet i o ie t C eg u6 0 3 , hn) g on sy
Srt 用 程序 中文 显 示 方 案及 其 国 际化 技 术 t s应 u
马 林 , 文培 黄
( 南交通 大学 信 息科 学 与技 术 学 院 , 川 成 都 60 3 ) 西 四 10 1
摘 要 :t t是近 年来 构建基 于 Jv 的 We 应 用程序 的主 流框架 。它所 实现 的 MV Sr s u aa b C模式 , We 应 用带 来 了良好 的层 给 b
a piain,fee ei frs le t. d itra in l ai t n lg fS r t p I a p l to o r asre o eov n An nen t ai to  ̄h oo yo t s a pi t c d s s o z n u c
Ke rs: tus Chn s ipa ; VC;ne a in l to ywo d S r t; ieeds ly M itr t ai in n o a z
struts框架详解
Struts框架详解关键字: java1、Struts应用框架介绍(1)框架框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用。
框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中的应用程序。
Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。
这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。
于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。
这也就是我们所说的Framework。
Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。
(2)为什么会出现应用框架您只要细心地研究真实的应用程序,就会发现程序大致上由两类性质不同的组件组成,一类与程序要处理的具体事务密切相关,我们不妨把它们叫做业务组件;另一类是应用服务。
比如说:一个税务征管系统和一个图书管理系统会在处理它们的业务方面存在很大的差异,这些直接处理业务的组件由于业务性质的不同不大可能在不同的系统中重用,而另一些组件如决定程序流向的控制、输入的校验、错误处理及标签库等这些只与程序相关的组件在不同的系统中可以很好地得到重用。
人们自然会想要是把这些在不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架,再做一个新的东西时就不必白手起家,而是可以在这个基础上开始搭建。
实际上,有些大型软件企业选择自己搭建这样的框架。
(3)为什么要用框架?因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。
在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。
而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。
Struts中文帮助文档详解
3 S TRUTS 详解 (1)3.1.1 传统的Model 1和Model 2.......2 3.1.2 MVC 及其优势.. (3)3.2 S TRUTS 概述 (4)3.2.1 Struts 的起源.............................4 3.2.2 Struts 的体系结构 (4)3.3 S TRUTS 的下载和安装..............................5 3.4 S TRUTS 入门. (6)3.4.1 基本的MVC 示例......................6 3.4.2 Struts 的基本示例...................13 3.4.3 Struts 的流程 (16)3.5 S TRUTS 的配置 (17)3.5.1 配置ActionServlet ...................17 3.5.2 配置ActionForm .....................19 3.5.3 配置Action ..............................20 3.5.4 配置Forward .. (21)3.6 S TRUTS 程序的国际化 (22)3.6.1 Java 程序的国际化.................23 3.6.2 Struts 的国际化.. (26)3.7 使用动态A CTION F ORM (30)3.7.1 配置动态ActionForm .............30 3.7.2 使用动态ActionForm . (31)3.8 S TRUTS 的标签库 (32)3.8.1 使用Struts 标签的基本配置....32 3.8.2 使用html 标签库......................33 3.8.3 使用bean 标签库.....................35 3.8.4 使用logic 标签库..................42 3.9 S TRUTS 的数据校验 (53)3.9.1 ActionForm 的代码校验.........54 3.9.2 Action 的代码校验...................57 3.9.3 结合commons-validator.jar 的校验 (58)3.10 S TRUTS 的异常框架...............................66 3.11 几种常用的A CTION (69)3.11.1 DispatchAction 及其子类......70 3.11.2 使用ForwardAction ..............74 3.11.3 使用IncludeAction ................74 3.11.4 使用SwitchAction (75)3.12 S TRUTS 的常见扩展方法 (76)3.12.1 实现PlugIn 接口....................76 3.12.2 继承RequestProcessor ..........77 3.12.3 继承ActionServlet .. (79)本章小结 (80)3 Struts 详解从实际应用开发的角度而言,Struts 应该是MVC 框架的第一选择。
Struts入门(Struts 框架响应客户请求的流程 国际化 异常)
Struts入门(Struts 框架响应客户请求的流程+国际化+异常)Struts入门(Struts 框架响应客户请求的流程+国际化+异常)Struts实际上是在JSPModel2上实现的一个MVC的框架。
模型:如JavaBean EJB控制器:ActionServlet Action视图:JSP Struts客户化标签前端控制器:ActionServlet控制器:Action模型:ActionFormBean控制器与模型之间的映射:ActionMapping转发:ActionForward错误与信息处理:ActionErrorActionForm Bean它也是一种JavaBean,除了一些JavaBean的常规方法,另外它还包含一些特殊的方法用于验证其中数据的完整性。
Struts利用ActionFormBean来进行View组件与Controller 组件之间表单数据的传递。
Struts框架把View组件接受的用户输入的表单数据保存在ActionForm bean之中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改。
Jsp文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。
对于采用Struts的Web应用,在Web应用启动时会加载并初始化控制器ActionServlet。
ActionServlet从struts-config.xml配置文件中读取配置信息,再把它们存放到ActionMappings对象中。
ActionServlet在接收到用户请求时会检查对应的ActionMapping的实例是否存在,如果不存在则会创建一个ActionMapping的实例,其中包含了把请求转发至那个Action的信息。
ActionServlet会根据配置文件检查Action对应的ActionForm的实例,如果ActionForm的实例不存在,则会创建一个ActionForm的对象,并将客户提交的表单数据保存到ActionForm中。
尚学堂Struts2_02
<param name=“excludeMethods”>m1,m2</param> <param name="includeMethods">m2</param>
</interceptor-ref> </action> 如果不指定excludeMethods和includeMethods,则所有方法都会被截拦器 截拦. 如果方法在excludeMethods和includeMethods都配置了,则 includeMethods取胜. 如果需要过滤多个方法,方法名之间用逗号隔开.
版权所有:尚学堂科技
尚学堂
手把手教程
Struts+Hibernate+Spring
HttpServletRequest
HttpServletResponse
核心控制器
Intercepter1
Intercepter2
Intercepter3
Action
Result
版权所有:尚学堂科技
尚学堂
手把手教程
版权所有:尚学堂科技
尚学堂Βιβλιοθήκη 手把手教程Struts+Hibernate+Spring
Struts2拦截器——工作原理
拦截器的执行过程是一个递归的过程,越是位于前面的拦截器越被先执行 ,但也是越晚退出。因此,拦截器的调用处理形成了“先进后出”的堆栈 的模式,因此也叫拦截器栈。
版权所有:尚学堂科技
尚学堂
Struts+Hibernate+Spring
Struts2拦截器——作用及意义 早期MVC框架将一些通用操作写死在核心控制器中,致使框 架灵活性不足、可扩展性降低 Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选 择和组合,增强了灵活性,有利于系统的解耦 截拦器是Struts2中最重要的概念之一,是Struts2灵魂。 Struts2中有80%的功能都通过截拦器实现 提高更高层次的解耦,无须侵入框架本身 便可以添加新的功 能.
Struts架构下国际化的一种解决方案
20 0 8年 4月
保 定 学 院 学 报
J OURNAL OF BAODI NG NI U VERSTY I
Apr2 08 .0
Vo _ . l 21 No2 0 8 0 —0 30 17 —4 4 2 0 )20 7 —2
以下 方 法 .
本研究使用T m a o ct 作We H务器 ,c pe aa b ̄ E l s作Jv开发工具. i
实 现过 程 如 下 : 1 下载 s u 并 进 行 配置 , 里 不 再赘 述 . ) tt rs 这
2 建立 工程 : eap 目录下 建立 1 n ra oa文件 夹 , ) 在w b ps 个it nt nl e i 再在 i ent nl n rao a目录下建立 WE —N 文件夹 和 t i B IF WE —N / ass B I F l e文件夹 , cs 这些都是 1 sI程必需 的. 个Jp
将 所 有 * s 网页 中开 头处 加 入 .p j
< %@ p g a g a e ’ v ”cne ty e ” x hml h re= t 8 ae ln u g =' a o tnT p = t t t ;c ast uf ”%> j a e/ - 再 设 置 < t :t o ae = ”re > hml mllcl h t ”. u
一
中文版 . 随着业务量的增 加 , 司要为许多英文客户提供服务 , 以还要请编程人员再整体做一套英文版 . 公 所 而且 1后 3
每增加一种语言 , 都要完 整地做一套新版本。 这对于公 司和编程人员都是很大 的负担. 国际化( t tnlai , i e i a zt n 因 n ma 0 i 0
3 加载s us : ) t t 在WE —N 目录下建立 1 i 目录 , sus ea p \ B I Fl 目录下将 所有.r r 类 B IF 个l 子 b 在 t t xm lWE —N kb r — e i j 文件拷 a
基于Struts的Web应用国际化通用架构
在全世界 范围 内发 布产 品信 息 、 引客户 的最为 有效 吸
的 手 段 。 如 何 开 发 支 持 多 国 语 言 、 际 化 的 应 用 成 为 国 W e 用 开 发 的必 然 趋 势 与 重 要 课 题 。 b应
ቤተ መጻሕፍቲ ባይዱ系统 编 码 方 式和 数据 流 问的编 码 转 换是 国际化 We b应 用 首 先 要 解 决 的 问 题 。不 同 于 本 地 化 系 统 , 国 际化系统不 能采 用语言受 限字符 编码方 式 , 其采用 的 编码 必须满 足 国际化的要求 , 能够支 持各种语 言 。 目 前 .在 国际 化 系统 中 ,通 常 采 用 U ioe字符 集 的 nc d
二
We b应用 的 国际化需要解决 的 问题 主要包 括 :第一 、 五 We b系统 字 符编码 方式 的选 择 ; 第二 、 客户端 与应 用 三 之 间如何 正确地进 行数据 的输 入, 出交互 , 输 即输入 、
国际化 应 用程 序 的核心 能力 是 应用能 根据 客 户 的语 言环境 提 供相 应 的语言 相关 界 面 , 因此 , 应用 中
一
际化要求 的字 符集, 它将 世界 上 的所 有字 符 映射成一 个 唯一 的代码 点( d on) c epit o 。在将 U ioe表示 的字 ncd 符 进行存储时 , 需要采用一定 的编码 方式 , 中 U F 8 其 T - 是 Uncd io e字 符集 的一种 可变 长 的编码 方式 , 多 6 最
个 字 节 . 于 1 7的 字 符 用 一 个 字 节 表 示 , A CI 小 2 与 SI
个 国际化 We b应用 ,针对 多种 语言 版本 只有 一个
系统实 现 , 系统可 以根据 客户 端的 系统语 言环境 进行
JAVA软件工程师技能目标
JAVA软件⼯程师技能⽬标第⼀部分 Java应⽤程序开发1. Java语⾔基础内容: Java应⽤程序运⾏原理、Java的开发与运⾏环境安装配置、Java基本语法、Java编码惯例、递归处理、常⽤算法⽬标:熟练掌握Java基础语法,深⼊理解Java平台核⼼运⾏机制2. ⾯向对象程序设计内容:类与对象、包、继承、多态、访问控制、⽅法重写与重载、抽象类、接⼝、内部类、异常处理、断⾔、枚举类型⽬标:精通⾯向对象的程序设计3. JavaSE应⽤开发内容:注解、jar⼯具、Java集合框架、控制台应⽤程序开发、⽂件操作、⾼级I/O流式编程、图形界⾯程序设计、Eclipse的使⽤⽬标:精通JavaSE应⽤开发技术4. JavaSE⾼级开发内容:反射、对象序列化、泛型、多线程编程、Socket⽹络编程、应⽤程序国际化⽬标:熟练运⽤Java SE⾼级开发技术5. Java桌⾯软件开发内容:项⽬实战:综合运⽤Java SE技术,编写类似QQ的即时通讯软件。
掌握Java桌⾯软件的分析、设计与实现⽬标:熟练Java应⽤程序开发第⼆部分数据库应⽤1. Oracle数据库内容: Oracle数据库安装/配置/管理、运⽤OEM/SQL Plus、标准SQL语句、多表连接与⼦查询、事务控制、Oracle函数、数据字典、约束、视图、序列、索引、PL/SQL开发(函数、存储过程、触发器)⽬标:熟练应⽤Oracle数据库2. 数据库设计内容:数据建模、ER设计⽅法、概念模型、E-R模型与E-R图、数据库范式、物理模型、运⽤Power Designer建模、企业项⽬分析与设计实战。
⽬标:掌握数据库设计能⼒3. 数据库管理内容:常⽤管理⼯具、⽤户及权限管理、空间管理、数据导出/导⼊。
企业真实开发中⽤户(管理员/软件开发⼈员/最终⽤户)权限管理实例及分析。
PL/SQL Developer⼯具⽬标:掌握基本的数据库管理能⼒4 . MS SQL Server内容: MS SQL Server数据库安装/配置/管理及开发⽬标:掌握MS SQL Server数据库应⽤5. IBM DB2与MySQL内容: IBM DB2与MySQL数据库的安装/配置/管理及开发⽬标:掌握IBM DB2与MySQL数据库应⽤6. JDBC内容: JDBC⼯作原理、JDBC编程、⾼级JDBC编程、OCI⽅式访问Oracle数据库、调⽤存储过程、事务处理、批处理、操作BLOB/BLOB数据类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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