运用Struts2数据验证实现注册表单验证

运用Struts2数据验证实现注册表单验证

如果要实现这个功能首先要有一个注册的页面

stu.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <s:head></s:head>
  <s:actionerror/>
  <body>
       <s:form action="addStudent.action">
            <s:textfield name="username" label="用户名"></s:textfield>
            <s:textfield name="age" label="年龄"></s:textfield>
            <s:textfield name="email" label="邮箱"></s:textfield>
            <s:textfield name="password" label="密码"></s:textfield>
            <s:textfield name="repassword" label="确认密码"></s:textfield>
            <s:textfield name="score" label="成绩"></s:textfield>
            <s:textfield name="url" label="主页"></s:textfield>
            <s:radio name="gender" list="{'男','女'}" label="性别"></s:radio>
            <s:submit value="提交"></s:submit>
       </s:form>
  </body>
</html>

下面写一下对应的实体类

Student.java

package com.qianfeng.domain;
public class Student {
    private String username;//不能为null或空字符串
    private int age;//18--100
    private String email;//符合邮箱格式
    private String password;//长度3--8
    private String repassword;//必须和密码一样
    private int score;//必须是正整数
    private String url;//必须符合url格式
    private String gender;//性别
    public String getUsername() {return username;}
    public void setUsername(String username){this.username = username;}
    public int getAge() {return age;}
    public void setAge(int age) {this.age = age;}
    public String getEmail() {return email;}
    public void setEmail(String email) {this.email = email;}
    public String getPassword() {return password;}
    public void setPassword(String password){this.password = password;}
    public String getRepassword() {return repassword;}
    public void setRepassword(String repassword){this.repassword = repassword;}
    public int getScore() {return score;}
    public void setScore(int score) {this.score = score;}
    public String getUrl() {return url;}
    public void setUrl(String url) {this.url = url;}
    public String getGender() {return gender;}
    public void setGender(String gender) {this.gender = gender;}
}

写完实体类我们就可以配置struts.xml文件

<?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>
    <constant name="struts.devMode" value="true"></constant>

    <package name="p1" extends="struts-default">
        <action name="addStudent" class="com.qianfeng.web.action.StudentAction" method="addStudent">
            <result name="input">/stu.jsp</result>
        </action>
    </package>
</struts>

然后写对应的动作类StudentAction.java和动作方法addStudent()

package com.qianfeng.web.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.qianfeng.domain.Student;

public class StudentAction extends ActionSupport implements ModelDriven<Student>{
    private Student student = new Student();
    public String addStudent()
    {
        return SUCCESS;
    }
    @Override
    public Student getModel() {
        return student;
    }
    public Student getStudent() {
        return student;
    }
    public void setStudent(Student student) {
        this.student = student;
    }
}
接下来,就是真正的数据验证的部分了,我们是用上一篇中所说的声明式验证:写xml文件验证

文件名要是StudentAction-addStudent-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">
        <field-validator type="requiredstring">
            <message>用户名不能为空</message>
        </field-validator>
    </field>

    <field name="age">
        <field-validator type="int">
            <param name="min">18</param>
            <param name="max">70</param>
            <message>年齡必須在18到70之間</message>
        </field-validator>
    </field>

    <field name="email">
        <field-validator type="email">
              <message>邮箱格式不正确</message>
        </field-validator>
    </field>

    <field name="password">
        <field-validator type="requiredstring">
            <param name="trim">false</param>
            <message>密码不能为空</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">3</param>
            <param name="maxLength">8</param>
            <message>密码长度必须在3--8位之间</message>
        </field-validator>
    </field>

    <!-- 确认密码需要和密码一致,所以使用验证器验证 -->
    <validator type="expression">
         <param name="expression">
           <![CDATA[
            password==repassword
           ]]>
         </param>
         <message>确认密码要和密码一致</message>
    </validator>

    <field name="score">
        <field-validator type="regex">
              <param name="regex">
                    \d+
              </param>
              <message>成绩必须是正整数</message>
        </field-validator>
    </field>

    <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>
</validators>

根据field-validator的type属性来决定使用什么方式的验证
type的取值可以在xwork核心jar包xwork-core-2.3.15.3.jar中的com/opensymphony/xwork2/validator/validators/default.xml中找到

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值