解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证

1. 自定义的FileChecks类。主要是为了支持DispatchAction类的使用
 
  1. /**
  2.  * Filename: MyFieldChecks.java
  3.  * Author: qiujy
  4.  * Createtime:Nov 16, 2008
  5.  * Copyrights 2008 qjyong All rights reserved.
  6.  * EMail: qjyong(a)gmail.com
  7.  */
  8. package com.qiujy.web.validator;
  9. import javax.servlet.http.HttpServletRequest;
  10. import org.apache.commons.validator.Field;
  11. import org.apache.commons.validator.Validator;
  12. import org.apache.commons.validator.ValidatorAction;
  13. import org.apache.struts.Globals;
  14. import org.apache.struts.action.ActionMapping;
  15. import org.apache.struts.action.ActionMessages;
  16. import org.apache.struts.actions.DispatchAction;
  17. import org.apache.struts.validator.FieldChecks;
  18. /**
  19.  * 
  20.  * 自定义的字段通用验证规则类,主要是为了支持DispatchAction类的使用
  21.  * 某个字段在DispatchAction中需要的某个方法方法要进行验证,则validation.xml中进行如下配置
  22.  * <p>
  23.  * <field property="username" page="" depends="required">
  24.         <arg0 key="login.username" />
  25.         <var>
  26.             <var-name>methodsNeedValidation</var-name>
  27.             <var-value>login,registe</var-value>
  28.         </var>
  29.     </field>
  30.  * </p>
  31.  * 这表示username这个字段在login和registe方法中要进行验证
  32.  * @author qiujy
  33.  */
  34. public class MyFieldChecks extends FieldChecks {
  35.     private static final long serialVersionUID = 2330916654638584139L;
  36.     private static final String SEPARATOR = ",";
  37.     /**
  38.      * 方法说明: 判断in是否出现在source中
  39.      * 
  40.      * @param source
  41.      * @param in
  42.      * @return
  43.      */
  44.     private static boolean isIn(String source, String in) {
  45.         source = SEPARATOR + source + SEPARATOR;
  46.         if (source.indexOf(SEPARATOR + in + SEPARATOR) != -1) {
  47.             return true;
  48.         } else {
  49.             return false;
  50.         }
  51.     }
  52.     /**
  53.      * 判断需要验证
  54.      * 
  55.      * @param field
  56.      * @param request
  57.      * @return
  58.      */
  59.     private static boolean isNeedValidate(Field field,
  60.             HttpServletRequest request) {
  61.         boolean flag = true;
  62.         // 查找到当前请求对应的actionMapping
  63.         ActionMapping mapping = (ActionMapping) request
  64.                 .getAttribute(Globals.MAPPING_KEY);
  65.         // 得到处理该请求的Action类名
  66.         String className = mapping.getType();
  67.         String input = request.getHeader("Referer");
  68.         if (input != null) {
  69.             // mapping.setInput(input);
  70.         }
  71.         try {
  72.             // 如果处理该请求的Action是DispatchAction的子类
  73.             if (Class.forName(className).newInstance() instanceof DispatchAction) {
  74.                 // 得到<action>标记的parameter属性的值
  75.                 String parameter = mapping.getParameter();
  76.                 // 得到当前要执行方法名
  77.                 String currentMethodName = request.getParameter(parameter);
  78.                 // 获取配置文件中需要验证的方法名列表串
  79.                 String methods = field.getVarValue("methodsNeedValidation");
  80.                 // 如果没有配置需要验证的方法或不在需要验证的方法列表中,则把flag改为false
  81.                 if (null == methods || "".equals(methods)
  82.                         || !isIn(methods, currentMethodName)) {
  83.                     flag = false;
  84.                 }
  85.             }
  86.         } catch (ClassNotFoundException e) {
  87.             e.printStackTrace();
  88.         } catch (InstantiationException e) {
  89.             e.printStackTrace();
  90.         } catch (IllegalAccessException e) {
  91.             e.printStackTrace();
  92.         }
  93.         return flag;
  94.     }
  95.     public static boolean validateRequired(Object bean, ValidatorAction va,
  96.             Field field, ActionMessages errors, Validator validator,
  97.             HttpServletRequest request) {
  98.         if (isNeedValidate(field, request)) {
  99.             return FieldChecks.validateRequired(bean, va, field, errors,
  100.                     validator, request);
  101.         } else {
  102.             return true;
  103.         }
  104.     }
  105.     public static boolean validateRequiredIf(Object bean, ValidatorAction va,
  106.             Field field, ActionMessages errors, Validator validator,
  107.             HttpServletRequest request) {
  108.         if (isNeedValidate(field, request)) {
  109.             return FieldChecks.validateRequiredIf(bean, va, field, errors,
  110.                     validator, request);
  111.         } else {
  112.             return true;
  113.         }
  114.     }
  115.     public static boolean validateMask(Object bean, ValidatorAction va,
  116.             Field field, ActionMessages errors, Validator validator,
  117.             HttpServletRequest request) {
  118.         if (isNeedValidate(field, request)) {
  119.             return FieldChecks.validateMask(bean, va, field, errors, validator,
  120.                     request);
  121.         } else {
  122.             return true;
  123.         }
  124.     }
  125.     public static Object validateByte(Object bean, ValidatorAction va,
  126.             Field field, ActionMessages errors, Validator validator,
  127.             HttpServletRequest request) {
  128.         if (isNeedValidate(field, request)) {
  129.             return FieldChecks.validateByte(bean, va, field, errors, validator,
  130.                     request);
  131.         } else {
  132.             return true;
  133.         }
  134.     }
  135.     public static Object validateShort(Object bean, ValidatorAction va,
  136.             Field field, ActionMessages errors, Validator validator,
  137.             HttpServletRequest request) {
  138.         if (isNeedValidate(field, request)) {
  139.             return FieldChecks.validateShort(bean, va, field, errors,
  140.                     validator, request);
  141.         } else {
  142.             return true;
  143.         }
  144.     }
  145.     
  146.     
  147.     public static Object validateInteger(Object bean,
  148.             ValidatorAction va, Field field,
  149.             ActionMessages errors,
  150.             Validator validator,
  151.             HttpServletRequest request) {
  152.         if (isNeedValidate(field, request)) {
  153.             return FieldChecks.validateInteger(bean, va, field, errors,
  154.                     validator, request);
  155.         } else {
  156.             return true;
  157.         }
  158.     }
  159.     
  160.     public static Object validateLong(Object bean,
  161.             ValidatorAction va, Field field,
  162.             ActionMessages errors,
  163.             Validator validator,
  164.             HttpServletRequest request) {
  165.         if (isNeedValidate(field, request)) {
  166.             return FieldChecks.validateLong(bean, va, field, errors,
  167.                     validator, request);
  168.         } else {
  169.             return true;
  170.         }
  171.     }
  172.     
  173.     public static Object validateFloat(Object bean,
  174.             ValidatorAction va, Field field,
  175.             ActionMessages errors,
  176.             Validator validator,
  177.             HttpServletRequest request) {
  178.         if (isNeedValidate(field, request)) {
  179.             return FieldChecks.validateLong(bean, va, field, errors,
  180.                     validator, request);
  181.         } else {
  182.             return true;
  183.         }
  184.     }
  185.     
  186.     public static Object validateDouble(Object bean,
  187.             ValidatorAction va, Field field,
  188.             ActionMessages errors,
  189.             Validator validator,
  190.             HttpServletRequest request) {
  191.         if (isNeedValidate(field, request)) {
  192.             return FieldChecks.validateDouble(bean, va, field, errors,
  193.                     validator, request);
  194.         } else {
  195.             return true;
  196.         }
  197.     }
  198.     
  199.     public static Object validateDate(Object bean,
  200.             ValidatorAction va, Field field,
  201.             ActionMessages errors,
  202.             Validator validator,
  203.             HttpServletRequest request) {
  204.         if (isNeedValidate(field, request)) {
  205.             return FieldChecks.validateDate(bean, va, field, errors,
  206.                     validator, request);
  207.         } else {
  208.             return true;
  209.         }
  210.     }
  211.     
  212.     public static boolean validateIntRange(Object bean,
  213.             ValidatorAction va, Field field,
  214.             ActionMessages errors,
  215.             Validator validator,
  216.             HttpServletRequest request) {
  217.         if (isNeedValidate(field, request)) {
  218.             return FieldChecks.validateIntRange(bean, va, field, errors,
  219.                     validator, request);
  220.         } else {
  221.             return true;
  222.         }
  223.     }
  224.     
  225.     public static boolean validateDoubleRange(Object bean,
  226.             ValidatorAction va, Field field,
  227.             ActionMessages errors,
  228.             Validator validator,
  229.             HttpServletRequest request) {
  230.         if (isNeedValidate(field, request)) {
  231.             return FieldChecks.validateDoubleRange(bean, va, field, errors,
  232.                     validator, request);
  233.         } else {
  234.             return true;
  235.         }
  236.     }
  237.     
  238.     public static boolean validateFloatRange(Object bean,
  239.             ValidatorAction va, Field field,
  240.             ActionMessages errors,
  241.             Validator validator,
  242.             HttpServletRequest request) {
  243.         if (isNeedValidate(field, request)) {
  244.             return FieldChecks.validateFloatRange(bean, va, field, errors,
  245.                     validator, request);
  246.         } else {
  247.             return true;
  248.         }
  249.     }
  250.     
  251.     public static Object validateCreditCard(Object bean,
  252.             ValidatorAction va, Field field,
  253.             ActionMessages errors,
  254.             Validator validator,
  255.             HttpServletRequest request) {
  256.         if (isNeedValidate(field, request)) {
  257.             return FieldChecks.validateCreditCard(bean, va, field, errors,
  258.                     validator, request);
  259.         } else {
  260.             return true;
  261.         }
  262.     }
  263.     
  264.     public static boolean validateEmail(Object bean,
  265.             ValidatorAction va, Field field,
  266.             ActionMessages errors,
  267.             Validator validator,
  268.             HttpServletRequest request) {
  269.         if (isNeedValidate(field, request)) {
  270.             return FieldChecks.validateEmail(bean, va, field, errors,
  271.                     validator, request);
  272.         } else {
  273.             return true;
  274.         }
  275.     }
  276.     
  277.     public static boolean validateMaxLength(Object bean,
  278.             ValidatorAction va, Field field,
  279.             ActionMessages errors,
  280.             Validator validator,
  281.             HttpServletRequest request) {
  282.         if (isNeedValidate(field, request)) {
  283.             return FieldChecks.validateMaxLength(bean, va, field, errors,
  284.                     validator, request);
  285.         } else {
  286.             return true;
  287.         }
  288.     }
  289.     
  290.     public static boolean validateMinLength(Object bean,
  291.             ValidatorAction va, Field field,
  292.             ActionMessages errors,
  293.             Validator validator,
  294.             HttpServletRequest request) {
  295.         if (isNeedValidate(field, request)) {
  296.             return FieldChecks.validateMinLength(bean, va, field, errors,
  297.                     validator, request);
  298.         } else {
  299.             return true;
  300.         }
  301.     }
  302.     
  303.     public static boolean validateUrl(Object bean,
  304.              ValidatorAction va, Field field,
  305.              ActionMessages errors,
  306.              Validator validator,
  307.              HttpServletRequest request) {
  308.         if (isNeedValidate(field, request)) {
  309.             return FieldChecks.validateUrl(bean, va, field, errors,
  310.                     validator, request);
  311.         } else {
  312.             return true;
  313.         }
  314.      }
  315. }

2. 修改validate-rules.xml,使用自定义的字段验证类:

 

  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. <form-validation>
  5.    <global>
  6.       <validator name="required"
  7.             classname="com.qiujy.web.validator.MyFieldChecks"
  8.                method="validateRequired"
  9.          methodParams="java.lang.Object,
  10.                        org.apache.commons.validator.ValidatorAction,
  11.                        org.apache.commons.validator.Field,
  12.                        org.apache.struts.action.ActionMessages,
  13.                        org.apache.commons.validator.Validator,
  14.                        javax.servlet.http.HttpServletRequest"
  15.                   msg="errors.required"/>
  16.       <validator name="requiredif"
  17.                  classname="com.qiujy.web.validator.MyFieldChecks"
  18.                  method="validateRequiredIf"
  19.                  methodParams="java.lang.Object,
  20.                                org.apache.commons.validator.ValidatorAction,
  21.                                org.apache.commons.validator.Field,
  22.                                org.apache.struts.action.ActionMessages,
  23.                                org.apache.commons.validator.Validator,
  24.                                javax.servlet.http.HttpServletRequest"
  25.                  msg="errors.required"/>
  26.       <validator name="validwhen"
  27.           msg="errors.required"
  28.                  classname="org.apache.struts.validator.validwhen.ValidWhen"
  29.                  method="validateValidWhen"
  30.                  methodParams="java.lang.Object,
  31.                        org.apache.commons.validator.ValidatorAction,
  32.                        org.apache.commons.validator.Field,
  33.                        org.apache.struts.action.ActionMessages,
  34.                        org.apache.commons.validator.Validator,
  35.                        javax.servlet.http.HttpServletRequest"/>
  36.       <validator name="minlength"
  37.             classname="com.qiujy.web.validator.MyFieldChecks"
  38.                method="validateMinLength"
  39.          methodParams="java.lang.Object,
  40.                        org.apache.commons.validator.ValidatorAction,
  41.                        org.apache.commons.validator.Field,
  42.                        org.apache.struts.action.ActionMessages,
  43.                        org.apache.commons.validator.Validator,
  44.                        javax.servlet.http.HttpServletRequest"
  45.               depends=""
  46.                   msg="errors.minlength"
  47.            jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
  48.       <validator name="maxlength"
  49.             classname="com.qiujy.web.validator.MyFieldChecks"
  50.                method="validateMaxLength"
  51.          methodParams="java.lang.Object,
  52.                        org.apache.commons.validator.ValidatorAction,
  53.                        org.apache.commons.validator.Field,
  54.                        org.apache.struts.action.ActionMessages,
  55.                        org.apache.commons.validator.Validator,
  56.                        javax.servlet.http.HttpServletRequest"
  57.               depends=""
  58.                   msg="errors.maxlength"
  59.            jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
  60.       <validator name="mask"
  61.             classname="com.qiujy.web.validator.MyFieldChecks"
  62.                method="validateMask"
  63.          methodParams="java.lang.Object,
  64.                        org.apache.commons.validator.ValidatorAction,
  65.                        org.apache.commons.validator.Field,
  66.                        org.apache.struts.action.ActionMessages,
  67.                        org.apache.commons.validator.Validator,
  68.                        javax.servlet.http.HttpServletRequest"
  69.               depends=""
  70.                   msg="errors.invalid"/>
  71.       <validator name="byte"
  72.             classname="com.qiujy.web.validator.MyFieldChecks"
  73.                method="validateByte"
  74.          methodParams="java.lang.Object,
  75.                        org.apache.commons.validator.ValidatorAction,
  76.                        org.apache.commons.validator.Field,
  77.                        org.apache.struts.action.ActionMessages,
  78.                        org.apache.commons.validator.Validator,
  79.                        javax.servlet.http.HttpServletRequest"
  80.               depends=""
  81.                   msg="errors.byte"
  82.        jsFunctionName="ByteValidations"/>
  83.       <validator name="short"
  84.             classname="com.qiujy.web.validator.MyFieldChecks"
  85.                method="validateShort"
  86.          methodParams="java.lang.Object,
  87.                        org.apache.commons.validator.ValidatorAction,
  88.                        org.apache.commons.validator.Field,
  89.                        org.apache.struts.action.ActionMessages,
  90.                        org.apache.commons.validator.Validator,
  91.                        javax.servlet.http.HttpServletRequest"
  92.               depends=""
  93.                   msg="errors.short"
  94.        jsFunctionName="ShortValidations"/>
  95.       <validator name="integer"
  96.             classname="com.qiujy.web.validator.MyFieldChecks"
  97.                method="validateInteger"
  98.          methodParams="java.lang.Object,
  99.                        org.apache.commons.validator.ValidatorAction,
  100.                        org.apache.commons.validator.Field,
  101.                        org.apache.struts.action.ActionMessages,
  102.                        org.apache.commons.validator.Validator,
  103.                        javax.servlet.http.HttpServletRequest"
  104.               depends=""
  105.                   msg="errors.integer"
  106.        jsFunctionName="IntegerValidations"/>
  107.       <validator name="long"
  108.             classname="com.qiujy.web.validator.MyFieldChecks"
  109.                method="validateLong"
  110.          methodParams="java.lang.Object,
  111.                        org.apache.commons.validator.ValidatorAction,
  112.                        org.apache.commons.validator.Field,
  113.                        org.apache.struts.action.ActionMessages,
  114.                        org.apache.commons.validator.Validator,
  115.                        javax.servlet.http.HttpServletRequest"
  116.               depends=""
  117.                   msg="errors.long"/>
  118.       <validator name="float"
  119.             classname="com.qiujy.web.validator.MyFieldChecks"
  120.                method="validateFloat"
  121.          methodParams="java.lang.Object,
  122.                        org.apache.commons.validator.ValidatorAction,
  123.                        org.apache.commons.validator.Field,
  124.                        org.apache.struts.action.ActionMessages,
  125.                        org.apache.commons.validator.Validator,
  126.                        javax.servlet.http.HttpServletRequest"
  127.               depends=""
  128.                   msg="errors.float"
  129.        jsFunctionName="FloatValidations"/>
  130.       <validator name="double"
  131.             classname="com.qiujy.web.validator.MyFieldChecks"
  132.                method="validateDouble"
  133.          methodParams="java.lang.Object,
  134.                        org.apache.commons.validator.ValidatorAction,
  135.                        org.apache.commons.validator.Field,
  136.                        org.apache.struts.action.ActionMessages,
  137.                        org.apache.commons.validator.Validator,
  138.                        javax.servlet.http.HttpServletRequest"
  139.               depends=""
  140.                   msg="errors.double"/>
  141.       <validator name="date"
  142.             classname="com.qiujy.web.validator.MyFieldChecks"
  143.                method="validateDate"
  144.          methodParams="java.lang.Object,
  145.                        org.apache.commons.validator.ValidatorAction,
  146.                        org.apache.commons.validator.Field,
  147.                        org.apache.struts.action.ActionMessages,
  148.                        org.apache.commons.validator.Validator,
  149.                        javax.servlet.http.HttpServletRequest"
  150.               depends=""
  151.                   msg="errors.date"
  152.        jsFunctionName="DateValidations"/>
  153.       <validator name="intRange"
  154.             classname="com.qiujy.web.validator.MyFieldChecks"
  155.                method="validateIntRange"
  156.          methodParams="java.lang.Object,
  157.                        org.apache.commons.validator.ValidatorAction,
  158.                        org.apache.commons.validator.Field,
  159.                        org.apache.struts.action.ActionMessages,
  160.                        org.apache.commons.validator.Validator,
  161.                        javax.servlet.http.HttpServletRequest"
  162.               depends="integer"
  163.                   msg="errors.range"/>
  164.       <validator name="floatRange"
  165.             classname="com.qiujy.web.validator.MyFieldChecks"
  166.                method="validateFloatRange"
  167.          methodParams="java.lang.Object,
  168.                        org.apache.commons.validator.ValidatorAction,
  169.                        org.apache.commons.validator.Field,
  170.                        org.apache.struts.action.ActionMessages,
  171.                        org.apache.commons.validator.Validator,
  172.                        javax.servlet.http.HttpServletRequest"
  173.               depends="float"
  174.                   msg="errors.range"/>
  175.       <validator name="doubleRange"
  176.             classname="com.qiujy.web.validator.MyFieldChecks"
  177.                method="validateDoubleRange"
  178.          methodParams="java.lang.Object,
  179.                        org.apache.commons.validator.ValidatorAction,
  180.                        org.apache.commons.validator.Field,
  181.                        org.apache.struts.action.ActionMessages,
  182.                        org.apache.commons.validator.Validator,
  183.                        javax.servlet.http.HttpServletRequest"
  184.               depends="double"
  185.                   msg="errors.range"/>
  186.       <validator name="creditCard"
  187.             classname="com.qiujy.web.validator.MyFieldChecks"
  188.                method="validateCreditCard"
  189.          methodParams="java.lang.Object,
  190.                        org.apache.commons.validator.ValidatorAction,
  191.                        org.apache.commons.validator.Field,
  192.                        org.apache.struts.action.ActionMessages,
  193.                        org.apache.commons.validator.Validator,
  194.                        javax.servlet.http.HttpServletRequest"
  195.               depends=""
  196.                   msg="errors.creditcard"/>
  197.       <validator name="email"
  198.             classname="com.qiujy.web.validator.MyFieldChecks"
  199.                method="validateEmail"
  200.          methodParams="java.lang.Object,
  201.                        org.apache.commons.validator.ValidatorAction,
  202.                        org.apache.commons.validator.Field,
  203.                        org.apache.struts.action.ActionMessages,
  204.                        org.apache.commons.validator.Validator,
  205.                        javax.servlet.http.HttpServletRequest"
  206.               depends=""
  207.                   msg="errors.email"/>
  208.       <validator name="url"
  209.             classname="com.qiujy.web.validator.MyFieldChecks"
  210.                method="validateUrl"
  211.          methodParams="java.lang.Object,
  212.                        org.apache.commons.validator.ValidatorAction,
  213.                        org.apache.commons.validator.Field,
  214.                        org.apache.struts.action.ActionMessages,
  215.                        org.apache.commons.validator.Validator,
  216.                        javax.servlet.http.HttpServletRequest"
  217.               depends=""
  218.                   msg="errors.url"/>
  219.      <!--
  220.        This simply allows struts to include the validateUtilities into a page, it should
  221.        not be used as a validation rule.
  222.      -->
  223.      <validator name="includeJavaScriptUtilities"
  224.             classname=""
  225.                method=""
  226.          methodParams=""
  227.               depends=""
  228.                   msg=""
  229.            jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
  230.    </global>
  231. </form-validation>

   注意观察,验证字段使用的类。

 

3.配置具体的验证规则validation.xml:

 

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE form-validation PUBLIC
  3.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
  4.           "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
  5. <form-validation>
  6.     <formset>
  7.         <form name="/user">
  8.             <field property="username" page="" depends="required">
  9.                 <arg0 key="login.username" />
  10.                 <var>
  11.                     <var-name>methodsNeedValidation</var-name>
  12.                     <var-value>login,registe</var-value>
  13.                 </var>
  14.             </field>
  15.             <field property="pwd" depends="required,mask">
  16.                 <arg0 key="login.pwd" />
  17.                 <var>
  18.                     <var-name>mask</var-name>
  19.                     <var-value>^/w{3,}$</var-value>
  20.                 </var>
  21.                 <var>
  22.                     <var-name>methodsNeedValidation</var-name>
  23.                     <var-value>login,registe</var-value>
  24.                 </var>
  25.             </field>
  26.             <field property="pwd2" depends="required,mask">
  27.                 <arg0 key="login.pwd" />
  28.                 <var>
  29.                     <var-name>mask</var-name>
  30.                     <var-value>^/w{3,}$</var-value>
  31.                 </var>
  32.                 <var>
  33.                     <var-name>methodsNeedValidation</var-name>
  34.                     <var-value>registe</var-value>
  35.                 </var>
  36.             </field>
  37.         </form>
  38.     </formset>
  39. </form-validation>

4.struts-config.xml文件

 

  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE struts-config PUBLIC
  3.           "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
  4.           "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
  5. <struts-config>
  6.     <form-beans>
  7.         <form-bean name="myForm"
  8.             type="com.qiujy.web.formbeans.UserForm" />
  9.     </form-beans>
  10.     
  11.     <!-- =========================================== Action Mapping Definitions -->
  12.     <action-mappings>
  13.         <action path="/user" 
  14.                       type="com.qiujy.web.actions.UserAction"
  15.                         name="myForm" 
  16.                         scope="request" 
  17.                         validate="true" 
  18.                         parameter="method"
  19.                         input="/validate_failure.jsp">
  20.             <forward name="success" path="/success.jsp"></forward>
  21.             <forward name="failure" path="/failure.jsp"></forward>
  22.         </action>
  23.     </action-mappings>
  24.     <!-- ======================================== Message Resources Definitions -->
  25.     <message-resources parameter="MessageResources" />
  26.     <!-- =================================================== Validator plugin -->
  27.     <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  28.         <set-property property="pathnames"
  29.             value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
  30.     </plug-in>
  31. </struts-config>

5.UserAction类

 

 

  1. /**
  2.  * Filename: LoginAction.java
  3.  * Author: qiujy
  4.  * Createtime:Nov 6, 2008
  5.  * Copyrights 2008 qjyong All rights reserved.
  6.  * EMail: qjyong(a)gmail.com
  7.  */
  8. package com.qiujy.web.actions;
  9. import java.util.Date;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import org.apache.struts.action.ActionForm;
  13. import org.apache.struts.action.ActionForward;
  14. import org.apache.struts.action.ActionMapping;
  15. import com.qiujy.entity.User;
  16. import com.qiujy.service.UserService;
  17. import com.qiujy.web.formbeans.UserForm;
  18. /**
  19.  * @author qiujy
  20.  */
  21. public class UserAction extends BaseAction {
  22.     public ActionForward login(ActionMapping mapping, 
  23.             ActionForm form,
  24.             HttpServletRequest request, 
  25.             HttpServletResponse response)
  26.             throws Exception {
  27.         
  28.         //step1:接收用户的请求数据
  29.         UserForm myForm = (UserForm)form;
  30.         String username = myForm.getUsername();
  31.         String pwd = myForm.getPwd();
  32.         
  33.         //step2:调用业务逻辑类处理请求
  34.         UserService service = new UserService();
  35.         boolean flag = service.validate(username, pwd);
  36.     
  37.         //step3: 返回响应
  38.         if(flag){
  39.             //如果没有对应的forward页面,将返回一个空白页面给客户端
  40.             return mapping.findForward("success");
  41.         }else{
  42.             return mapping.findForward("failure");
  43.         }
  44.         
  45.     }
  46.     
  47.     public ActionForward registe(ActionMapping mapping, 
  48.             ActionForm form,
  49.             HttpServletRequest request, 
  50.             HttpServletResponse response)
  51.             throws Exception {
  52.         UserForm rf = (UserForm)form;
  53.         String username = rf.getUsername();
  54.         String pwd = rf.getPwd();
  55.         String email = rf.getEmail();
  56.         
  57.         User user = new User();
  58.         user.setUsername(username);
  59.         user.setPwd(pwd);
  60.         user.setEmail(email);
  61.         user.setDescription("");
  62.         user.setRegitedTime(new Date());
  63.         
  64.         UserService service = new UserService();
  65.         try{
  66.             service.addUser(user);
  67.             return mapping.findForward("success") ;
  68.         }catch(RuntimeException re){
  69.             re.printStackTrace();
  70.             return mapping.findForward("failure");
  71.         }
  72.     }
  73. }

6.UserForm类

 

  1. /**
  2.  * Filename: RegisteForm.java
  3.  * Author: qiujy
  4.  * Createtime:Nov 6, 2008
  5.  * Copyrights 2008 qjyong All rights reserved.
  6.  * EMail: qjyong(a)gmail.com
  7.  */
  8. package com.qiujy.web.formbeans;
  9. import org.apache.struts.validator.ValidatorActionForm;
  10. /**
  11.  * 用户表单Bean
  12.  * @author qiujy
  13.  */
  14. public class UserForm extends ValidatorActionForm {
  15.     private static final long serialVersionUID = 1975878283533257467L;
  16.     private String username;
  17.     private String pwd;
  18.     private String pwd2;
  19.     private String email;
  20.     
  21.     public String getUsername() {
  22.         return username;
  23.     }
  24.     public void setUsername(String username) {
  25.         this.username = username;
  26.     }
  27.     public String getPwd() {
  28.         return pwd;
  29.     }
  30.     public void setPwd(String pwd) {
  31.         this.pwd = pwd;
  32.     }
  33.     public String getPwd2() {
  34.         return pwd2;
  35.     }
  36.     public void setPwd2(String pwd2) {
  37.         this.pwd2 = pwd2;
  38.     }
  39.     public String getEmail() {
  40.         return email;
  41.     }
  42.     public void setEmail(String email) {
  43.         this.email = email;
  44.     }
  45. }

7.页面及资源文件略。具体参见示例程序代码。到我的资源库去下载。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值