Struts2数据校验(1)--通过Action的validate()方法校验

Struts2数据校验

数据校验分为客户端校验和服务器端校验,客户端校验是指通过JavaScript或jQuery等前端手段,对提交前的数据进行一些格式的校验;服务器校验是指服务器端通过检查客户端的提交信息是否符合要求。这里主要讲解的是服务器端校验。

在Struts2中服务器端校验有两种方式:通过Action的validate()方法校验和使用XWork检验框架实现校验。

1.通过Action的validate()方法校验

Struts2提供了一个com.opensymphony.xwork2.Validateable接口,通过实现该接口中的validate()方法,我们可以把校验输入信息的代码写入到validate()方法里

         ActionSupport类就实现了Validateable接口,因此,我们的Action只要继承了ActionSupport类,就可以通过重写validate()方法,在validate()方法中进行输入信息的校验。

         validate()方法会对Action中所有处理逻辑实现相同的校验规则进行数据校验。

         validateX()方法可以精确的对Action中的某一个方法进行校验,其中X表示处理逻辑的方法名。

注意:validate()方法在execute()(也可以是其他方法)方法前被执行,仅当数据校验正确,才执行execute()方法,如果校验出错,则将错误信息添加到ActionSupport类的fieldErrors域中,再在JSP页面中输出。

示例如下:

(1)编写输入信息页面register.jsp,核心代码如下(需要引入struts-tags):

<body>

<s:fielderror />

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

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

年龄:<input type="text" name="age" /><br>

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

</form>

</body>

(2)编写继承了ActionSupport类的Action:

publicclass RegisterAction extends ActionSupport {

    private String name;

    privateintage;

    @Override

    public String execute() throws Exception {

        return"hello";

    }

    public String register(){

        return"hello";

    }

    @Override

    publicvoid validate() {

        System.out.println("这里是validate()方法");

    }

    publicvoid validateRegister() {

        System.out.println("这里是validateRegister()方法");

        if(name==null||name.length()<=0){

            addFieldError("name", "姓名不能为空");

        }

        if(age<=0||age>150){

            addFieldError("age", "年龄输入错误");

        }

    }

    public String getName() {

        returnname;

    }

    publicvoid setName(String name) {

        this.name = name;

    }

    publicint getAge() {

        returnage;

    }

    publicvoid setAge(intage) {

        this.age = age;

    }

}

(3)在struts.xml中注册Action:

<action name="register" class="com.chen.action.RegisterAction" method="register">

            <result name="input">/register.jsp</result>

            <result name="hello">/show.jsp</result>

</action>

(4)注册成功后,显示用户信息show.jsp,核心代码如下

<body>

${name}<br>

${age}

</body>

         通过运行可以看到validateX()方法在validate()方法前面调用。一般来说,在调用Action的某个业务逻辑处理方法前,会先查看有没有与该处理逻辑对应的validateX()方法

,然后在查看validate()方法。

       如果数据校验时出现了错误信息,Struts2框架就不会在调用业务逻辑处理了,而是转到struts.xml文件中找到该Action对应的name属性为input的result,进入该元素指定的视图中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值