Struts2输入校验

在struts2中可以对action中的所有方法实现校验,也可以针对指定方法进行校验。

Struts2中实现上述的校验又可以分为手动编写代码实现和配置xml文件方法

手动编写代码校验

a.对所有和execute方法签名相同的方法进行校验

通过重写validate() 方法实现

 validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result--此result用于返回到用户输入界面。在input视图中可以通过<s:fielderror/>显示失败信息。

Validate例子:

 public void validate() {
     // TODOAuto-generated method stub
     // 输入校验
     if (userName == null || "".equals(userName) || userName.length()< 5) {
     this.addFieldError(userName, "用户名不能为空或长度不足5位!");
     }
     if (email == null || "".equals(email) || email.indexOf("@") < 1
     || email.lastIndexOf(".") < 2
     || email.indexOf("@") > email.lastIndexOf(".")) {
     this.addFieldError(email, "邮箱格式不正确!");
     }
     // 创建正则表达式格式编译
     Patternper = Pattern.compile("^1[358][0-9]{9}$");
     // 返回是否匹配成功
     boolean isok = per.matcher(mobile).matches();
     if (!isok) {
     this.addFieldError(mobile, "手机号码格式不正确!");
     }
     super.validate();
     }

验证失败后,请求转发至input视图:

<resultname="input">/WEB-INF/page/addUser.jsp</result>

在addUser.jsp页面中使用<s:fielderror/>显示失败信息。

前提是要先在jsp页面头部引入struts标签

<%@ taglib uri="/struts-tags"prefix="s" %>

b.对action指定方法输入校验

通过validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。

如果action中有个login(方法需要小写)的方法,校验的时候只需要对login()方法进行校验,则可以定义validateLogin()方法填写响应的校验代码

在上面的例子中如果是只对登录进行校验就可以将validate()方法的名字改为validateLogin()就可以了其他的都不需要改变了

xml配置校验

a.     xml配置对所有方法进行校验

  使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml

其中ActionClassName为action的简单类名,-validation为固定写法。如果Action类为action.UserAction,那么该文件的取名应为:UserAction-validation.xml。

下面是校验文件的模版:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC"-//OpenSymphony Group//XWork Validator1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
各种校验器
</validators>

regex:正则表达式校验器 在xml中的正则需要使用<![CDATA[正则表达式]]>包含

<field name="mobile">   name为需要校验的字段属性
        <field-validator type="regex">  type表示校验的类型
           <param name="expression"><![CDATA[^1[358][0-9]{9}$]]></param>
            <message>手机格式不正确!</message>   //保存错误的信息
        </field-validator>
</field>
email:邮件地址校验器
    <field name="email">   name为需要校验的字段属性
        <field-validator type="email">
            <message>email格式不正确!</message>
        </field-validator>
    </field>

b.Xml配置对指定方法进行校验

当校验文件的取名为ActionClassName-validation.xml时,会对 action中的所有处理方法实施输入验证。如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称

总结:这和上面的xml配置校验所有的方法很类似,xml文件也是创建在校验类的包中只是xml文件的名字去的和action中需要校验的方法有关而已,比如在struts.xml中有

<actionname="user_*" class="action.UserAction" method="{1}“ >
       <resultname="success">/message.jsp</result>
       <result name="input">/addUser.jsp</result>
</action>
UserAction中有以下两个处理方法:
public String add()throws Exception{ 
}
public String update()throws Exception{
}

要对add()方法实施验证,校验文件的取名为: UserAction-user_add-validation.xml

要对update()方法实施验证,校验文件的取名为: UserAction-user_update-validation.xml

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值