转载 struts1的校验框架

struts1.1中validation校验框架的应用
分类: Struts 2006-08-07 12:35 959人阅读 评论(0) 收藏 举报
校验框架加载:

在建立web模型时选中struts1.1中的validation,此事例以登录模块为例实现struts校验框架的脚本验证以及form验证,包括资源文件的国际化

 

1.       struts配置文件

 

 

-------------------------------------structs-config.xml-----------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

  <form-beans>

    <form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm" >

      <form-property name="userName" type="java.lang.String">

 

      </form-property>

      <form-property name="passWord" type="java.lang.String">

      </form-property>

      </form-bean>

<!--

此处为动态formBean,此XML加载时加载此form,注意其type为DynaValidarorForm,若不使用动态Form也需继承此类.

-->

  </form-beans>

  <action-mappings>

    <action input="/login.jsp" name="loginForm" path="/loginAction" scope="request" type="validate2.LoginAction" validate="true" >

    <forward name="success" path="/wel.jsp">

    </forward>

    <!--

    forword设置转向,应用于action中的mapping.findForword()

    -->

    </action>

  </action-mappings>

  <message-resources parameter="ApplicationResources" />

  <!--

  资源文件声明

  -->

  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />

  </plug-in>

<!--

plug-in声明的校验框架的插件

-->

</struts-config>

------------------------------------web.xml------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <display-name>wp</display-name>

  <servlet>

    <servlet-name>action</servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <init-param>

      <param-name>debug</param-name>

      <param-value>2</param-value>

    </init-param>

    <init-param>

      <param-name>application</param-name>

      <param-value>ApplicationResources</param-value>

    </init-param>

    <load-on-startup>2</load-on-startup>

  </servlet>

  <servlet>

    <servlet-name>debugjsp</servlet-name>

    <description>Added by JBuilder to compile JSPs with debug info</description>

    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

    <init-param>

      <param-name>classdebuginfo</param-name>

      <param-value>true</param-value>

    </init-param>

    <load-on-startup>3</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>debugjsp</servlet-name>

    <url-pattern>*.jsp</url-pattern>

  </servlet-mapping>

  <taglib>

    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-template.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>

  </taglib>

</web-app>

---------------------validator-rules.xml校验框架自动生成无需修改在此不列出代码-----------

-----------------------validator.xml内容空白,需手动填写,用于声明校验方式及规则------------

<?xml version="1.0" encoding="UTF-8"?>

<!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>

    <form name="loginForm">

      <field property="userName" depends="required">

        <!--

          property为校验的对象名称,depend为校验方式名称,required代表必填,

          相应的校验方式名称在validator-rules中声明

        -->

        <arg0 key="userName.text"/>

        <!--

          处理信息参数,处理信息见资源文件,参数值也取自资源文件中键值为userName.text

          的字符串

        -->

      </field>

      <!--

      -->

      <field property="passWord" depends="required,maxlength">

        <!--

          多种校验用,分隔

        -->

        <arg0 key="passWord.text"/>

        <arg1 key="${var:maxlength}" name="maxlength" resource="false"/>

        <!--

          key用表达式取某变量值,name为校验方式,resourse为是否从资源文件中取值

        -->

        <var>

          <var-name>maxlength</var-name>

          <var-value>6</var-value>

        </var>

        <!--

        此处声明了上面用到的变量

        -->

      </field>

    </form>

  </formset>

</form-validation>

----------------------ApplicationResources.properties默认资源文件,复制validator-rules.xml中的注释即可,记录错误处理信息语句,可修改-------------------

errors.required={0} is required.

   errors.minlength={0} can not be less than {1} characters.

   errors.maxlength={0} lecky {1} characters.

   errors.invalid={0} is invalid.

 

   errors.byte={0} must be a byte.

   errors.short={0} must be a short.

   errors.integer={0} must be an integer.

   errors.long={0} must be a long.

   errors.float={0} must be a float.

   errors.double={0} must be a double.

 

   errors.date={0} is not a date.

   errors.range={0} is not in the range {1} through {2}.

   errors.creditcard={0} is an invalid credit card number.

   errors.email={0} is an invalid e-mail address.

   userName.text=userName

   passWord.text=password

---------------------------------------ApplicationResources_zh.properties中文资源文件,将需求的信息由中文转置为ascii码存储-----------------------------------------------------------------------

errors.required={0} /u5fc5/u987b/u586b/u5199.

   errors.minlength={0} /u4e0d/u80fd/u5c11/u4e8e {1} /u4e2a/u5b57.

   errors.maxlength={0} /u4e0d/u80fd/u591a/u4e8e {1} /u4e2a/u5b57.

   errors.invalid={0} /u5fc5/u987b/u5b9a/u4e49.

 

   errors.byte={0} must be a byte.

   errors.short={0} must be a short.

   errors.integer={0} /u5fc5/u987b/u662f/u6574/u6570.

   errors.long={0} must be a long.

   errors.float={0} must be a float.

   errors.double={0} must be a double.

 

   errors.date={0} /u4e0d/u662f/u4e00/u4e2a/u65e5/u671f.

   errors.range={0} is not in the range {1} through {2}.

   errors.creditcard={0} is an invalid credit card number.

   errors.email={0} /u4e0d/u662f/u5408/u6cd5/u7684Email.

   userName.text=/u7528/u6237/u540d

   passWord.text=/u5bc6/u7801

 

 

2.       Action

 

此处与无验证框架的Aciton基本相同

 

-------------------------------LoginAction.java------------------------------------------------------------------

package validate2;

 

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.Action;

import org.apache.struts.validator.DynaValidatorForm;

 

public class LoginAction extends Action {

    public ActionForward execute(ActionMapping actionMapping,

                                 ActionForm actionForm,

                                 HttpServletRequest servletRequest,

                                 HttpServletResponse servletResponse) {

        DynaValidatorForm loginForm = (DynaValidatorForm) actionForm;

      

        return actionMapping.findForward("success");

    }

}

 

 

3.       jsp页面

 

-------------------------------Login.jsp,登录页面,提交两个对象给LoginAction-------------------------

<%@ page contentType="text/html; charset=GB18030" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<html>

<head>

<title>

login

</title>

</head>

<body bgcolor="#ffffff">

<h1>

<font color="red">

<html:errors/>

<!--

此处为错误处理信息

-->

</font>

</h1>

<form method="post" action="./loginAction.do" οnsubmit="return validateLoginForm(this)">

<input  type="text" name="userName" /><br >

<input  type="passWord" name="passWord"/><br >

<input type="submit" name="Submit" value="Submit">

<input type="reset" value="Reset">

</form>

<html:javascript  formName="loginForm" dynamicJavascript="true" staticJavascript="false"/>

<!--

此处将加载脚本动态验证,验证函数由校验框架,validator-rules.xml提供

-->

<script type="text/javascript"

      src="<html:rewrite page="/staticJavaScript.jsp"/>"></script>

<!--

此处通过外部文件加载静态脚本验证

-->

 

</body>

</html>

 

--------------------------wel.jsp欢迎页面,校验通过视图分发至此页面-------------------------------

<%@ page contentType="text/html; charset=GB18030" import="validate2.*,org.apache.struts.validator.DynaValidatorForm"%>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%

DynaValidatorForm loginForm=(DynaValidatorForm)request.getAttribute("loginForm");

 

%>

<html>

<head>

<title>

wel

</title>

</head>

<body bgcolor="#ffffff">

<h1>

<%=(String)loginForm.get("userName")%>

<!--

由于是动态Form, DynaValidatorForm不提供属性的get和set方式,使用通用的get方法取值

-->

</h1>

 

</body>

</html>

------------------------StaticJavaScript.jsp被login.jsp调用文件,实现静态脚本验证----------------

<%@ page language="java" %>

<%@ page contentType="application/x-javascript"%>

<!--

注意contentType文档类型

-->

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<html:javascript dynamicJavascript="false" staticJavascript="true"/>

 

 

 

 

 

 

 

 

 

 

 

 

 


引用 Struts1验证框架  2010-03-12 16:19:32|  分类: struts1x |  标签: |字号大

小 订阅
本文引用自hwyellow《Struts1验证框架》
 

引用

hwyellow 的 Struts1验证框架

1. 验证所使用的formbean必须是org.apache.struts.validator.*;
   下的ValidatorForm,或者其子类DynaValidatorForm之类的名字。
2. 在struts-config.xml文件中必须配置validator-rules.xml和validation.xml    文件
   注意:配置应该在配置文件最下方

   注:当项目中的action比较多时,一般在web.xml中配置,Servlet导入所有的struts-config.xml,这时如:

       此时配置/WEB-INF/config/main/struts-config.xml会是一个主xml文件,在此文件中导入验证及验证规则

<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>
   org.apache.struts.action.ActionServlet
  </servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>
    /WEB-INF/config/main/struts-config.xml,/WEB-INF/config/a/struts-config.xml,/WEB-INF/config/a/struts-config.xml
   </param-value>
  </init-param>
  <init-param>
   <param-name>debug</param-name>
   <param-value>3</param-value>
  </init-param>
  <init-param>
   <param-name>detail</param-name>
   <param-value>3</param-value>
  </init-param>
  <load-on-startup>0</load-on-startup>
 </servlet>

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml,/WEB-INF/config/main/validation.xml,/WEB-INF/config/a/validation.xml" />
</plug-in>

注:此时,一般会有一个验证规则文件,但会有多个validation.xml文件配置用“,”分割,如上
3. 配置ApplicationResources.properties资源文件的错误信息
errors.required={0} 是必须填写的!
errors.minlength={0} 应大于 {1} 个字符!
errors.maxlength={0} 应小于 {2} 个字符!
errors.invalid={0} 是无效的!
errors.byte={0} 必须小于127!
errors.short={0} 必须小于32766!
errors.integer={0} 必须小于2147483648!
errors.long={0} 必须是long型数据!
errors.float={0} 必须是浮点型数据!
errors.double={0} 必须时双精度型数据!

errors.date={0} 输入的值不符合时间规范!

errors.range={0} 的值应在{1}和{2}之间!

errors.creditcard={0} 的值不符合信用卡规范!

errors.email={0} 的值不是合法的E-mail地址!

4. 在validation.xml文件中配置验证规则

基本验证规则:
          名称                              描述
          byte,short,integer,     检验值是否能被转换成对应的基本数据类型
          long,float,double       
          creditCard                  检验输入域是否是一个合法的信用卡号码
          date                             检验输入域是否是一个合法日期
          email                           检验输入是否是一个合法Email地址
          mask                           检验输入域是否能成功匹配一个正则表达式
          maxLength                 检验值的长度是否小于等于给定的最大长度
          minLength                  检验值的长度是否大于等于给定的最小长度
          range                           检验值的范围是否在最大值和最小值之间
          required                      检验输入域是否为不为空,或不包含空格值的长度是否大于零

看下面代码:

<form-validation> <!-- 顶级元素 -->
<formset> <!--form验证集合,其中都是form验证定义 -->

    <form name="loginForm">
<!-- 需要验证的form名字,于struts-config.xml formbeans中定义的名字相同 -->

      <field property="account" depends="required,minlength,maxlength">
        <arg0 key="用户名" resource="false"/>
        <arg1 name="minlength" key="${var:minlength}" resource="false"/>
        <arg2 name="maxlength" key="${var:maxlength}" resource="false"/>
        <var>
        <var-name>maxlength</var-name>
        <var-value>15</var-value>
    </var>
        <var>
        <var-name>minlength</var-name>
        <var-value>3</var-value>
    </var>
      </field>
    
<!--
    field:表示form中需要验证的属性。
    depeds:表示需要验证的规则,具体规则上面有。
    arg0-5:表示在资源文件中定义的“{0}xxx{1}xxx”错误信息,
     所对应的参数arg0就对应{0} 以此类推。
    name:表示给那个验证规则配置参数。
    key:表示depeds中厌憎规则所需要的参数
    resource:表示是否从资源文件内读取信息填装{0}
    var:当然表示验证规则中的变量啦。
-->

    </form>
   
</formset>
</form-validation>

5. 最后可以在jsp页面添加<html:javascript formName="表单名字"/>
   并且<html:form>中添加, οnsubmit="return validate表单名字(this);"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值