- 浏览: 1229306 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
转自:http://student.csdn.net/space.php?uid=126037&do=blog&id=28776
我们按照开发步骤讲解: 1. 首先我们新建一个项目,导入Struts框架; 2. 导入Struts框架之后我们可以看到,在WEB-INF目录下有一个validator-rules.xml,这说明在导入Struts的时候validate框架也被导入进来了。validator-rules.xml 验证模板,里面定义了各种常见的验证规则,我们不需要对这个文件进行编辑,我们只需要使用模板里面定义的验证规则即可.当然我们也可以自己手写一个validator-rules.xml文件,但是必须以http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd约束它。 3. 在此基础上我们还必须自己定义一个xml文件。文件名可以任意命名,例如:validator.xm(同样他必须导入相应版本的dtd文件约束它),但是,文件必须创建在类加载器能够加载到得目录下,一般我们放在WEB-INF目录下; 这个配置文件由我们自己编辑,描述使用哪种类型的验证模板来进行验证. 4. 由于Validate框架是Struts之外的框架部分,所以我们必须在Struts中导入验证框架的插件(org.apache.struts.validator.ValidatorPlugIn);在基于以上的步骤之后,我们必须配置Struts-config.xml,加载插件和插件所学要的文件了,如下: <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/> <!-- set-property property="stopOnFirstError" value="true"/> --> </plug-in> 5. 接下来我们就开始做具体的验证了,我们看如下代码: <form-validation> <global></global> <formset> <constant> <constant-name></constant-name> <constant-value></constant-value> </constant> <form name="regForm"> <!-- Validate name --> <field property="name" depends="required,maxlength"> <arg0 key="name"/> <arg1 key="${var:maxlength}" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>20</var-value> </var> </field> </formset> </form-validation> 这是我们在/WEB-INF/validator.xml中配置的一段验证用户名的简单配置信息,接下来我们看看相应的dtd文件的定义: <!ELEMENT form-validation (global*, formset*)> --根元素(必须有1-n个global,formset) <!ELEMENT formset (constant*, form+)> --form是必须有一个的,constant可选的 <!ATTLIST formset language CDATA #IMPLIED> <!ATTLIST formset country CDATA #IMPLIED> <!ATTLIST formset variant CDATA #IMPLIED> <!ELEMENT form (field+)> --field也是至少有一个 <!ATTLIST form name CDATA #REQUIRED> <!ELEMENT field (msg|arg|arg0|arg1|arg2|arg3|var)*> --在field中可以有o-n个msg|arg| var <!ATTLIST field property CDATA #REQUIRED> <!ATTLIST field depends CDATA #IMPLIED> <!ATTLIST field page CDATA #IMPLIED> <!ATTLIST field indexedListProperty CDATA #IMPLIED> <!ELEMENT msg EMPTY> <!ATTLIST msg key CDATA #REQUIRED> <!ATTLIST msg name CDATA #REQUIRED> <!ATTLIST msg bundle CDATA #IMPLIED> <!ATTLIST msg resource CDATA #IMPLIED> <!ELEMENT arg EMPTY> <!ATTLIST arg key CDATA #REQUIRED> <!ATTLIST arg bundle CDATA #IMPLIED> <!ATTLIST arg name CDATA #IMPLIED> <!ATTLIST arg resource CDATA #IMPLIED> <!ATTLIST arg position CDATA #IMPLIED> ………… …… <!ELEMENT var (var-name, var-value, var-jstype?)> <!ELEMENT var-name (#PCDATA)> <!ELEMENT var-value (#PCDATA)> <!ELEMENT var-jstype (#PCDATA)> 这里我们就不一一讲解dtd文件了,这不是今天的重点,结合dtd和以上的xml文件可以一目了然的了解验证的结构,这里我们简单的讲述下一些元素和属性的作用:、 Global: 着这里我们可以定义formset一些公用的属性或者对象; Formset:要验证表单的集合; Constant:着这里我们可以定义form一些公用的属性或者对象; Form: 相当于就是一个表单元素,他有一个name属性,如:name="regForm"; 我们说这里的name的值可以不与struts-config.xml中From的一样,有些时候我们可以填写一个Action的路径; Field: 表单字段 |-property="name" 该属性表示了字段的名字,和AcitionForm中的必须一致; |-depends="required,maxlength";该属性用于指定验证的规则; Arg:用于填充验证结果的参数; |-key="" ;该属性用于指向参数的值; |-resource="" ;该属性用于控制程序是否读取配置文件; |-name=””;该属性用于指定验证规则的名字; Msg:用于覆盖验证规则文件中的消息信息,(自定义信息); 6. 既然我们是要验证表单,当然我们在struts-config.xml中的Action配置validate=”true” input=”…”是必须的。 7. 这个时候我们就需要在资源文件中配置好验证要用到的信息了;建议大家从validator-rules.xml 直接拷贝即可; 8. 我们以前在一个最普通的ActionFrom中做验证是实现它的Validate(……)方法,手工写验证步骤,在我们用了validate框架之后呢? 我的From就不直接继承ActionFrom了,我们改变继承ValidatorForm,这个类里面已经为我们写好了一个验证的方法,所以我们如果在自己的Form中还保留这个方法的话就会覆盖父类中的验证方法,这对于我们来说是毫无意义的,所以我们必须在自己的Form中注释或者删除验证方法。这里需要我们注意的是:当使用的是动态From时候,我们继承是ValidatorActionForm 9. 到这里我们已经是万事俱备,只欠显示了,最后我们在页面上打入struts标签库,<bean:message ……/>可以完成我们的验证了。 10.我上述讲解的是后台验证,在struts中结合validate框架可以轻松的实现前台的JavaScript验证,从而减轻服务器的负担,因为它会自动生成JavaScript脚本,下面我们来看看前台验证的步骤: 1).前提是后台已经实现了一套validate验证; 2).在jsp页面上的JavaScript区域(head之间)加上如下代码: <html:javascriptform Name="regForm" method="validateRegForm"/> Name属性是Form的名称;method:生成JavaScript验证方法的名称,默认为validate+From名称; 3).在表单上添加 onSubmit 方法即可,如:onsubmit=”return validateRegForm(this)”,这里必须传入一个参数,这个参数真是我们当前的from对象。 --值得我们注意的是:上面只是简单的讲述validate框架在struts使用步骤,我们知道验证框架是一个非常强大的独立的验证体系,他可以应用于我们很多的应用程序,它不依赖于struts,如果想更深入如的了解这个框架,必须去看他的api和源码,在validate框架中为我们提供的验证规则也就是基本的验证,不能满足我在开发中的需求,但是框架我们提供了自定义的验证方法,只需要按照他的规则定义并且配置validator-rules.xml的相关信息即可,这里只提供思路: 一、 首先我们自定一个验证的类:CheckIdCard.java public class CheckIdCard implements Serializable { public static boolean validateIdCard(Object bean, ValidatorAction va, Field field, ActionMessages errors, Validator validator, HttpServletRequest request) { //此处写我们验证的逻辑。 。。。。。。。。。。。。。。 } 类里面定义的都是静态的方法哦。 二、配置validator-rules.xml的相关信息 <validator name="idCard" classname="org.rao.struts.util.CheckIdCard " method=" validateIdCard " methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.idCard" jsFunction="******* "/> 这就相当我们已经注册好了一个验证规则了,jsFunction="******* ":这里我们没有实现它的JavaScript验证,大家有兴趣可以自己研究。
关于struts validate框架基于不同actionForm,配置文件中validate属性的默认值区别 Form Bean中: 1、<form-bean name="loginForm" type="com.lwf.action.LoginForm"/> ,LoginForm继承自ActionForm; 那么<action 中默认validate属性值为true,会执行验证,但是客户点击验证提示后会自动提交到action处理,所以验证相当于无效的。即使设置了validate="true"属性,验证后也会提交到action处理,验证无效。 2、<form-bean name="loginForm" type="com.lwf.action.LoginForm"/>,LoginForm继承自ValidatorForm;那么<action 中默认validate属性值为true,会执行验证,客户点击验证提示后不会自动提交到action处理,所以验证有效。 3、<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm"> 那么<action 中默认validate属性值为true,会执行验证,客户点击验证提示后不会自动提交到action处理,所以验证有效。 4、<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">那么<action 中默认validate属性值为true,会执行验证,但是客户点击验证提示后会自动提交到action处理,所以验证相当于无效的。即使设置了validate="true"属性,验证后也会提交到action处理,验证无效。
附件为与validate相关的文档
- validate.rar (39.8 KB)
- 下载次数: 4
发表评论
-
DispatchAction 和DynaValidateActionForm 结合使用时的问题
2011-03-08 16:23 933使用DispatchAction使得程序员能够大大减少acti ... -
ActionForm中使用集合属性并自动组装数据
2011-01-18 14:32 929http://blog.csdn.net/m0085_cn/a ... -
Cannot find bean org.apache.struts.taglib.html.BEAN in any scope
2010-11-10 14:13 974开的过程中碰到问题:Cannot find bean org. ... -
JSTL与struts1标签
2010-08-31 10:17 1550JSTL与struts标签: http://www.360d ... -
如何自动清空struts表单域
2010-06-30 17:44 1269为了某种需要,formBean的SCOPE设置成了ses ... -
form验证与动态验证框架
2010-06-06 17:22 1388form验证返回ActionErrors. 动态验证则实现J ... -
resourcebundleeditor在eclipse里面的设置和使用
2010-05-30 11:30 1747我们一般使用native2ascii工具得到struts资源文 ... -
使用DispatchAction分发
2010-04-07 18:04 1159应用中经常有增、删、改、查操作,如果象一前一样使用List ... -
forward属性与ForwardAction类
2010-04-07 17:08 1174forward属性与ForwardAction类在配置文件按以 ... -
struts容错处理
2010-04-07 15:20 1187struts容错处理: 当客户请求的action不存在的时候 ... -
struts声明式异常二
2010-04-07 15:18 1172上文如果资源文件改为: error.login.usernu ... -
struts声明式异常一
2010-04-06 23:10 1053struts声明式异常: 在配置文件中配置exception ... -
struts编程式异常--html:error与html:message
2010-04-03 11:39 2040struts编程式异常过程: 截获异常信息;创建异常信息; ... -
struts国际化,从资源文件读取异常信息
2010-04-03 01:56 1200示例演示登录时从资源文件读取用户名或密码错误信息 logon ... -
struts国际化,资源文件读取三
2010-04-02 23:42 1029本示例演示客户进行语言设置,从而更改整个系统语言. 客户在c ... -
struts国际化,资源文件读取二
2010-04-02 22:18 1636package com.lwf.struts.util; ... -
struts国际化,资源文件读取一
2010-04-02 00:19 1373国际化的发展 看本文之前可先看一下properties文件的 ... -
struts html标签自动保存提交的表单值。
2010-04-01 17:01 2061我们之前JSP提交值后如果还要取得值怎么做? 应该是取得a ... -
ActionMapping相关
2010-04-01 16:02 1083一、Map的设置map.put("path" ... -
ActionForward相关问题
2010-04-01 15:13 1362一、静态的ActionForward不能更改属性: stru ...
相关推荐
**6.2 使用Validation框架验证数据** 通过引入第三方验证框架(如Hibernate Validator),可以在Action类中使用注解来实现数据验证。 **示例代码**: ```java public class MyAction { @NotNull(message = ...
### Struts2 验证框架详解 #### 一、引言 在Web开发中,确保用户输入的有效性和正确性是至关重要的。Struts2作为一款流行的Java Web开发框架,提供了强大的验证功能来帮助开发者实现这一目标。本文将详细介绍Struts...
Struts2是一个流行的Java web开发框架,它提供了一种强大的数据输入验证机制,确保用户提交的数据符合预期格式和约束。本教程将深入讲解Struts2中的数据输入验证,包括两种主要验证方式:客户端验证和服务端验证。...
### Struts2 最全验证框架知识点详解 #### 一、Struts2 验证框架概述 Struts2 是一个基于MVC模式的Java Web开发框架,它提供了丰富的功能来简化Web应用的开发过程。其中,Struts2的验证框架是其重要的组成部分之一...
### Struts2 自定义验证程序的实现方法详解 #### 一、Struts2 内建验证程序实现的分析 在探讨如何实现自定义验证程序之前,我们先来了解一下 Struts2 的内置验证机制。Struts2 提供了丰富的内置验证器(Validator...
`struts-validate`机制是Struts框架中非常关键的一部分,它使得数据验证过程变得既灵活又强大。通过合理的配置,可以轻松地实现各种复杂的验证逻辑,确保只有合法的数据才能被提交到服务器端进一步处理。这不仅提高...
《jQuery Validate与Struts2整合应用详解》 在Web开发中,前端验证用户输入的数据是必不可少的一环,jQuery Validate插件就是一款强大的JavaScript验证工具,它可以帮助我们方便地实现表单验证。与此同时,Struts2...
- **XML配置**:Struts2允许在struts.xml或action配置文件中定义验证规则,通过`<validate>`标签指定对应的验证规则文件。 - **注解配置**:Struts2也支持使用Java注解在Action类或字段上直接定义验证规则,更加...
Struts框架详解 Struts是Java Web开发中的一个开源MVC框架,由Apache软件基金会维护。它提供了一种结构化的方式来构建应用程序,使得开发者可以更有效地处理请求、控制流程、展示视图,以及管理业务逻辑。本实验...
Struts的验证框架允许开发者在struts-config.xml中定义错误提示,然后在ActionForm的validate方法中实现具体的业务验证逻辑。如果验证失败,ActionServlet会将错误信息传递给视图层显示。 综上,SSH框架的组合使用...
总的来说,Struts2提供了灵活的校验机制,开发者可以选择直接在Action类中重写`validate()`方法,或者利用XWork的Validator框架创建独立的验证配置文件,以适应不同项目的需求。通过这两种方式,可以有效地保证数据...
### Struts_config.xml详解 #### 一、概述 在Java Web开发中,Struts框架作为MVC模式的一个经典实现,提供了强大的功能支持。Struts框架的核心配置文件`struts-config.xml`是整个应用的关键组成部分之一,它定义了...
### Struts1.2中的Validation验证框架实现步骤详解 #### 一、环境配置与准备工作 在Struts1.2框架中实现验证功能首先需要完成环境配置。这包括添加必要的库文件(JAR包)、配置XML文件等。 ##### 1.1 添加...
### Struts验证详解 在Java Web开发中,Struts框架为开发者提供了强大的MVC架构支持。其中,数据验证是确保应用程序稳定性和用户体验的关键环节。本文将深入探讨Struts框架下的数据验证机制,包括如何使用`validate...
综上所述,本案例“Struts2之Servlet文件上传详解”将引导你了解如何结合Struts2和Servlet实现文件上传功能,包括配置、Action编写、JSP页面设计以及注意事项。通过实践,你将更深入地理解Struts2框架在处理复杂Web...
SSS 框架详解 SSS 框架是一种基于 MVC 模式的 Web 应用程序框架,旨在帮助开发者快速构建高效、可靠的 Web 应用程序。本文将对 SSS 框架进行详细的解释,包括其框架结构、配置文件、ActionServlet 控制器、请求映射...