Struts2表单数据验证

数据验证:

客户端验证,服务器端验证,今天我们主要说服务器端验证

服务器端验证:

1:编程式验证:写代码验证:写死了,硬编码

package com.qianfeng.web.action;
import org.apache.commons.lang3.StringUtils;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.qianfeng.domain.User;
import com.qianfeng.service.UserService;
import com.qianfeng.service.impl.UserServiceImpl;

public class UserAction extends ActionSupport implements ModelDriven<User> {

    private User user=new User();
    private UserService userService = new UserServiceImpl();
    /**
     * 编程式验证:重写ActionSupport中的public void validate()方法
     *          Struts2内部封装了一个Map,Map的键就是表单上的name值
     *          值就是错误信息
     * 注意:动作类必须继承ActionSupport
     * 默认validate()方法在所有动作方法执行之前执行
     *   为了让不需要验证的不去执行validate()方法,解决方式有两种:
     *       1:使用注解:@SkipValidation
     *       2: 如果只有一个方法需要验证,其他的很多个方法都不需要验证,这时候可以
     *          验证的方法名:validate+动作方法名(首字母要大写)(注意这里是动作方法名而不是动作名)
     * @return
     */
    @Override
    public void validate() {
    //验证用户名不能为空
        if(StringUtils.isEmpty(user.getUsername())){
            addFieldError("username","用户名不能为空");
        }
    }

    //public void validateRegist() {
        //验证用户名不能为空
        //if(StringUtils.isEmpty(user.getUsername())){
            //addFieldError("username","用户名不能为空");
        //}
    //}

    public String regist(){
        //判断用户是否存在
        User user1=userService .finUserByUserName(user.getUsername());
        if(user1!=null){
            return "exists";}
        //把用户添加到数据库
        int result = userService.register(user);
        if(result>0){
            return "success";
        }
        return null;
    }
    @Override
    public User getModel() {

        return user;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
}

2:声明式验证:写xml文件验证

声明式验证:通过xml文件实现验证
* 在动作类所在的包下创建xml文件
* 文件名有命名规则:动作类名-validation.xml,默认验证所有动作方法
* 希望某些方法不被验证:
* 1:加注释@SkipValidition
* 2:xml文件名改成 动作类名-动作名-validition.xml,注意这里是动作名而不是动作方法名
*
* 在xml文件中加入dtd约束 在E:\daliyuan\10-17\day52\struts-2.3.15.3-all\struts-2.3.15.3\apps\struts2-blank\WEB-INF\lib
* 中找到xwork-core.jar中找到xwork-validator-1.0.3.dtd找到

<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

UserAction-regist-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">
        <!-- 怎么验证 , struts内部已经定义了很多的验证器
           requiredstring判断是否为null,或空字符串,去除空格
        -->
        <field-validator type="requiredstring">
            <message>用户名不能为空</message><!--  -->
        </field-validator>
    </field>

    <!-- 基于验证器的验证 -->
    <validator type="requiredstring">
        <!-- 使用注入的方式指明验证谁 
           private String actionName;
           setActionName("action1");
           验证器的位置:xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators
        -->
        <param name="fieldName">password</param>
        <message>密码不能为空</message>
    </validator>
</validators>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值