struts2表单提交数据的验证

24人阅读 评论(0) 收藏 举报
分类:

表单提交数据的验证

1.验证方式分为硬编码和软编码
  硬编码就是通过java代码来实现
  软编码就是通过配置文件来实现
  注意: 配置文件命名: Action类名-validation.xml
  硬编码方式一: 重写ActionSupport类中的validate()方法
// 这种方式会拦截该Action类中的所有方法 可以使用注解跳过拦截
  @Override
    public void validate() {
        System.out.println("测试执行没有");
        // 判断数据的合法性
        if (StringUtils.isEmpty(user.getUsername())) {
            // 不合法 添加不合法信息
            // 参数1 表单中对应的字段名(name属性的名字)
            // 参数2 错误信息
            // 当信息不合法的时候 会默认去找 字符串input 结果 所对应的 页面
            this.addFieldError("username", "用户名不能为空");
        }
    }
// 使用注解跳过拦截
    @SkipValidation
    public String name() {
        return SUCCESS;
    }
// 硬编码验证方式二:
/*
 * 跳过验证方式2(指定要被验证的 动作方法) 
 * 命名规范 小驼峰 validate + 要验证的方法名(首字母大写)
 * 相当于struts 在验证拦截时 会扫描你整个动作类中的方法
 * 查找是否有volidate开头的方法 和 名字后面的动作方法
 * 有 就进行拦截 没有就算
 */
public void validateRegister() {
        if (StringUtils.isEmpty(user.getUsername())) {
            this.addFieldError("username", "用户名不能为空");
        }
    }
// 使用硬编码 重写方法 会返回一个input字符串 需要在struts.xml配置文件中
   配置拦截过后要跳转的页面  success表示不拦截的方法跳转的页面 
   input表示拦截的方法要跳转的页面
   <action name="QueryAction" class="com.xxx.UserAction" method="query">
            <result name="success">/success.jsp</result>
            <result name="input">/query.jsp</result>
    </action>
2.软编码进行表单提交数据的验证
<!-- 
    使用配置文件配置验证
    1.命名规范 动作类名 + "-" + validation
    2.必须跟动作类同包
    软编码方式 也会拦截 动作类中的所有方法(使用注解)
 -->
// 以注册为例 用配置文件对数据进行验证
<?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>
    <!--年龄-->
    <field name="age">
        <field-validator type="int">
                <!-- int 必须是整数 指定范围 -->
            <param name="max">60</param>
            <param name="min">18</param>
            <message>你年龄不符合要求</message>
        </field-validator>
    </field>
    <!--验证邮箱-->
    <field name="email">
        <field-validator type="email">
            <message>邮箱不对呀</message>
        </field-validator>
    </field>

    <!--验证密码-->
    <field name="password">
        <field-validator type="requiredstring">
            <message>密码不能为空</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="maxLength">8</param>
            <param name="minLength">3</param>
            <message>密码长度不符合要求</message>
        </field-validator>
    </field>

    <!--验证url-->
    <field name="url">
        <field-validator type="url">
            <message>url不符合要求</message>
        </field-validator>
    </field>
    <!--性别-->
    <field name="gender">
        <field-validator type="required">
            <message>必须选择性别</message>
        </field-validator>
    </field>
    <!--确认密码
    与其他的字段判断方式不同,这是判断两个字段的值
    跟标签选择 校验器,校验器类型为表达式-->
    <validator type="expression">
        <param name="expression">
            password == repassword
        </param>
        <message>两次密码不一致</message>
    </validator>
</validators>

// 在注册页面进行错误信息的提示
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="${pageContext.request.contextPath }/CustomerAction_register" method="post">
        <!-- 使用el 表达式 进行数据回显 把表单中提交的数据 存入param 相当于
            一个map中  ${param.username } .后面是你的 name属性-->

        用户名<input type="text" name="username" value="${param.username }">
        <s:property value="errors.username[0]"/><br/>

        邮箱<input type="email" name="email">
        <s:property value="errors.email[0]"/><br/>

        年龄<input type="text" name="age">
        <s:property value="errors.age[0]"/><br/>

        密码<input type="password" name="password">
        <s:property value="errors.password[0]"/><br/>

        确认密码<input type="password" name="password">
        <s:property value="errorMessages[0]"/><br/>

        url<input trpe="url" name="url"><br/>
        <s:property value="errors.url[0]"/><br/>

        性别<input type="radio" name="gender" value="男">
        <input type="radio" name="gender" value="女">
        <s:property value="errors.gender[0]"/><br/>

        <input type="submit" value="提交">
    </form>
    <s:debug></s:debug>
</body>
</html>
查看评论

struts2表单校验与错误信息处理

struts2表单校验 struts2错误信息处理
  • shuaicihai
  • shuaicihai
  • 2017年02月10日 00:19
  • 1189

struts2学习之表单校验的两种方式

基于覆盖validate方法的表单校验Action类一般都继承ActionSupport类。通过覆盖ActionSupport类的validate方法即可在自己的Action类中校验输入项的值。校验动...
  • u011726984
  • u011726984
  • 2015年04月20日 14:41
  • 3872

Struts2(二)---将页面表单中的数据提交给Action

转载请注明:http://blog.csdn.net/uniquewonderq 问题:在struts2框架下,如何将表单数据传递给业务控制器Action。 struts2中,表单想Action传递...
  • uniquewonderq
  • uniquewonderq
  • 2015年07月09日 20:34
  • 5810

struts2标签和表单验证

这个name与你action中的javabean联系起来,会自己收集值(前提是你在action 中引入了user有get/set方法 ,且user实现 了javabean特点类) 而labe是用来显示...
  • u012459917
  • u012459917
  • 2014年01月02日 14:40
  • 1084

[JAVAWEB]3.用js进行客户端数据有效性验证

4.复习笔记(这个就是课后习题以及课程所呈现的需求)写的这么仔细,不用总结了吧,到时候录个小视频5.自测代码2.课堂笔记一.用户名检测是否填写了,或者是否都是空格. function checkit(...
  • zeephom
  • zeephom
  • 2017年08月22日 11:30
  • 169

struts2的数据验证之编码方式验证和validation.xml验证

1.编码方式验证 在Action的execute方式执行前会先执行validate方法,如果在validate方法里addFieldError或者addActionError,那么 Action将不会...
  • yuhui123999
  • yuhui123999
  • 2016年07月01日 16:21
  • 1309

Struts2 Jquery Json 实现AJax表单验证

弄了一整天了,刚开始学习Jquery,很多东西还不熟,看看视频,查查资料,终于成功的集成Struts2+Jquery+Json 直接上图:用户名输入xxx,焦点丢失,提示”用户已存在“,否则提示“可...
  • xusongsong520
  • xusongsong520
  • 2012年09月20日 17:27
  • 2808

Ajax+Struts2实现验证码验证功能

通过ajax来动态的验证验证码输入是否正确。我们这里采用的是ajax+struts2来做的这个验证。 我们新建一个web工程。然后需要导入struts的相应包。之后我们需要写一个类来生成验证码。这里命...
  • sdksdk0
  • sdksdk0
  • 2016年06月24日 20:34
  • 5597

使用struts2框架提交表单时不能传递到后台的问题

遇到好几次这种情况了,一个正常的form表单,submit无法传递到后台.那么一定是form表单的某些字段不能转换成后台生成的字段.比如说user实体,有一个money属性,是Integer类型.如果...
  • superman166
  • superman166
  • 2013年11月14日 17:20
  • 1017

Form表单提交数据的两种方式

在JavaWeb项目中,表单提交数据的方式时常可见,方式有两种,其一,get方式;其二,post方式,下面简单的来说说这两种方式的区别。     1、从安全角度来说,当表单数据以get方式提交时,提...
  • hudie_1993
  • hudie_1993
  • 2016年11月16日 22:43
  • 838
    个人资料
    持之以恒
    等级:
    访问量: 2589
    积分: 595
    排名: 8万+
    文章存档
    最新评论