Struts2服务器端的验证(验证框架)

一、struts2验证框架介绍

Struts2中提供了一套服务器端验证的框架,通过验证框架可以实现对数据数据的验证。

struts2是webwork演变而来的,其验证框架正是webwork的那一套东西。

二、数据验证的方式

1、在action里继承ActionSupport

这是最简单的方式,直接在action中实现validate()方法即可,在此方法中编写验证代码。

private String userName;
        private String account;
        private String pwd;
        private int age;
        //请求处理方法
        public String register(){
            System.out.println(this.toString());
            return Action.SUCCESS;
        }   
        @Override
        public void validate() {
            System.out.println("validate is do......");
            if(userName.length()<=0)
                this.addFieldError("userName", "用户名不能为空!!!");

            if(age<6 || age>10)
                this.addFieldError("age","年龄超出范围!!");
        }

配置文件:

<package name="user" extends="struts-default" namespace="/">
        <action name="reg" class="cn.wzk.action.UserAction" method="register">
            <result name="input">register.jsp</result>
            <result>index.jsp</result>
        </action>
    </package>

注意使用验证框架时action中result的name值需要提供input

Jsp页面

<%@ taglib prefix="s" uri="/struts-tags" %>
-------------------------------------------
    <s:fielderror />
    <form action="reg.action" method="post">
        <table>
            <tr>
                <th>姓名:</th>
                <td>
                    <input type="text" name="userName"/>
                </td>
            </tr>
            <tr>
                <th>账号:</th>
                <td>
                    <input type="text" name="account"/>
                </td>
            </tr>
            <tr>
                <th>密码:</th>
                <td>
                    <input type="text" name="pwd"/>
                </td>
            </tr>
            <tr>
                <th>年龄:</th>
                <td>
                    <input type="text" name="age"/>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" value="提交" />
                </td>
            </tr>
        </table>
    </form>

注意事项:

使用struts2标签时,web.xml配置文件中应将“*.action”改为“/*”

扩展方式

struts2中允许对不同的请求方法定义独立的验证方法。

实现

定义一个方法,方法名采用validate + 请求方法名()的形式进行验证方法的定义。定义过程中,请求方法名的首字母要大写。

public void validateRegister(){
    System.out.println("validateRegister is do......");
    if(userName.length()<=0)
        this.addFieldError("userName", "用户名不能为空!!!");

    if(age<6 || age>10)
        this.addFieldError("age","年龄超出范围!!");
}
执行过程

validateRegister—–>validate—–>action

2、使用xml配置文件:ActionClass-validations.xml

其实struts2已经内置了一些基本的数据验证,完全可以省去我们日常的一些数据验证需求,通过配置文件的方式。

在ActionClass所在的目录下,新建一个以ActionClass名字组合成的特定xml:ActionClass-validations.xml(例,我的ActionClass名为userAction,则我应该在同目录下建一名为userAction-validation.xml的文件)

步骤

添加Action类并继承ActionSupport
在Action所在的包下创建一个名为ActionName-validation.xml的文件
复制文档的声明到配置文件中(帮助文件下找)
添加validators根元素及验证器(validators—->字段—->validator—->参数及消息)
Jsp页面中添加struts2的标签

UserAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<!--根元素,用于定义验证器-->        
<validators>
    <!-- 定义字段信息,name用于指定待验证的字段名 -->
    <field name="userName">
        <!-- 
            定义验证类型 
            com.opensymphony.xwork2.validator.validators >> default.xml
            在default.xml中validator部分就是验证器的名称
        -->
        <field-validator type="requiredstring">
            <!-- 参数根据验证器后面的类去使用 -->
            <param name="trim">true</param>         
            <message>用户名为必填信息</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="trim">true</param>
            <param name="minLength">6</pa1ram>
            <param name="maxLength">10</param>
            <message>姓名的长度为${minLength}~${maxLength}字符</message>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="int">
            <param name="min">0</param>
            <param name="max">200</param>
            <message>年龄的取值范围为${min}~${max}</message>
        </field-validator>
        <field-validator type="requiredstring">
            <param name="trim">true</param>         
            <message>年龄为必填信息</message>
        </field-validator>
    </field>
</validators>

3、总结

struts2的验证框架是一种服务器端的验证。一般较少使用(一般网站中只采用客户端验证即可。但是一些安全性要全较高的项目都会采用客户端+服务器端验证的方式进行验证)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值