Struts2验证

Struts2验证的意义:

1、 进行必要的格式检查

2、 防止非法数据进入业务系统,保证系统数据的完整

Struts2验证机制

Action组件要求实现Validateable接口,覆盖其validate()方法,编写有关验证代码

还要实现ValidationAware接口,该接口提供了添加错误消息的方法

addFieldError()

一般继承ActionSupport类,其实现了上述接口。

Struts2验证工作原理

workflow拦截器首先检查Action组件是否实现接口Validateable,如果实现,则调用其validate()进行验证,在验证中如果发现非法数据则创建错误消息并通过ValidationAware接口中方法存放该错误消息。当validate()执行完毕,workflow拦截器还要接着调用ValidationAware的hasErrors()方法,看是否有任何验证失败消息。如果有,则终止Action的执行而返回input结果。

 

在struts2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。

对于输入校验struts2提供了两种实现方法:

1.       采用手工编写代码实现。

创建一个jsp登录页面

<form action="${pageContext.request.contextPath}/login.action" method="post">

    用户名:<input type="text" name="name"/><br>

    密码:<input type="text" name="pass"/><br>

    <input type="submit" value="确定"/>

    </form>

 

去struts.xml文件中声明

<action name="login"class="cn.csdn.action.LoginAction" method="login">

           <result name="input">/WEB-INF/error.jsp</result>

           <result>/index.jsp</result>

    </action>

LoginAction.java文件:

private String name;

    private String pass;

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public String getPass() {

       return pass;

    }

    public void setPass(String pass) {

       this.pass = pass;

    }

    public LoginAction() {

       super();

       // TODO Auto-generatedconstructor stub

    }

   

    //进行校验

    //写了validate方法之后,会对所有的方法都进行校验

    public void validate (){

       if("".equals(name) || name==null){

           //添加错误信息

           this.addFieldError("msg", "用户名称不能为空");

       }

       if("".equals(pass) || pass==null){

           //添加错误信息

           this.addFieldError("msg", "密码不能为空");

       }

}

public String login() throws Exception {

       // TODO Auto-generatedmethod stub

       System.out.println("进行业务登录操纵的处理.......");

       return SUCCESS;

}

 

error.jsp

  <!--struts2的标签库  首先必须引入struts2的标签库 -->

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

在body中写入

     <s:fielderror></s:fielderror>即可

 

 

2. 基于XML配置方式实现。

在上述基础上,添加一个xml文件

LoginAction-validation.xml

<!DOCTYPE validators PUBLIC

        "-//ApacheStruts//XWork Validator 1.0.3//EN"

        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>

    <field name="name">

       <field-validator type="stringlength">

           <param name="trim">true</param>

           <param name="minLength">20</param>

           <param name="maxLength">30</param>

           <message>长度必须在20-30之间</message>

       </field-validator>

    </field>

    <field name="pass">

       <field-validator type="regex">

           <param name="trim">true</param>

           <param name="caseSensitive">true</param>

           <param name="expression"> <![CDATA[(\w{4,15})]]> </param>

           <message>必须是字符和数组的组合并且长度是4-15之间</message>

       </field-validator>

    </field>

</validators>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值