Struts2的数据校验

1.数据的校验分成前台和后台两种方式:
    JavaScript可以在前台完成校验,但是这种方式主要是提升用户的体验,依然可以绕行至后台程序中。
    后台的数据校验,在Servlet/Action中做数据的校验。

2.Struts2框架中数据校验的方法:
    手动编码校验

配置文件校验

手动编码校验

1.编写Action接收请求参数,该Action必须继承ActionSupport类
    public class UserAction extends ActionSupport implements ModelDriven<User> {
        private User user = new User();

        @Override
        public User getModel() {
            return user;
        }

        public String register() {
            System.out.println("注册成功");
            return SUCCESS;
        }
    }

    因为校验的实现需要用到ActionSupport类中的一些方法,所以必须继承它。

2.重写validate()方法,使用addFieldError()方法添加错误信息
    @Override
    public void validate() {
        if (user.getUsername().length() == 0) {
            addFieldError("usernameError", "用户名不能为空");
        }
        if (user.getPassword().length() == 0) {
            addFieldError("passwordError", "密码不能为空");
        }
        if (user.getAge() <= 0) {
            addFieldError("ageError", "年龄非法");
        }
    }

    validate()方法是执行在其他方法(register)之前的,如果validate()中执行过addFieldError()方法,则不会再去执行后续方法(register),而是跳转到INPUT视图。
    validate()方法会校验所在Action中的所有方法,如果想要校验指定方法,可以手动在Action中编写一个方法,方法名称是validate方法名称(),例如:validateRegister()。

3.配置INPUT视图
    <action name="register" class="action.UserAction" method="register">
        <result name="success">/index.jsp</result>
        <result name="input">/register.jsp</result>
    </action>

    input视图通常都是转发回到原页面。

4.完成JSP页面代码,使用<s:fielderror/>标签显示错误信息
    <s:fielderror/>
    <form action="${ pageContext.request.contextPath }/user/register" method="post">
        姓名:<input type="text" name="username" /><br/>
        密码:<input type="password" name="password" /><br/>
        年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="注册" />
    </form>

    s标签是struts特有的标签,使用时需要导入标签库,导入方式与jstl相同。
    <s:fielderror/>展示的是所有错误信息,如果想展示某个错误信息,可以使用标签内的fieldName属性指定,比如<s:fielderror fieldName="ageError"/>

代码校验不适用于大型项目,数据复杂时,开发量和维护量都会很大
配置文件校验


1.编写Action接收请求参数,该Action必须继承ActionSupport类
    public class UserAction extends ActionSupport implements ModelDriven<User> {
        private User user = new User();

        @Override
        public User getModel() {
            return user;
        }

        public String register() {
            System.out.println("注册成功");
            return SUCCESS;
        }
    }

    因为校验的实现需要用到ActionSupport类中的一些方法,所以必须继承它。

2.配置INPUT视图
    <action name="register" class="action.UserAction" method="register">
        <result name="success">/index.jsp</result>
        <result name="input">/register.jsp</result>
    </action>

    input视图通常都是转发回到原页面。

3.编写校验规则xml文件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>
        <field name="username">
            <field-validator type="requiredstring">
                <message>用户名不能为空</message>
            </field-validator>
            <field-validator type="stringlength">
                <param name="minLength">6</param>
                <param name="maxLength">10</param>
                <message>用户名在6-10位之间</message>
            </field-validator>
        </field>
        <field name="password">
            <field-validator type="requiredstring">
                <message>密码不能为空</message>
            </field-validator>
        </field>
    </validators>

    该配置文件必须与所校验的Action在同一包下,命名规则为:Action类名-validation.xml。
    需要配置本地约束。
    该校验器会校验对应Action中的所有方法,如果想要校验某个方法,则将配置文件名改为:Action类名-方法对应的访问路径-validation.xml,例如:UserAction-register-validation.xml。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值