Struts2表单数据验证

来源:互联网 发布:total recall for mac 编辑:程序博客网 时间:2024/05/01 05:50

数据验证:

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

服务器端验证:

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>
3 0
原创粉丝点击