如何使用ValidatorForm进行服务器端验证

本文详细介绍了如何在Struts2框架下实现服务器端验证。首先在/WEB-INF目录下创建form.jsp,接着创建并配置ActionForm的子类 LoginForm。然后在struts-config.xml中配置Action和FormBean。在Validation.xml中定义验证规则,并在资源文件中设置错误消息。最后,通过ValidatorPlugIn插件和struts-config.xml的配置进行验证。别忘了在jsp页面添加<html:errors>标签来显示错误信息。

1.首先现在/WEB-INF/目录或子目录下面建立一个form.jsp(使用<html:form>)
  如果要使用<html:form>标记,需要导入<%@taglib uri = "/WEB-INF/struts-html.tld" prefix = "html"%>
2.现在先不要考虑其他的,先要把这个页面显示出来:
  1)
  a.要把表单的内容封装起来,我们要写一个继承ActionForm的类,即LoginForm .需要提供getXX()和setXX()方法。
  b.在里边要写一些需要封装起来的属性,属性的名字要和form.jsp的表单中每个内容的property一样

2) 配置struts-config.xml文件
a.要写一个继承Action的类ShowFormAction,作用是显示这个表单,需要重写execute()方法,只需要return arg0.findForward("success");
  a.写好以后要配置action
    <action path="/showForm" type ="action.ShowFormAction" name = "loginForm">
       <forward name="success" path="/WEB-INF/register/login_form.jsp"></forward>
    </action>
  b.要在<action-mappings>的上面写<form-beans><form-bean name = "loginForm" type = "form.FormLoginAction"/></form-beans>
  c.在写form.jsp时,要注意action ="XX" ,这个XX直要在配置文件中配置,我们在这里先写上showLoginForm.do
  d.要在上边的forward里加上name="loginForm",这个name的value就是在上边定义的form-bean 的name直
  到这里,这个页面就可以显示出来了,我的出来了,你的呢!可以给我个反馈么?
3.到这一步就可以开始进行加验证了
  1).将LoginForm继承的类改成ValidatorForm,这个类其它地方不用改动
  2)在/WEB-INF/目录下面新建一个XML文件,文件名字叫做Validation.xml
   a.在里边加上头部
      <?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">
   b.文件的格式可以使用模板
    <form-validation>
       <formset>
         <form name="userForm"> //这个名字就是在struts-config.xml中定义的
                          <field property="name" depends="required">//这个property 是form.jsp里的,depends表示需要添加的验证条件,这个是现成的,在validator-rules.xml里有定义
                                  <arg0 key="user.name" />这个key就是在资源文件里边定义的,required表示必须填
                          </field>
                          <field property="password" depends="required">//同上
                                  <arg0 key="user.start" />
                          </field>
                   </form>
       </formset>
     </form-validation>
   到这里xml文件配置完成,需要在资源文件里边写上你需要的key值
  c.在struts-config.xml里,需要添加一个action,就是你的form.jsp中的action地址
    <action path="/process" type ="action.ProcessAction" name = "loginForm" validate = "true" input = "/showForm.do">
       <forward name="success" path="/WEB-INF/register/login_form.jsp"></forward>
    </action>
         validate ="true"代表进行服务器端验证,input = "/showForm.do"代表验证失败要去的地方,他们是一对
         现在我们把form.jsp的action的地址改成"process.do",因为我们不想转到其它页面,可以把ProcessAction 的返回值写成return null;
  d.要在struts-config.xml文件中的最后一句之前(重点)加上
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
                <set-property property="pathnames"
                        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
        </plug-in>
  e.资源文件如何写:例子
     errors.required {0} must not null //required就是你在validation中定义的,代表必须填,如果没有出这个错误,{0}就是占位符的意思
     user.name name   //这个"name"就会代替{0}
     user.password password  //这个“password”就会代替{0}
f.在form.jsp文件中的每个需要验证的内容下面加上:<html:errors property ="name"/>,这个property 的值就是需要验证的东西的property
如果经常出现无效的参数异常就把服务器关了,在重启一下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值