Struts2_表单数据验证(基于手工)

来源:互联网 发布:如何自学程序员 编辑:程序博客网 时间:2024/05/19 00:47

不用谁施舍阳光,我们自己就是太阳!

表单验证分为三种:

①客户端格式验证

②服务端格式验证

③数据库中数据有效性验证

如果软件要求系数比较高,通常在服务端进行验证。

1.验证Action所有方法

前端页面login.jsp:

<%@ page language="java" pageEncoding="UTF-8" %><%@ page contentType="text/html; charset=UTF-8" %><!DOCTYPE html ><html><head><meta  charset="UTF-8"><title>登录界面</title></head><body><!-- 错误信息带回 -->${fieldErrors.username }${fieldErrors.tele }<form action="login.action" method="post">    用户名:<input name="username" type="text"><br>    手机号:<input name="tele" type="text"><br>    <input type="submit" value="提交"></form></body></html>

struts.xml代码:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"    "http://struts.apache.org/dtds/struts-2.5.dtd">    <struts>        <package name="root" namespace="/" extends="struts-default">            <action name="login" class="com.action.LoginAction">                <result>/welcome.jsp</result>                <result name="input">/login.jsp</result>            </action>        </package>    </struts>

Action及验证代码(重要):

package com.action;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {    private String username;    private String tele;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getTele() {        return tele;    }    public void setTele(String tele) {        this.tele = tele;    }    public String execute(){        System.out.println("execute方法调用");        return "success";    }    @Override    public void validate() {        System.out.println("validate方法调用");        if (username==null||"".equals(this.username)) {            this.addFieldError("username", "用户名不能为空!");        }        if (tele==null||"".equals(this.tele)) {            this.addFieldError("tele", "电话号不能为空!");        }else{            if (!this.tele.matches("^1[34578]\\d{9}$")) {                this.addFieldError("tele", "电话号码格式不正确!");            }        }    }}

以上代码发现,表单验证的方法(validate方法)会在Action执行之前被自动调用,fieldErrors中没有内容才会调用Action方法。

2.验证Action指定方法

如果Action中存在多个方法,上面的代码会验证所有方法,但是实际开发中不需要验证所有方法,所以怎么验证指定的Action方法呢?

只需要将重写的validate()方法名改成“validate+要验证的方法名”即可。
注意:要验证的方法名首字母大写。

public void validateDoFirst() {    //方法体}

这里写图片描述