struts05验证框架
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
validator-rules.xml
validator-rules.xml包含了一些通用验证规则,对所有struts应用 都适用,一般情况下,没有必要改变这个文件。 * required 不能为空 * validwhen 条件验证 * minlength 最小长度 * maxlength 最大长度 * mask 正则表达式 * double 是否是double * integer 是否是整数 * date 是否是日期 * intRange 整数范围 * doubleRange double范围 * email 是否是email
DynaActionForm
使用动态ActionForm时,请求参数必须使用DynaActionForm的 getter 方法获取。 DynaActionForm的getter方法主要有如下三个。 * Object get(String name): 根据属性名返回对应的值。 * Object get(String name , int index): 对于有多个重名表单 域的情况, Struts将其当成数组处理,此处根据表面域名和索 引获取对应值。 * Object get(String name,String key): 对于使用Map 属性的 情况,根据属性名及对应key获取对应的值。
4:在validation.xml 内写验证规则了;
16
validation.xml
validation.xml需要由开发人员自己建立目的是调用validator-rules文件你可以将 validator-rules.xml的DTD声明 如何写呢? 1:所有的规则写在<form-validation></form-validation>中 2:在<form-validation></form-validation> 中可以定义<formset></formset>, 里面包含 各个表单的检查 3:对表单的检查,格式如下: <form name= “ActionForm名称"> <field property=“属性名称” depends=“规则名 称,用逗号隔开”> <msg name=“验证规则名称” key=“如果这个验证规则没过,将显示的资 源文件中消息key值” resource="false"/> </field> </form> 注意:field可以写多个,表示对多个属性进行验证,当规则用到多个,msg也可 以写多个 Resource属性:如果它的值为false那么将会直接使用key里的值,如果它为true, 17 那将使用资源文件中消息key值。
部分代码的实现: public class NewValidator implements Serializable{ public boolean validateEqu(ng.Object obj, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request){ String passwordCheckFiled = field.getProperty(); String passwordCheckValue = ValidatorUtils.getValueAsString(obj, passwordCheckFiled); String passwordFiled = field.getVarValue("confirm"); String passwordValue = ValidatorUtils.getValueAsString(obj, passwordFiled); if(!passwordValue.equals(passwordCheckValue)){ errors.add(field.getKey(),Resources.getActionMessage(request, va, field)); } return errors.isEmpty(); }
烦琐:是因为必须大量书写这种简单的类。
3
ActionForm的关系图
4
DynaActionForm
所有的动态 ActionForm 的实现类都必须是 org.apache.struts.action.DynaActionForm 类,或者是 它的子类。 Struts 提供了动态ActionForm ,通过使用动态 ActionForm ,可以完全不用书写 ActionForm ,只需 在struts-config.xml 文件中配置即可.
5
DynaActionForm配置
使用动态 ActionForm 与前面不同的是:因为系统不清楚动态 ActionForm 的属性, 所以必须在配置文件中配置对应的属性。可以使用 form-property 元素来配置动 态 ActionForm 的属性。 动态ActionForm的配置必须增加form-property元素, Struts-config.xml中的<form-bean>配置 <form-beans> <!一配置动态ActionForm,动态Aciton必须使用DynaActionForm 一〉 <form-bean name="loginForm" type="org.apache.struts.action. DynaActionForm"> <!一配置ActionForm的属性: username--> <form-property name="username" type="ng.String"/> <! 配置ActionForm的属性: pass--> <form-property name="pass"type="ng.String"/> </form-bean> </form-beans> 每个属性必须对应一个form-property元素。 form-property元素包含两个属性。 * name: 属性的名字,必须与JSP 页面的表单域的名字相同。 * type: 属性的类型。
7
DynaActionForm使用
动态ActionForm 同样用于封装用户请求参数,但该ActionForm 没有各属性的getter 及setter 方法,因此无法调用对应的getter 方法来解析请求参数。 DynaActionForm 提供了多个重载的 getter 方法用于获取请求参数,下面的 Action 使用DynaActionForm,该Action 的源代码如下: public class LoginAction extends Action { //必须重写该核心方法,该方法actionForm将表单的请求参数封装成值 对象 public ActionForward execute(ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response) throws Exception //将ActionForm强制类型转换为DynaActionForm DynaActionForm loginForm = (DynaActionForm)form; //从ActionForm中解析出请求参数:username String username = (String)loginForm.get("username"); //从ActionForm中解析出请求参数:password String pass = (String)loginForm.get("pass"); ...} 8 }
10
ActionForm的关系图
11
Validate框架验证
Struts的两种前端验证方案: 1:ActionForm验证 2:Validate框架验证 ActionForm验证 很多表单都要验证输入不能为空,传统方法需要在 每个ActionForm中写if语句,相当于同样的语句分 散在项目的很多地方 Validate框架验证 将验证的工作写在一个XML文件中,同样的语句只需 要写一次就好了.
12
Validate框架验证使用
首先,你的项目中必须有 jakarta oro.jar:处理文本 commons-validator.jar:提供验证功 能 一个系统提供的文件:validatorrules.xml --这个文件中定义了我们项目中 可能出现的所有要验证的规则,这是 Struts 自己定义的,以后你只要在另 一个XML文件中调用就可以了 另一个XML文件:validation.xml
9
动态ActionForm与普通ActionForm
使用动态ActionForm 的目的是为了减少代码的书写量。 但有些IDE 工具可以自动生成ActionForm. 则可以使 用普通ActionForm。 动态ActionForm与普通ActionForm并没有太大的区别。 动态ActionForm避免了书写ActionForm,但配置变得 更复杂了。而普通ActionForm使解析请求参数变得更 直观。
6
DynaActionForm配置
Struts-config.xml中的<action-mappings>配置 <action-mappings> <!-- 配置Action的path, type, name属性 > <action path="/login" type="lee.LoginAction" name="loginForm"> <!一配置两个局部Forward--> <forward name="welcome" path="/WEB-INF/jsp/welcome.jsp"l> <forward name="input" path="/login.jsp"l> </action> </action-mappings> 从上面的配置可以看出Action的配置与以前的配置没有什么变化
14
Validate框架验证实现
1:建立validator-rules.xml和 validation.xml 2:将这两个文件作为插件存入struts配置文件,在 struts配置文件最后加上: <plug-in className="org.apache.struts.validator.ValidatorP lugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEBINF/validation.xml" /> </plug-in>
15
Validate框架rm,Action;
注意: 此时,ActionForm应该继承 org.apache.struts.validator.ValidatorForm, 或者是 org.apache.struts.validator.DynaValidatorF orm
Web开发流行架构-struts
Chapter05 验证框架
本章目的
熟练使用动态DynaActionForm 熟练使用验证框架对表单进行验证
2
普通的ActionForm
普通ActionForm的不足 虽然比较简单,但也是异常烦琐的类 简单:是因为每个类的写法非常简单,只需要为每个 表单域提供对应的 setter 和getter 方法即可
required验证规则
18
minlength验证规则
19
mask验证规则
20
数据类型的验证
21
date验证规则
22
数据范围验证
23
验证密码和确认密码是否相同
24
常量的配置和使用
25
自定义的验证规则
步骤:
建立自定义规则类 配置验证规则 使用自定义的验证规则
26
建立自定义规则类