打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Struts第4天

前天学习了struts的编程式验证,今天学习struts内置的配置式的验证方式,那么,为什么要用这种方式来验证呢?

其实,我们会发现struts的编码方式验证呢会有一些缺点,第一就是不够灵活,第二是将验证和验证规则耦合在一起了,还违反了开闭原则,当我们使用了struts的validate验证框架的时候会发现使用起来灵活的多,如果添加新的属性,只需要增加配置文件的属性验证就行了。

Validate验证框架

首先,我们需要做一些准备工作:

Validator框架依赖包:

  1)jakarta-oro.jar:文本处理类,文本的替换,分割和过滤

  2)commons-validator.jar:包含一些通用的验证规则

需要的配置文件:

  1)validator-rules.xml:包含通用验证规则

  2)validation.xml:针对具体Struts应用验证规则

了解validator-rules.xml:

  1)name:验证规则名称

  2)classname:处理类的权限类型

  3)method:实现验证规则方法

  3)methodParams:实现验证规则方法的参数列表

  4)msg:消息资源文件的key

 5)depends:依赖验证规则  

使用validate验证框架的步骤:

1.先在struts-config.xml文件里面加入插件信息

2.修改formbean的继承为ValidatorForm

3.编写validator.xml,它的验证规则跟validator-rules.xml的dtd是一样的

4.编写国际化资源文件

5.最后在页面上显示错误信息

好了,我们现在按照这种步骤来做!

第一步,先在struts-config.xml里面加入插件信息,示例代码:

  1. <struts-config>  
  2.   <data-sources />  
  3.   <form-beans>  
  4.     <form-bean name="login" type="com.lovo.form.LoginForm"></form-bean>   
  5.   </form-beans>  
  6.   <global-exceptions />  
  7.   <global-forwards />  
  8.   <action-mappings>  
  9.     <action path="/login" type="com.lovo.action.LoginAction" name="login" validate="true" input="/login.jsp">  
  10.         <forward name="success" path="/index.jsp"></forward>  
  11.         <forward name="error" path="/login.jsp"></forward>  
  12.     </action>  
  13.   </action-mappings>  
  14.   <message-resources parameter="com.lovo.struts.ApplicationResources" />  
  15.    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
  16.         <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>  
  17.    </plug-in>  
  18. </struts-config>  

第二步,这里必须将插件信息加在mappings后面,还有action的validate属性必须配置哦!input当然也要了!这样才会去调用验证框架。然后呢,修改formbean对象继承为ValidatorForm这类,示例:

  1. public class LoginForm extends ValidatorForm  
  2.     private String name;  
  3.     private String pwd;  
  4.   正如你看到的,这个类里面没有validate方法,但是系统还是会去调用验证框架的。

第三步,编写varlidator.xml文件,这个文件因为是在加入插件的时候就已经把名字给定义了,所以,这里我们还是以validator.xml这个文件为例,它呢,保存在WEB-INF下面的,因为它的dtd跟varlidator-rules.xml这个dtd是一样的,所以就直接拷贝了。看示例吧!

 

  1. <!DOCTYPE form-validation PUBLIC  
  2.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"  
  3.           "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">  
  4.   
  5. <form-validation>  
  6.     <formset>  
  7.         <form name="login"><!-- 要验证的formbean的name,这里跟struts-config.xml里面的formbean的name一致 -->  
  8.         <!-- property是指要验证的具体属性名,这里跟formbean里面的属性名一致  
  9.            depends是指验证规则具体参考validator-rules.xml里面的name对应这里对非空和最小值和最大值做了验证,多个验证规则用,号隔开,  
  10.          -->  
  11.             <field property="name" depends="required,minlength,maxlength">  
  12.                 <arg0 key="login.name"/><!-- 这里是指第0个占位符(形参)的key是login.name,根据这个会去资源文件里面找login.name所对应的value值,然后将其填充到占位符中 -->  
  13.                 <arg1 key="${var:minlength}" resource="false"/><!-- 这里key是指第2个形参的的值对应下面var的name值,首先resource=false是指将不会去资源文件里面找形参了,而会在当前文件里面找,这里我们会配置一个var的属性来确定第二个形参的值 -->  
  14.                 <arg2 key="${var:maxlength}" resource="false"/>  
  15.                 <var>  
  16.                     <var-name>minlength</var-name><!-- 这里的var-name是指validator-rules.xml的name -->  
  17.                     <var-value>2</var-value><!-- 形参的值 -->  
  18.                 </var>  
  19.                 <var>  
  20.                     <var-name>maxlength</var-name>  
  21.                     <var-value>10</var-value>  
  22.                 </var>  
  23.             </field>  
  24.         </form>  
  25.         </formset>  
  26.         </form-validation>  

具体的地方都加了注释,这里不再详说。

第四步,编写国际化资源文件,刚刚在varlidator.xml里面多次提到了国际化文件,那么这个文件到底有什么作用呢?大家可以跟我来看看哈!ComeON!

errors.required={0}\u4E0D\u80FD\u4E3A\u7A7A\uFF01
errors.minlength={0}\u6700\u5C0F\u4E3A\u6570{1}
errors.maxlength={0}\u6700\u5927\u4F4D\u6570{2}

login.name=\u7528\u6237\u540D
login.pwd=\u5BC6\u7801

这里呢,errors.required这个key值其实是varlidator-rules.xml里面的msg对应,后面的value值是指要显示的错误信息,{0}是指validator.xml里面的arg第几个如果是arg0,就是{0},这样来填充占位符,其实,这里我们也可以把这里的{0}想成我们在学JDBC的时候,里面的preparedstatments里面的填充?号的值,其实是一个道理。

最后的login.name是指要填充的具体内容,它跟varlidator.xml里面的arg几的具体参数为准,一般都是resource="true"的时候才来这里面读取,因为这里我是使用utf-8的格式,所以看起来有点看不懂,其实就是中文。

第五步,显示错误信息,示例代码:

显示错误信息,跟前天的显示是一样的,具体请参看前天的博客内容,这里稍微提下,就是html-errors里面的property的值为validator.xml里面的field的name值,也就是属性名!

 最后是struts的标签库,个人认为这个东西用的不多,但是还是要掌握!

struts-html主要替换原来的html标签

struts-bean 主要是用于输出国际化资源文件,重要的是writer和message还有一点就是创建和复制define

struts-logic主要用于逻辑判断控制流程Internet 和 equal 循环和比较

struts-tiles 主要是为了创建网页模板感觉用处不大

好了先总结到此!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Validator验证框架使用教程
Struts Validator验证器使用指南
Struts的验证--Validator
使用AJAX的Struts验证框架
Struts2――表单验证
用Struts Validator检查你的表单
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服