Struts(四)validator框架的应用

 现建立一个WEB工程validato,然后在工程中选中add struts;在1.2版本的!将包名改为com.validator,
这样系统自动生成了struts的配置文件!
在struts-config.xml的Design模式下添加一个form,
Use case:reguser;
Name:UserForm;
Superclass:org.apache.struts.action.ActionForm;
Form type:com.validator.form.UserForm;
Form Properties:添加name和password两个属性;记着password的属性是password类型的.
在JSP中,New JSP Path:/WEB-INF/page/reguser.jsp
 下面接着在struts-config.xml的Design模式下添加一个与form相关联的action,
Use case:reguser;
Path:/RegUser;
Superclass:org.apache.struts.action.Action;
Type:com.validator.action.RegUserAction
form的neme:UserForm,Attribute:UserForm,Scope:request.
Input Source:/WEB-INF/page/reguser.jsp
paramter:validator;
Forward下的Name:success,Path:/WEB-INF/page/main.jsp;Name:failure,Path:/WEB-INF/page/reguser.jsp
这样子action也添加好了!
现在在建一个独立的action
下面接着在struts-config.xml的Design模式下添加一个与form无关联的action,并在其design
Use case:reguser;
Path:/RegUserUI;
Superclass:org.apache.struts.action.Action;
Type:com.validator.action.RegUserUIAction,
然后在design模式下的action上添加一个forward,选中Local Action Forward,
Action Path:/RegUserUI,Name:success,Path:/WEB-INF/page/reguser.jsp.
添加三个properties国际资源包文件:
ApplicationResources.properties
button.cancel=Cancel
button.confirm=Confirm
button.reset=Reset
button.save=Save
change.message=Your password has expired.  Please ask the system administrator to change it.
change.try=Try Again
change.title=Password Has Expired
database.load=Cannot load database from {0}
error.database.missing=User database is missing, cannot validate logon credentials
error.fromAddress.format=Invalid format for From Address
error.fromAddress.required=From Address is required
error.fullName.required=Full Name is required
error.host.required=Mail Server is required
error.noSubscription=No Subscription bean in user session
error.password.expired=Your password has expired for username {0}
error.password.required=Password is required
error.password2.required=Confirmation password is required
error.password.match=Password and confirmation password must match
error.password.mismatch=Invalid username and/or password, please try again
error.replyToAddress.format=Invalid format for Reply To Address
error.transaction.token=Cannot submit this form out of order
error.type.invalid=Server Type must be 'imap' or 'pop3'
error.type.required=Server Type is required
error.username.required=Username is required
error.username.unique=That username is already in use - please select another
errors.footer=</ul><hr>
errors.header=<h3><font color="red">Validation Error</font></h3><p>You must correct the following error(s) before proceeding:</p><ul>
errors.prefix=<li>
errors.suffix=</li>
errors.ioException=I/O exception rendering error messages: {0}
expired.password=User Password has expired for {0}
heading.autoConnect=Auto
heading.subscriptions=Current Subscriptions
heading.host=Host Name
heading.user=User Name
heading.type=Server Type
heading.action=Action
index.heading=MailReader Demonstration Application Options
index.logon=Log on to the MailReader Demonstration Application
index.registration=Register with the MailReader Demonstration Application
index.title=MailReader Demonstration Application (Struts 1.2.1-dev)
index.tour=A Walking Tour of the MailReader Demonstration Application
linkSubscription.io=I/O Error: {0}
linkSubscription.noSubscription=No subscription under attribute {0}
linkUser.io=I/O Error: {0}
linkUser.noUser=No user under attribute {0}
logon.title=MailReader Demonstration Application - Logon
mainMenu.heading=Main Menu Options for
mainMenu.logoff=Log off MailReader Demonstration Application
mainMenu.registration=Edit your user registration profile
mainMenu.title=MailReader Demonstration Application - Main Menu
option.imap=IMAP Protocol
option.pop3=POP3 Protocol
prompt.autoConnect=Auto Connect
prompt.fromAddress=From Address
prompt.fullName=Full Name
prompt.mailHostname=Mail Server
prompt.mailPassword=Mail Password
prompt.mailServerType=Server Type
prompt.mailUsername=Mail Username
prompt.password=Password
prompt.password2=(Repeat) Password
prompt.replyToAddress=Reply To Address
prompt.username=Username
registration.addSubscription=Add
registration.deleteSubscription=Delete
registration.editSubscription=Edit
registration.title.create=Register for the MailReader Demonstration Application
registration.title.edit=Edit Registration for the MailReader Demonstration Application
subscription.title.create=Create New Mail Subscription
subscription.title.delete=Delete Existing Mail Subscription
subscription.title.edit=Edit Existing Mail Subscription

# Standard error messages for validator framework checks
errors.required={0} is required.
errors.minlength={0} cannot be less than {1} characters.
errors.maxlength={0} cannot be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.

ApplicationResources_en.properties
button.cancel=Cancel
button.confirm=Confirm
button.reset=Reset
button.save=Save

errors.footer=</ul><hr>
errors.header=<h3><font color="red">Validation Error</font></h3><p>You must correct the following error(s) before proceeding:</p><ul>
errors.prefix=<li>
errors.suffix=</li>

prompt.username=Username
prompt.password=Password
prompt.password2=(Repeat) Password
prompt.birthday=birthday
prompt.age=age

# Standard error messages for validator framework checks
errors.required={0} is required.
errors.minlength={0} cannot be less than {1} characters.
errors.maxlength={0} cannot be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.

ApplicationResources_zh_CN.properties
button.cancel=/u53D6/u6D88
button.confirm=/u786E/u8BA4
button.reset=/u91CD/u7F6E
button.save=/u4FDD/u5B58

errors.footer=</ul><hr>
errors.header=<h3><font color/="red">/u6821/u9A8C/u9519/u8BEF</font></h3><p>/u4F60/u5FC5/u987B/u4FEE/u6B63/u4E0B/u9762/u7684/u9519/u8BEF/uFF0C/u624D/u80FD/u7EE7/u7EED/u64CD/u4F5C</p><ul>
errors.prefix=<li>
errors.suffix=</li>


prompt.username=/u7528/u6237/u540D
prompt.password=/u5BC6/u7801
prompt.password2=/u786E/u8BA4/u5BC6/u7801
prompt.birthday=/u751F/u65E5
prompt.age=/u5E74/u9F84
prompt.email=/u4F0A/u59B9/u513F

# Standard error messages for validator framework checks
errors.required={0} /u662F/u5FC5/u987B/u7684.
errors.minlength={0} /u4E0D/u80FD/u5C11/u4E8E {1} /u5B57/u7B26.
errors.maxlength={0} /u4E0D/u80FD/u591A/u4E8E {1} /u5B57/u7B26.
errors.invalid={0} /u65E0/u6548.
errors.byte={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u5B57/u8282/u7C7B/u578B/u7684/u6574/u6570.
errors.short={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u77ED/u6574/u578B/u6570/u636E.
errors.integer={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u6574/u6570.
errors.long={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u957F/u6574/u6570.
errors.float={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u6D6E/u70B9/u7C7B/u578B/u7684/u5C0F/u6570.
errors.double={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u53CC/u7CBE/u5EA6/u7C7B/u578B/u7684/u5C0F/u6570.
errors.date={0} /u5FC5/u987B/u662F/u4E00/u4E2A/u65E5/u671F/u7C7B/u578B/u7684/u6570/u636E.
errors.range={0} /u5FC5/u987B/u4F4D/u4E8E {1} /u548C {2}/u4E4B/u95F4.
errors.creditcard={0} /u4E0D/u662F/u4E00/u4E2A/u6709/u6548/u7684/u4FE1/u7528/u5361/u53F7.
errors.email={0} /u662F/u4E00/u4E2A/u65E0/u6548/u7684e-mail/u5730/u5740.
errors.password2=must equals to password!
 将validation.xml,validator-rules.xml文件添加到/WEB-INF/下:
 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
   <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
   <set-property property="stopOnFirstError" value="false"/>  //这段代码视为短路的意思
  </plug-in>
先添加一个UserForm.java:
package cn.itcast.validatordemo.form;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.Globals;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.util.MessageResources;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.validator.ValidatorActionForm;
import org.apache.struts.validator.ValidatorForm;
public class UserForm extends ValidatorActionForm {
 

 private String password;
 private String name;
 private String email;
 private String birthday;
 private String password2;
 private String idcard;
 
 public String getIdcard() {
  return idcard;
 }

 public void setIdcard(String idcard) {
  this.idcard = idcard;
 }

 public String getPassword2() {
  return password2;
 }

 public void setPassword2(String password2) {
  this.password2 = password2;
 }

 public String getBirthday() {
  return birthday;
 }

 public void setBirthday(String birthday) {
  this.birthday = birthday;
 }


 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }
}
下面是2个 Action.
RegUserAction.java
package cn.itcast.validatordemo.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cn.itcast.validatordemo.form.UserForm;

public class RegUserAction extends Action {
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
  return null;
 }
}
RegUserUIAction
package cn.itcast.validatordemo.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class RegUserUIAction extends Action {
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  // TODO Auto-generated method stub
  return mapping.findForward("success");
 }
}
下面都是相关联的xml文档.
struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="userForm" type="cn.itcast.validatordemo.form.UserForm" />
  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="userForm"
      input="/WEB-INF/page/reguser.jsp"
      name="userForm"
      parameter="xxx"
      path="/RegUser"
      scope="request"
      type="cn.itcast.validatordemo.action.RegUserAction">
      <forward name="success" path="/WEB-INF/page/main.jsp" />
      <forward name="failure" path="/WEB-INF/page/reguser.jsp" />
    </action>
    <action
      path="/RegUserUI"
      type="cn.itcast.validatordemo.action.RegUserUIAction"
      validate="false" >
      <forward name="success" path="/WEB-INF/page/reguser.jsp" />
    </action>
   

  </action-mappings>

  <message-resources parameter="cn.itcast.validatordemo.ApplicationResources" />
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
   <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
   <set-property property="stopOnFirstError" value="true"/>
  </plug-in>
</struts-config>

validation.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<!--
    Validation Rules for the Struts Example Web Application

    $Id: validation.xml 51719 2004-09-03 04:38:57Z niallp $
-->

<form-validation>
 <global>
  <constant>
   <constant-name>mytest</constant-name>
   <constant-value>(*this* == password)</constant-value>
  </constant>
 </global>
         
        <form name="/RegUser">

            <field property="name"
                    depends="required">
                <arg   key="prompt.username"/>
            </field>

            <field property="password"
                    depends="required, minlength,maxlength">
                <arg   key="prompt.password" position="0"/>
                <arg   key="${var:minlength}" name="minlength"
                   resource="false" position="1"/>
                <arg   key="${var:maxlength}" name="maxlength"
                   resource="false" position="1"/>
                <var>
                    <var-name>maxlength</var-name>
                    <var-value>7</var-value>
                </var>
                <var>
                    <var-name>minlength</var-name>
                    <var-value>4</var-value>
                </var>
            </field>
           
            <field property="password2"
                    depends="required,validwhen">
                    <msg key="errors.password2" name="validwhen"/>
                    <arg key="prompt.password2" position="0" />
         <var>
           <var-name>test</var-name>
           <var-value>${mytest}</var-value>
         </var>
           </field>        
                               
            <field property="email"
                    depends="email">
                <arg   key="prompt.email"/>
            </field>
             <field property="birthday"
                    depends="date">
                <arg   key="prompt.birthday"/>
    <var>
     <var-name>datePattern</var-name>
     <var-value>yyyy-MM-dd</var-value>
    </var>
               
            </field> 
            <field property="idcard"
                    depends="required,idcard">
                <arg   key="prompt.idcard"/>
            </field>                    
        </form>
    </formset>
</form-validation>
validator-rules.xml和web.xml都是调用的源文件所以代码就不附上!

reguser.jsp页面代码:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
 <head>
  <title>JSP for UserForm form</title>
  <%--
  <html:javascript formName="/RegUser" />
  --%>
 </head>
 <body>
  <%--
  <html:form action="/RegUser" οnsubmit="return validateUserForm(this)">
  --%>
  <html:form action="/RegUser"> 
   
   name : <html:text property="name"/><html:errors property="name"  header="" footer="" prefix="" suffix=""/><br/>
   password : <html:password property="password"/><html:errors property="password"  header="" footer="" prefix="" suffix=""/><br/>
   password2 : <html:password property="password2"/><html:errors property="password2"  header="" footer="" prefix="" suffix=""/><br/>
   email : <html:text property="email"/><html:errors property="email"  header="" footer="" prefix="" suffix=""/><br/>
          birthday : <html:text property="birthday"/><html:errors property="birthday"  header="" footer="" prefix="" suffix=""/><br/>
          idcard : <html:text property="idcard"/><html:errors property="idcard"  header="" footer="" prefix="" suffix=""/><br/>

   <html:submit/><html:cancel/>
  </html:form>
 </body>
</html>
main.jsp作为成功的页码,不作详尽的解释.
就这么的一个项目,张老师就花了1天的时间来给我们讲解,其实从上面的代码可以看出,我们并没有写多少的代码,这样可以看出validator框架的强大之处,
而我们的最厉害之处是能够活用它,而张老师做为牛人,他已将这个validator框架剖析的非常的透彻了。张老师讲了一天就是在给我们分析源码的!
让我真正的了解validator框架的底层原理,使得我们在以后的运用中能够游刃有余!在分析代码时还给我们讲了许多细节,这里就不说了,不过呢,
这些天张老师讲的内容,不久可能将会以视频的方式与所以java爱好者见面的呢!期待吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值