struts2学习笔记之十五(输入校验)

输入校验

输入校验和类型转换相辅相成
  提交String请求参数,首先是类型转换,再次验证数据的合理性,然后进一步处理

分为客户端校验和服务器校验
  客户端:js代码
  服务器校验:java代码
  客户端校验不能阻止恶意行为,决不能代替服务器校验
  客户端也必不可少,由于大部分的浏览行为是正常行为,这样可以降低服务器的负担
  两者必不可少。

struts2的输入校验完全是模块化的方式
  需要检验哪个Action
  1、继承ActionSupport类
  2、为该Action增加校验规则文件 —-struts2会自动加载该检验规则文件
  3、校验规则文件的文件名应该是actionname-validation.xml(可以拷贝strtus2文件夹里的blank项目里的模板)
  每个校验器对应一条校验规则
  校验失败,会自动跳转到input的result,因此需要配置一个input的result
  

常用内置校验器(10个)

  • required validator
  • requiredstring validator
    fieldname
    trim
  • double validator
    fieldName
    minInclusive 最小值且包含最小值
    maxInclusive
    minExclusive 最小值但不包括最小值
    maxExclusive
  • int validator
    fieldName
    min
    max
  • stringlength validator
    fieldName
    maxLength
    minLength
  • expression validator
    可用于校验前后两次的输入密码是否相同
    expression - the ONGL expression to be evaluated against the stack(Must evaluate to a Boolean)
  • regex validator
    url,email校验器可以使用正则校验器代替
  • date validator
    格式要求太苛刻,不是很好
    需要使用date的short格式
  • email validator
  • url validator

实例

需求:注册用户,使用内置校验器验证输入数据
1、jsp注册页面

    <s:form action="RegisterAction">
        <s:textfield name="user.name" label="用户名"/>
        <s:textfield name="user.pass" label="密码"/>
        <s:textfield name="user.weight" label="体重"/>
        <s:textfield name="user.birth" label="生日"/>
        <s:submit value="注册"/>
    </s:form>

2、RegisterAction类

package org.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class Registe extends ActionSupport {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
    public String execute(){
        //UserService业务类,内存仿真数据库
        UserService us = new UserService();
        int status = us.addUser(user);
        if(status == -1){
            return ERROR;
        }
        return SUCCESS;
    }
}

3、为action制作规则文件

注意:

  • 文件名必须为actionname-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="user.name">
        <field-validator type="requiredstring" short-circuit="true">
            <param name="trim">true</param>
            <message>姓名不能为空</message>
        </field-validator>
    </field>
    <field name="user.pass">
        <field-validator type="requiredstring" short-circuit="true">
            <param name="trim">true</param>
            <message>密码不能为空</message>
        </field-validator>
    </field>
    <field name="user.weight">
        <field-validator type="double" short-circuit="true">
            <param name="minInclusive">10.0</param>
            <param name="maxInclusive">90.0</param>
            <message>体重在10.0~90.0之间</message>
        </field-validator>
    </field>
    <field name="user.birth">
        <field-validator type="required" short-circuit="true">
            <message>生日不能为空</message>
        </field-validator>
        <field-validator type="date" short-circuit="true">
            <message>生日格式是short形式</message>
        </field-validator>
    </field>
</validators>

4、配置input逻辑视图(struts.xml)

<package name="action" extends="struts-default">
        <action name="RegisterAction" class="org.struts2.action.Registe">

            <result name="input">/WEB-INF/content/register.jsp</result>
            <result type="chain">listUsers</result>
        </action>
        <action name="listUsers" class="org.struts2.action.usersListAction">
            <result>/WEB-INF/content/usersList.jsp</result>
        </action>
    </package>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值