- 浏览: 534956 次
- 性别:
- 来自: 湖南娄底
文章分类
- 全部博客 (252)
- C#资料 (0)
- java资料 (22)
- 数据库资料 (0)
- Java :开发中遇到的问题 (4)
- 书写属于我的人生 (6)
- spring (6)
- hibernate (16)
- struts (17)
- SSH (5)
- Linux操作系统 (1)
- Ext (5)
- Jquery (9)
- Tomcat部署出错 (2)
- xml (5)
- JSON (5)
- javascript 专题 (5)
- 开发环境配置 (2)
- web 开发 (27)
- Eclipse (7)
- Integration (1)
- 解决方案搜罗 (7)
- 网站收藏 (8)
- 测试框架 (1)
- iframe 专题 (6)
- JSTL (2)
- 各种插件收集 (2)
- 权限设计模型探讨 (1)
- DWR (1)
- log4j (3)
- java (11)
- java 格式化 (1)
- 软件工程 (2)
- 乱码专题 (1)
- UML (4)
- java 设计模式 篇 (1)
- 用法收集 (0)
- sourceforge apache solutions (2)
- Struts2 + JPA + Spring 开发 (1)
- 自定义工具箱 (0)
- IDE (4)
- opencms (1)
- jeecms (1)
- ant (0)
- maven (2)
- 数据库连接池 (0)
- spring MVC (0)
- android (1)
- web-server (1)
- iphone-开发环境 (1)
- iphone-软件开发 (6)
- iPhone-软件设计 (1)
- iphone-应用 (3)
- iPhone-设置 (2)
- iphone-软件开发-设计模式篇 (0)
- iphone-软件开发-OC基础 (9)
- iphone-软件开发- UI篇 (9)
- iphone-软件开发-工具类篇 (1)
- iphone-软件开发-第三方篇 (0)
- iphone-软件开发-特效篇 (2)
- iphone-软件开发-动画篇 (1)
- oracle (1)
- Java-Security (0)
- Three20 UI (1)
- IOS-HOW-TO-专题 (1)
- Mark-Develope Issues (1)
- iphone-软件开发- 资料参考篇 (1)
- C 语言-基本语法 (0)
- Java Servlet (2)
- Eclipse optimization (1)
- IOS Basic (0)
- ecl (0)
- FRONT-HTML (0)
- FRONT-JS (0)
- PHP (0)
最新评论
-
qq_29862421:
[[color=brown]color=yellow][url ...
java 上传图片同时获得图片的宽和高 -
hhb19900618:
NSString <==> NSNumber 之前 ...
OC 常用数据类型之间的转换 -
baohuan_love:
果然能解决问题,感谢分享
Tomcat Error Page配置 与 Error Page在IE下不能转发的问题 -
唐丽梅6313:
很细致。。
键盘样式风格有关设置-iOS开发 -
olived:
哥哥,为什么我的没有破解成功,总是提示许可文件丢失!!QQ:3 ...
[软件测试解决方案] soapUI 4.0.1破解方法
MyEclipse
本文以一登录页面(Login.jsp)为例,讲叙我在JBuilder 2005中如果使用Validator框架来对输入的数据进行验证。
在用户进行主页面前需要进行身份验证,此页面的验证规则为用户名和密码均不能为空,且密码的长度必须大于等于6个字符。
为了达到以上所说的目的,在Struts中有两种办法:
1.使用ActionForm
Bean中的Validate()函数实现,将需要验证的逻辑写入该函数,即在提交表单时会对其进行验证,这中方法的缺点在于必须通过程序代码来实现验证逻辑,如果验证逻辑发生改变,则必重新编写和编译程序代码,此外如果程序中多个ActionFrom
Bean共用相同的验证逻辑,则必须重复编程,降低代码的重用性。
2.使用Validator验证框架实现,它能够克服以上所说的局限,此外它的配置灵活,无需编程。
Validator框架采用两个基于XML的配置文件来配置验证规则,这两个文件为validator-rules.xml和validation.xml,在Struts应用中,这两个文件必须存放在WEB-INF目录下。
下面从页面开始讲述如果创建此登录验证页面。
Login.jsp页面的关键代码如下:
<tr>
<td width="70"
class="TableText">用户名:</td>
<td>
<html:text property="userName" style="TextBoxLong">
</html:text>
<html:errors property="userName"
/>
</td>
</tr>
<tr>
<td class="TableText">密 码:</td>
<td>
<html:password property="password"
style="TextBoxLong"> </html:password>
<html:errors
property="password"/>
</td>
</tr>
说明:
1.用户名文本框的属性名称为userName,对应其ActionFrom中的userName,接下来为显示错误的Struts标签,其属性名称与文本框同名,意为只显示文本框的错误信息,如果没有property,则显示所有错误信息,此标签的作用是一但用户名文本框有错误则通过其进行显示。
2.密码框与用户名文本框基本类似,在此不再叙述。
Login页面创建完成后,即需要创建ActionFrom Bean,名称为LoginActionForm
import
javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.validator.*;
public class LoginActionForm extends ValidatorForm {
private String password;
private String userName;
private Integer id;
public String getPassword()
{
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setId(Integer id) {
this.id =
id;
}
public String getUserName() {
return
userName;
}
public Integer getId() {
return
id;
}
public void reset(ActionMapping
actionMapping,
HttpServletRequest
servletRequest) {
password = null;
userName = null;
}
}
说明:
1.此处的LoginActionForm必须继承自ValidatorForm,而不是ActionForm,原因在于ActionForm不能使用Validator框架完成验证。
2.此LoginActionForm中必须包含有Login.jsp页面中<html:text/>和<html:password/>标签propety属性所指定的属性字段名,即userName和password.
3.除以上所说外,该LoginActionForm就是一个JavaBean类。
定义Action--LoginAction
此Action与普通的Action并无任何区别,均是完成相应的后台逻辑功能,此页面则是读取数据库中的数据与输入的相比较,匹配则转向主页面,否则转向错误页面,具体实现在此就不叙述了。
创建validator-rules.xml文件,制定验证规则
<!DOCTYPE form-validation
PUBLIC
"-//Apache Software Foundation//DTD Commons
Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd
">
<form-validation>
<global>
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
</validator>
<validator name="minlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMinLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.minlength">
depends="required"
</validator>
</global>
</form-validation>
说明:
1.每个<validator>元素定义了一个惟一的验证规则,此处一共定义了两个验证规则:名为required的规则和名为minlength的规则。
2.<validator>元素的name属性指定验证规则的逻辑名,此名字必须惟一;classname和method属性分别指定实现验证规则逻辑的类和方法;methodParams属性用来指定验证方法包含的参数,多个参数之间用逗号隔开;msg属性指定来自于Resource
Bundle中的消息key,此程序的Resource
Bundle为ApplicationResources.properties文件,当验证失败时,Validator框架将根据这个消息key到Resource
Bundle中查找匹配的消息文本,默认情况下,Validator框架有一组定义的消息文本,参见下文“定义Resource
Bundle消息文件”,此处的消息也可以自定义,而不使用其默认消息。
3.除上述的属性外,<validator>还有一个depends属性,用于指定在调用当前验证规则之前必须先调用的其他验证规则,例如上面代码中在调用minlength验证前需先调用required验证规则。如果depends包含多个验证,使用逗号分隔,如depends="required,
maxlength",需注意的是如果调用depends规则时验证失败,则不会调用下一个验证规则。
4.下面给出FieldChecks类包含的验证方法,即method后可以写的方法(上面代码中蓝色显示),此外,可以自定义方法。
validateByte、validateCreditCard、validateDate、validateDouble、validateEmail、validateFloat、validateInteger、validateLong、validateMask、validateMinLength、validateMaxLength、validateRange、validateRquired、validateShort。
创建validation.xml文件,此文件可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程的方式来实现验证逻辑。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE
form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons
Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd
">
<form-validation>
<formset
language="zh_CN">
<form
name="LoginActionForm">
<field property="userName"
depends="required">
<arg0 name="required"
key="User.name" resource="true"/> ==> <msg name="required"
key="user.required" resource="true"/>
</field>
<field property="password"
depends="required,minlength">
<arg0 key="password.name"
/>
<arg1 name="minlength"
key="${var:minlength}"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
说明:
1.<form>元素用于为表单配置验证规则,它的name属性为需要验证的ActionForm的名称,它需要与struts-config.xml中的名称一致,如此处为LoginActionForm.
2.<field>元素用于为表单字段配置验证规则,它的property属性名称需要与Login.jsp页面中的用户名文本框和密码框的property属性名一致。
3.<depends>元素为该字段所采用的验证规则有哪些,如果有多个,则使用逗号分隔。
4.参看以上<msg>一行,<msg>元素指定验证规则对应的消息文本,该消息文本将替代在validator-rules.xml文件中为验证规则配置的默认消息文本。意思即是说,如果上面使用的是<msg
name="required" key="user.required" resource="true"/>,而非<arg0
name="required" key="User.name"
resource="true"/>,则如果验证失败,验证规则将使用msg中key指定的消息,而非默认的errors.required消息(validator-rules.xml中定义,参看上文)。
5.<field>字段可以包含四个附加的子元素,<arg0>、<arg1>、<arg2>、<arg3>,用于替换复合消息中的参数,<arg0>指定第一个替换值,<arg1>指定第二个,依此类推。每个arg元素包含三个属性:name,key和resource,用法与<msg>相似。如上代码中<arg0
name="required" key="User.name"
resource="true"/>意为使用从消息文件ApplicationResources.properties中消息key
User.name取出的文本(Username)来替换默许消息文本errors.required中的参数,使之组合成一句有意思的文本,errors.required的原文本为:{0}is
requuired.
向struts-config.xml中添加validate属性,使相应字段开启验证过程,并配置validator-rules.xml和validation.xml,使之起作用。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE
struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration
1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd
">
<struts-config>
<form-beans>
<form-bean name="LoginActionForm"
type="personal.system.Login.struts.actionform.LoginActionForm"
/>
</form-beans>
<action-mappings>
<action input="/JSP/Login.jsp"
name="LoginActionForm" path="/LoginAction" scope="request"
type="personal.system.Login.struts.action.LoginAction"
validate="true">
<forward name="succeed"
path="/JSP/index.jsp" />
<forward name="failed"
path="/JSP/Failed.jsp" />
</action>
</action-mappings>
<message-resources
parameter="ApplicationResources" /> ==>指定消息资料文件(Resource
Bundle)的文件名,此处全名文件名即为ApplicationResources.properties
<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>
定义Resource Bundle消息文件--ApplicationResources.properties
password.name=Password ==>定义参数值,password字段使用:<arg0
key="password.name" />
User.name=Username
==>定义参数值,username字段使用:<arg0 name="required" key="User.name"
resource="true"/>
##以下均为Validator框架的默认消息文本,其中的{0},{1},{2}...代表传入参数的取代位置。
errors.required=<font color="red">{0} is
required.</font>
errors.minlength=<font
color="red">{0} can not be less than {1}
characters.</font>
errors.maxlength=<font
color="red">{0} can not be greater than {1}
characters.</font>
errors.invalid=<font
color="red">{0} is invalid.</font>
errors.byte=<font color="red">{0} must be a
byte.</font>
errors.short=<font color="red">{0} must
be a short.</font>
errors.integer=<font
color="red">{0} must be an integer.</font>
errors.long=<font color="red">{0} must be a
long.</font>
errors.float=<font color="red">{0} must
be a float.</font>
errors.double=<font color="red">{0}
must be a double.</font>
errors.date=<font color="red">{0} is not a
date.</font>
errors.range=<font color="red">{0} is not
in the range {1} through {2}.</font>
errors.creditcard=<font color="red">{0} is an invalid credit card
number.</font>
errors.email=<font color="red">{0} is
an invalid e-mail address.</font>
发表评论
-
Struts1.x 国际化
2012-11-15 13:47 0对于一个面向全球的 Web应用程序,按着不同国家的要求显示相 ... -
struts2 convention配置中常见配置选项及说明
2012-08-20 12:47 2295?xml version="1.0" en ... -
研磨Struts2 之 第十三章 国际化
2012-06-20 18:42 1311视频配套PPT,视频地址【 研磨Struts2视频课程 】 ... -
struts2:零配置 之 21.2 约定大于配置
2012-06-19 14:38 636421.2 约定大于配置 21.2.1 ... -
使用struts2中的codebehind插件
2012-06-17 17:21 1269使用struts2中的codebehind ... -
struts2 WARN OgnlValueStack:49 - Error setting expression
2012-02-23 15:53 0今天我遇到下面这样的异常: WARN OgnlValueSt ... -
struts2日期类型转换【转载】
2012-02-10 15:41 892在Struts2中,一般的内置类型都会在由系统自动进行转 ... -
struts2注解
2011-12-19 22:04 2864一、配置web.xml <filt ... -
Struts2 文件上传 之 文件类型 allowedTypes
2011-12-19 21:59 5604Html代码 '.a' : 'a ... -
struts 2支持注解jar包收藏
2011-12-19 21:50 1229附件:struts2-conversion-plugin-2. ... -
为Struts 2应用程序创建进度条(等待页面)
2011-12-17 21:08 1025Struts 2模拟进度条的原理 对于一些需要较 ... -
struts 2 学习曲线
2011-11-17 12:48 934<说明:以后有待整理 ... -
struts2的struts.properties配置文件详解
2011-11-15 22:45 831【IT168 技术文档】 struts.acti ... -
struts2中几种获得request,session等对象的方法
2011-11-15 22:44 11391、通过ActionContext来获得举例代码如下: ... -
在struts1.2中使用拦截器
2011-08-31 20:41 1057要在struts1.2中使用拦截器,必须使用到以下三个包: ... -
html:cancel按钮的作用,cancel按钮,取消按钮
2011-07-24 16:39 997struts判断标签 html:cancel html ... -
Struts上传多个及N个文件的例子
2011-07-24 11:28 545一。 web.xml文件 Xml代码 ... -
struts通过javascript使按钮变灰为不可用,灰色按钮
2011-07-24 11:23 2030struts页面用javascript来实现使按钮的变灰 ...
相关推荐
Struts1的validator验证框架
struts 的validator框架验证,入门好例!!!!
struts validator验证框架项目,都是很常用的验证,比如用户名满足6位以上,密码与确认密码必须相同,日期格式必须为yyyy-MM-dd等等
Struts Validator验证框架详细讲解.txt
struts中使用validator框架由简单到复杂的三个实例,附加说明。
Struts1.3 与1.2向比验证框架部分还是有所区别的,该例子通过一个简单的Email的校验,演示如何通过Struts Validate验证框架进行在页面中生成JavaScripte脚本,进行客户端校验。下完后记得评分,资源分就会回来,还能...
validator框架验证入门例子 struts1.x validator框架验证入门例子
在struts1.x版本中使用validator验证框架实例。
struts应用中使用了validator验证框架,它为struts提供了灵活的验证规则,而无需编程
NULL 博文链接:https://ocaicai.iteye.com/blog/1104717
Validator验证框架,STRUTS动态验证的规则与规范!
struts中自定义validator验证 <br>很多时候需要验证“密码”与“重复密码”是否一致,如果放在服务器端验证就浪费资源了。 如何在客户端进行验证呢?JS可以实现,但是struts的validator框架是否能实现呢?-见...
NULL 博文链接:https://finally-m.iteye.com/blog/360789
简单的struts的validator框架代码,以及validation.xml和validator-rules.xml配置 validator对日期的验证 以及乱码问题,采用fliter解决乱码问题
用struts Validator框架实现注册验证 (本人花了2个星期才弄明白,其中有不少现成代码可直接用于项目,比如common包。为了体现开源精神,特意奉献。供向我这样的初学者学习。)
一个自己编写的小程序,主要是struts中validator框架的使用及配置,可以做为好的参照
struts入门相关知识和代码,及validator验证框架,以及国际化的一些知识。
struts2最全验证框架...Struts2Validator Struts2 验证框架 Updated Jun 18, 2010 by cm2...@gmail.com Action 配置中一定要设置 input 返回页面 添加验证只要创建验证的...
使用validator.xml配置验证,具有通用性
validator of struts, 验证框架,主要包括4种方法,具体可以参考博客!