struts-11-表单数据校验

来源:互联网 发布:大数据的价值体现在 编辑:程序博客网 时间:2024/05/29 02:44
表单数据的验证

前台js验证

后台验证

相关拦截器

<interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>

 

一、代码方式验证Action中的所有方法

用struts完成的数据验证案例,数据校验以及错误信息回显User.java
package com.cx.verify;/** * Created by cxspace on 16-7-14. */public class User {    private String userName;    private String pwd;    private String email;    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }}

UserAction.java

package com.cx.verify;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * Created by cxspace on 16-7-14. *//*  如果要用struts的数据校验功能,必须要继承actionsupport以及实现相关接口 */public class UserAction extends ActionSupport{    //封装请求数据    private User user;    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    //数据验证方法,拦截器自动调用    @Override    public void validate() {        //用户名非空        if (user.getUserName()==null || "".equals(user.getUserName())){            //保存错误信息            super.addFieldError("userName","用户名必须填写");        }        if (user.getPwd() == null || "".equals(user.getPwd())){            super.addFieldError("pwd","密码必须填写");        }    }    public String login(){        System.out.println("username in validate" + user.getUserName());        ActionContext.getContext().getContextMap().put("username",user.getUserName());        return SUCCESS;    }}

配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"        "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <package name="verify" extends="struts-default">        <action name="user_*" class="com.cx.verify.UserAction" method="{1}">            <result name="success">/index.jsp</result>            <result name="input">/login.jsp</result>        </action>    </package></struts>

login.jsp

<%--  Created by IntelliJ IDEA.  User: cxspace  Date: 16-7-14  Time: 下午3:44  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="s" uri="/struts-tags" %><html><head>    <title>login</title></head><body> <form method="post" action="${pageContext.request.contextPath}/user_login">    用户名:<input type="text" name="user.userName">    <br>    密码:<input type="password" name="user.pwd">    <br>     邮箱:<input type="text" name="user.email" value="">    <br>     <%        System.out.println(request.getAttribute("username"));     %>    <input type="submit">     <s:fielderror>         <s:param>userName</s:param>         <s:param>pwd</s:param>     </s:fielderror> </form></body></html>

 

二、验证指定的方法

写验证方法命名规则: validate+要验证的方法名

三、xml验证Action中所有的方法

代码验证繁琐,会设置很多重复的验证逻辑。

Struts对于常用验证,进行了封装,提供了验证器!

常用验证器

<validators>    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/></validators>

 

写xml,定义验证规则

   xml文件名命名语法 : ActionClassName-validation.xml

  注意:此xml需要与当前要验证的action在同一个目录

  案例 

  com/cx/verify/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表示-->    <field name="user.userName">        <!--使用指定的验证器-->        <field-validator type="requiredstring">            <!--验证失败的错误提示信息-->            <message>用户名不能为空!</message>        </field-validator>    </field>    <field name="user.pwd">        <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="user.birth">        <field-validator type="date">            <message>日期格式不对</message>        </field-validator>    </field>    -->    <field name="user.email">        <field-validator type="email">            <message>邮箱格式不对!</message>        </field-validator>    </field></validators>

 

四、xml方式验证Action中指定方法

xml配置文件命名

      UserAction-user_register-validation.xml

验证UserAction中的register方法

 

0 0
原创粉丝点击