- 浏览: 16489786 次
- 性别:
- 来自: 济南
最新评论
-
wu1236:
ef0793cd94337324b6fefc4c9474af5 ...
Android ApiDemos示例解析(87):Media->MediaPlayer -
77219634:
0127bf2236bee4dd1f632ce430f1af1 ...
本博客文章都为转载,没有任何版权! -
77219634:
0127bf2236bee4dd1f632ce430f1af1 ...
VPLEX - EMC的RAC -
77219634:
0127bf2236bee4dd1f632ce430f1af1 ...
qTip2 Show -
77219634:
0127bf2236bee4dd1f632ce430f1af1 ...
SecureCRT中文乱码、复制粘贴乱码解决办法(修改版)
Web 表单验证是开发 Web 应用程序的一个不可缺少的部分。Apache Software Foundation 开发的 Jakarta 通用验证器(Jakarta Commons Validator)提供了一个分离验证逻辑与应用程序业务逻辑的框架。您可以协同或不协同使用 Struts 与 Commons Validator。Struts 发行版附带的通用验证器(Commons Validator)通常称为 Struts 验证器(Struts Validator)。
Writing a Simple Struts Application using WebSphere Studio V5一文介绍了未使用 Struts 验证器的 Struts 验证。 ActionForm
中的 validate()
方法是通过程序化的验证逻辑实现的。然而,这种方法将验证逻辑与特定的动作表单紧紧地耦合在一起。为了重用其他表单中的验证逻辑,您可能需要进行很多复制和粘贴。
Struts 验证器通过应用基于组件的设计理念解决了这个问题。Struts 验证器使得 ActionForms
能够共享一组验证规则,这组验证规则是 XML 文件的形式保存的。另外,Struts 验证器同时支持客户端和服务器端验证。两种方法共享同一组验证规则。
本文向您展示了如何使用 Struts 验证器。我们假定您具有 Struts 框架方面的基本知识。要了解基本的Struts 框架,请参看上面提到的文章。
启动 IBM® WebSphere® Studio Application Developer Version 5.0(带或不带 V5.01包):
- 移动鼠标到 Windows® Start 菜单。
- 选择 Programs => IBM WebSphere Studio => Application Developer 5.0。
|
|
本节将指导您安装一个现有的 Struts 应用程序。
导入 Struts 应用程序 EAR:
- 下载
StrutsValidator.zip
并解压DefaultEAR.ear
。 - 在工作区中,选择 File => Import => EAR File。单击 Next。
- 找到下载的 EAR。
- 输入
DefaultEAR
作为项目名,然后单击 Finish。
在 WebSphere Test Environment 中运行 Struts 应用程序以确保安装正确:
- 切换到 Web 透视图。
- 展开 SimpleValidatorWeb => Web Content。右键单击 submitpage.jsp并选择 Run on Server。
- 确保 WebSphere Test Environment V5 Server被选中。单击 OK。
- 在装载完
submitpage.jsp
之后,随便输入点什么,然后单击 Submit看看结果。 - 在测试完成之后,停止服务器。在 Web 透视图的 Server 视图中,右键单击 WebSphere Test Environment V5 Server并选择 Stop。
验证规则保存在一个名为 validator-rules.xml
的 XML 文件中。Struts提供了包含 14 个基本验证器的 validator-rules.xml
文件。最常用的一些文件列举如下:
验证器名称 | 功能 |
required | 验证一个必须填写的字段是否填写 |
mask | 通过一个常规的 Jakarta RegExp 表达式检查字段值。要了解更多关于 RegExp 的信息,请参见 Jakarta RegExp 页。例如: ^[a-zA-Z]*$ 表示该值必须只包含字母 ^\d{5}\d*$ 表示该值必须是五位数字 |
range | 检查该值是否在指定范围内。 |
date | 检查该值是否为一个有效值。它还能确保以期望的格式提供该数据,例如 MM/DD/YYYY 或 DD-MM-YYYY。 |
验证该值是以有效的电子邮件地址的格式提供。 | |
creditCard | 确认该值是一个有效的信用卡号码。 |
将 validator-rules.xml
导入 /Web Content/WEB-INF
文件夹。
- 下载
StrutsValidator.zip
并解压validator-rules.xml
。 - 在 Web Perspective 中,右键单击 /SimpleValidatorWeb/Web Content/WEB-INF并选择 Import => File System。
- 找到并选择下载的
validator-rules.xml
文件。单击 Finish。 - 在文件夹
/SimpleValidatorWeb/Web Content/WEB-INF
中,双击validator-rules.xml
以在 XML 编辑器中打开它。 - 切换到 Source 页面。
<form-validation> |
|
|
</validator> |
在大部分情况下,内置的验证器对于一个 Web 应用程序来说就足够了。为了在一个字段中使用验证器,需要在一个 XML 文件中指定验证器和字段之间的映射关系。在我们的示例中,它被命名为 validation.xml
。
- 在 Web Perspective 中,右键单击 /SimpleValidatorWeb/Web Content/WEB-INF并选择 New => Other => XML。单击 Next两次。
- 输入
validation.xml
作为文件名。单击 Finish。 - 用以下代码修改 XML 文件并保存。
<form-validation> |
validation.xml
文件包含表单和每个字段依赖的验证器之间的映射, submitForm
中的字段 name
依赖于 required
验证器。 arg0
是当错误消息产生时传递给验证器的参数。参数的键在资源绑定文件中有一个映射。由于该字段是比需的,所以将会产生一个错误消息(如果这个字段为空的话)。
将错误消息保存在 ApplicationResources.properties
中,它是由WebSphere Studio 创建并由 Struts 框架使用的缺省资源绑定。
用编辑器打开特性文件:
- 在 Web Perspective 中,展开 SimpleValidatorWeb => Java™ source => com.ibm.simplevalidatorweb.resources,然后双击 ApplicationResources.properties。
- 用以下黑体代码修改该文件并保存。
# Optional header and footer for <errors/> tag. |
在这个示例中,将会显示错误消息 {0} is required
,其中 {0}
由通过 <arg0 key="submitForm.name" />
从 validation.xml
传递而来的参数替代。在这个示例中, submitForm.name
映射到(资源束文件resource bundle file)中的 text filed label
,因此,最后的错误消息将会是 text field label is required
。
如果启用了服务器端验证,则错误消息将会在浏览器中作为 HTML 返回。对于客户端验证,错误消息将会作为 JavaScript 弹出窗口返回。
要启用验证器插件,请遵循下列步骤:
- 在编辑器中打开 struts-config.xml。展开 /SimpleValidatorWeb/Web Content/WEB-INF并双击 struts-config.xml。
- 切换到 Source 页。
- 将以下代码插到
</struts-config>
结束标签前并保存修改。以下代码可以启用验证器组件并且指示该插件使用validator-rules.xml
和validation.xml
来验证动作表单:<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>
- 切换到
struts-config.xml
编辑器的 Actions页,选择 /submit并在 Input字段中输入/submitpage.jsp
。保存修改。
下面的步骤 3 和 4 将指导您完成各个必需的过程以启用服务器端验证和客户端验证。
为了使用服务器端验证, Action Form
实现类应该扩展 ValidatorForm
而不是 ActionForm
。当提交表单时,会执行 ValidatorForm
中的 validate()
方法,它将根据 validation-rules.xml
和 validation.xml
文件进行验证。
要在编辑器中打开 SubmitForm
类,请遵循下列步骤。
- 在 Web Perspective 中,双击
/SimpleValidatorWeb/Java Source/com.ibm.simplevalidatorweb.forms
内的 SubmitForm.java。 - 如下所示修改
SubmitForm.java
并保存。
package com.ibm.simplevalidatorweb.forms; |
您需要在 JSP 文件中添加 <html:errors/>
行以使错误显示出来:
- 在编辑器中打开
submitpage.jsp
并切换到 Source 页。 - 在文件的开头(即
<html:form>
前)输入行<html:errors/>
。保存该修改。
要在 WebSphere Test Environment 中运行 submitpage.jsp
,请遵循下列步骤:
- 右键单击 submitpage.jsp并选择 Run on Server。
- 确保 WebSphere Test Environment V5 Server 被选中。单击 OK。
当在浏览器中装载 submitpage.jsp
时,单击 Submit,然后您将会接收到一个验证错误,告知 text field label
是必需的。
图 1. 运行 http://localhost:9080/SimpleValidatorWeb/submitpage.jsp
为了使用客户端验证, Action Form
应该扩展 ValidatorActionForm
而不是 ActionForm
。如前所述,对于服务器端验证, Action Form
扩展的是 ValidatorForm
类。
在编辑器中打开 SubmitForm
类。
- 在 Web 透视图中,双击
/SimpleValidatorWeb/Java Source/com.ibm.simplevalidatorweb.forms
内的 SubmitForm.java。 - 如下所示修改
SubmitForm.java
并保存。validate()
方法注释掉了。要注释一段代码,可以选中该代码块,然后选择 Source => Comment。
package com.ibm.simplevalidatorweb.forms; |
修改 submitpage.jsp
以启用服务器端验证:
- 在编辑器中打开
submitpage.jsp
。 - 如下所示修改该文件并保存。服务器端验证时必需的行
<html:errors />
在客户端验证时不再需要。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
行 <html:javascript formName="submitForm"/>
中的 formName submitForm
必须与 validation.xml
和 struts-config.xml
文件中的表单名称相匹配。
由于我们对应用程序做了修改,所以我们必须重新启动该 EAR 项目:
- 在 Server 视图中,右键单击 WebSphere V5 Test Environment然后选择 Restart Project => DefaultEAR。
- 项目重新启动后,右键单击 submitpage.jsp并选择 Run on Server。
在 submitpage.jsp
装载到浏览器中后,单击 Submit,然后您将会看到一个弹出的 JavaScript 消息,告知字段 text field label
是必需的:
图 2. 客户端验证中的 JavaScript 弹出窗口
有时,业务要求一个字段上有多个验证器。Struts 验证器使得一个字段可以由多个验证器进行验证。
例如,要添加一个电子邮件验证器,可以如下编辑 validation.xml
并保存它:
<form-validation> |
重新启动 DefaultEAR 项目并再次运行 submitpage.jsp
。输入一个无效的电子邮件地址并提交,您将会接收到一个错误消息,告知它不是一个有效的电子邮件地址。另外, required
验证器仍将继续工作。
图 3. e-mail 验证器发出的错误消息
在 某些情况下,您可能想提供一个更具体的错误消息而不是在资源束文件中定义的缺省错误消息。例如,如果您有一个 Mask 验证器,缺省错误消息是,该值是无效的,而没有关于无效性的详细情况。您可以用另一个消息覆盖 Mask 验证器的错误消息,方式是将如下一行代码添加到 validator.xml
中: <msg name="mask" key="some.other.error.msg"/>
。
将如下一行代码添加到文件 ApplicationResources.properties
中并保存:
some.other.error.msg = {0} is not a 5-digit number |
如下编辑 validation.xml
并保存:
<form-validation> |
重新启动 DefaultEAR
项目并再次运行 submitpage.jsp
。一个更具体的错误消息将会显示出来。
图 4. 一个自定义的错误消息
如前所述,随 Struts 一起发布大约有 14 种基本的 Struts 验证器。每个验证器都可能要求不同的参数,而您必须提供正确的参数以使用它们。在本节中,您将在一个更为复杂的 Struts 应用程序中看到更多正在使用的验证器。
将 StrutsValidation.war
文件导入 DefaultEAR
:
- 下载
StrutsValidator.zip
并解压StrutsValidation.war
。 - 在工作区中,选择 File => Import => WAR file。单击 Next。
- 找到下载的 WAR 文件。
- 确保 NewWeb 项目被选中。输入
StrutsValidationWeb
作为该 Web 项目名。 - 确保 Existing企业应用程序被选中。找到
DefaultEAR
。 - 单击 Finish。
- 如果出现一个对话框,通知您该 Web 项目将添加到服务器中,则单击 OK。
重新启动服务器并在 StrutsValidationWeb
中运行 submitpage.jsp
。
- 在 Web 透视图--Server 视图中,右键单击 WebSphere V5 Test Environment并选择 Restart。
- 展开 StrutsValidationWeb => Web Content,右键单击 submitpage.jsp并选择 Run on Server。
- 在该 JSP 页面装载完毕之后,单击 Submit,您将会接收到这些错误消息:
图 5. 正在使用的 Struts 验证器
让我们来分析一下 validation.xml
。在编辑器中打开 validation.xml
。它在 /StrutsValidationWeb/Web Content/WEB-INF
中。
<form-validation> |
下面是 Last Name 字段的代码。它依赖于 3 个验证器: required、mask
和 maxlength
。 required
验证器,如前所述,确保填写了该字段。 mask
验证器在这个示例中检查是否所有的值都是字母。 mask
验证器的 RegExp 表达式检查字母是否是 ^[a-zA-Z]*$
。 maxlength
验证器确保这个示例中的字段的长度小于或等于 10。
示例 1. Last Name 字段的验证器映射
<field property="customer.lastName" |
下面的示例是使用 mask
验证器的一个小小的变种。这段代码是为 Phone 字段而写的。 mask
验证器包含参数 ${phone}
,它是在 validation.xml
文件的开头定义的一个常量(请参见示例3)。
示例 2. Phone 字段的验证器映射
<field property="customer.phone" |
示例 3.phone 常量
<constant> |
下面的代码是为 Date 字段而写的。您可以在 date
验证器上使用它本身,如示例 4所示--它根据地区验证日期的格式。您也可以指定一个日期模式,如示例 5 所示:
示例 4.Date 验证器
<field property="creditcard.date" |
示例 5. 带 datePatternStrict 的 Date 验证器
<field property="creditcard.date" |
这个示例也适用于 email
和 creditCard
验证器。由于这两个验证器都很简单,所以您可以自己去分析它们。
|
|
Struts 验证器框架使您能够使用服务器端和客户端验证。您可以在大多数 Web应用程序中不加修改地使用内置的规则集。出于性能方面的考虑,客户端验证通常是更好的选择。
Struts 框架通过应用模型-视图-控制器(Model-View-Controller)范式解耦 Web 组件。Struts Tiles框架将页面布局与表示层分离开来,而 Struts 验证器框架将验证逻辑和业务逻辑分离开来。使用 Struts 与 Struts 的相关框架可以使您的Web 应用程序具有更好的可维护性和可重用性。
相关推荐
在使用WebSphere Application Server(WAS)部署基于Struts2.0的应用时,可能会遇到一些问题导致Struts2无法正常工作。这个问题通常表现为在尝试访问Struts2控制的页面时,返回HTTP 500错误,并且日志中显示"Filter ...
四、WebSphere Studio与WebSphere Application Server的协同工作 WebSphere Studio不仅作为一个开发工具,还能无缝集成WebSphere Application Server,允许开发者在开发环境中直接预览和测试应用。通过WebSphere ...
### WebSphere Studio Application Developer与Web服务自学习指南 #### 标题解读: 标题"Self-Study Guide: WebSphere Studio Application Developer and Web Services"表明这是一份专注于IBM WebSphere Studio ...
1. **WebSphere Studio架构**:理解其组件,如Application Developer、Application Server、Visual Age for Java等,以及它们如何协同工作来支持应用程序的生命周期管理。 2. **J2EE开发**:掌握Java EE的核心概念...
WebSphere Studio Application Developer (WSAD) 是IBM推出的一款强大的集成开发环境,主要用于构建、测试和部署基于Java EE(Java Platform, Enterprise Edition)的应用程序。在Version 5的时代,它主要聚焦于EJB...
在WebSphere Studio V5.1.2中使用代码片段进行EJB编程,是Java企业级应用开发中的一个重要环节。WebSphere Studio是IBM提供的一款集成开发环境(IDE),它支持多种Java应用程序的开发,包括EJB(Enterprise ...
在使用WebSphere 7.0部署Struts2应用程序时,可能会遇到一个问题,即"找不到用于处理JSP的扩展处理器"。这个问题通常与Web容器对JSP的支持和扩展处理器的初始化失败有关。以下是对该问题的详细分析和解决方法: 1. ...
二、WebSphere Studio:构建企业级应用的强大平台 1. **Eclipse平台**:WebSphere Studio基于Eclipse构建,这一开源框架为开发者提供了高度可定制和扩展的集成开发环境(IDE)。Eclipse的插件架构允许开发者根据...
- **托管bean管理**:WebSphere Studio提供了对托管bean的支持,这些bean用于处理业务逻辑并与JSF页面交互。 通过深入理解IBM Redbook中关于WebSphere Studio 5.1.2对于JSF和SDO的支持,开发者可以充分利用这些工具...
开发者的角色加入项目结束语 引言本系列的第1部分针对那些想要把自己的产品与IBM:registered:WebSphere:registered:StudioV5系列产品(以下称为WebSphereStudio)集成的小组资源库供应商,讲述了EclipseV2.x中一些...
2. **使用WebSphere Studio发布服务**:利用WebSphere Studio的功能将Web服务发布到IBMUDDI业务测试注册中心或其Speed-start社区集合。 3. **验证发布**:确保服务成功发布,并且可以通过UDDI注册中心被其他服务...
2. **安装与配置**:包括如何安装 WebSphere Application Server V5 以及基本的配置操作。 3. **管理控制台使用**:教授如何通过管理控制台进行服务器管理、监控和故障排除。 4. **应用程序部署**:讲解如何部署应用...
【标题】:“IBM WebSphere 开发者技术期刊:通过 WebSphere 实现安全认证与授权” 在IBM WebSphere应用服务器中,安全是任何企业级应用程序的关键组成部分。本篇开发者技术期刊聚焦于如何通过WebSphere实现安全...
/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphere/AppServer/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/opt/IBM/WebSphere/AppServer/web/help:/opt/IBM...
2. **WebSphere ESB**:作为SOA的关键组成部分,它提供了一种途径,使不同系统间的通信变得更加简单和灵活。ESB可以处理数据转换、路由、事务管理和错误处理,确保服务之间的交互有效且可靠。 3. **WebSphere ...
### IBM—XML 文件:使用 WebSphere Studio 版本 5 开发 XML/XSL 应用程序 #### 一、引言 《IBM—XML 文件:使用 WebSphere Studio 版本 5 开发 XML/XSL 应用程序》是 IBM 公司在 2002 年发布的一份技术指南,旨在...