struts2數(shù)據(jù)校驗(yàn)

表單數(shù)據(jù)的驗(yàn)證:

前臺(tái)驗(yàn)證:主要是通過(guò)JS驗(yàn)證厚满, 表達(dá)數(shù)據(jù)是否合法!
后臺(tái)驗(yàn)證:通過(guò)后臺(tái)java代碼進(jìn)行驗(yàn)證!
Struts也提供了數(shù)據(jù)效驗(yàn)的方式库北!

Struts數(shù)據(jù)效驗(yàn)欺栗, 通過(guò)攔截器完成:
<interceptor
name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>

代碼方式驗(yàn)證Action中所有的方法:

1.在idea中直接創(chuàng)建struts項(xiàng)目
2.寫(xiě)注冊(cè)頁(yè)面
3.UserAction.java
4.以及實(shí)體類User.java
5.配置struts.xml

文件目錄結(jié)構(gòu)
圖片.png
  • 注冊(cè)頁(yè)面
<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2017/5/31
  Time: 12:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注冊(cè)頁(yè)面</title>
</head>
<body>
<form action="/user_register" method="post">
    用戶名:<input type="text" name="user.userName"><br>
    密碼:<input type="password" name="user.passWord"><br>
    郵箱:<input type="text" name="user.email"><br>
    生日:<input type="text" name="user.birth"><br>
    <input type="submit" value="注冊(cè)">
</form>
</body>
</html>
  • 實(shí)體類User.java
package validation;

import java.util.Date;

/**
 * Created by admin on 2017/5/31.
 */
public class User {

    private String userName;
    private String passWord;
    private String email;
    private Date birth;

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", email='" + email + '\'' +
                ", birth=" + birth +
                '}';
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }
}
  • action類UserAction
package validation;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Created by admin on 2017/5/31.
 */
public class UserAction extends ActionSupport {

    //封裝數(shù)據(jù)
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    //數(shù)據(jù)校驗(yàn)
    public void validateRegister() {//驗(yàn)證指定的方法
        //用戶名
        if (user.getUserName() == null || "".equals(user.getUserName())) {
            super.addFieldError("userName", "用戶名不能為空!");
        }

        //密碼
        if (user.getPassWord() == null || "".equals(user.getPassWord())) {
            super.addFieldError("passWord", "密碼不能為空允蚣!");
        }
    }

    //業(yè)務(wù)處理方法
    public String register(){
        System.out.println(user);
        return SUCCESS;
    }
}
  • struts.xml配置
    1.配置數(shù)據(jù)效驗(yàn)過(guò)濾器validate.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>
    <package name="validate" extends="struts-default">
        <action name="user_*" class="validation.UserAction" method="{1}">
            <result name="success">/register.jsp</result>
        </action>
    </package>
</struts>

2.在struts.xml中引入數(shù)據(jù)校驗(yàn)配置文件

<?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>
    <include file="validation/validate.xml"/>
</struts>

XML方式驗(yàn)證Action中所有的方法:

總結(jié)代碼方式驗(yàn)證:

  • 繁瑣于颖,設(shè)計(jì)很多重復(fù)的驗(yàn)證邏輯!例如:非空驗(yàn)證厉萝、數(shù)值驗(yàn)證恍飘、email、日期等谴垫。
  • Struts對(duì)于常用的驗(yàn)證章母,進(jìn)行了封裝,即提供了驗(yàn)證器翩剪, 驗(yàn)證指定的常用業(yè)務(wù)邏輯乳怎!

可以在jar包里找到該文件,其路徑為:\struts04\lib\xwork-core.jar!\com\opensymphony\xwork2\validator\validators\default.xml

在struts里面提供了所有通用的驗(yàn)證器

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Definition 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">

<!-- START SNIPPET: validators-default -->
<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>
<!--  END SNIPPET: validators-default -->

創(chuàng)建一個(gè)xml驗(yàn)證器前弯,需要遵循一定的驗(yàn)證規(guī)則

  • xml文件名稱語(yǔ)法:ActionClassName-validation.xml
    注意:此xml需要與當(dāng)期要驗(yàn)證的action在同一個(gè)目錄:
    舉例:UserAction-validation.xml
  • 例子
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">

<validators>
    <!--驗(yàn)證表的每一個(gè)字段field表示-->
    <field name="user.userName">
        <!--指定使用的驗(yàn)證器-->
        <field-validator type="requiredstring">
            <!--驗(yàn)證錯(cuò)誤的提示-->
            <message>用戶名不能為空蚪缀!</message>
        </field-validator>
    </field>

    <!-- 驗(yàn)證password -->
    <field name="user.passWord">

        <!-- 非空 -->
        <field-validator type="requiredstring">
            <message>密碼不能為空!</message>
        </field-validator>

        <!-- 長(zhǎng)度 -->
        <field-validator type="stringlength">
            <param name="minLength">6</param>
            <param name="maxLength">8</param>
            <message>密碼必須為6-8位恕出!</message>
        </field-validator>
    </field>

    <!-- 驗(yàn)證日期 -->
    <field name="user.birth">
        <field-validator type="date">
            <message>日期格式不對(duì)询枚!</message>
        </field-validator>
    </field>

    <!-- 驗(yàn)證Email -->
    <field name="user.email">
        <field-validator type="email">
            <message>郵箱格式錯(cuò)誤!</message>
        </field-validator>
    </field>
</validators>

驗(yàn)證:
當(dāng)不遵循格式隨意輸出時(shí):

圖片.png

控制臺(tái)就會(huì)出現(xiàn)錯(cuò)誤:

圖片.png

當(dāng)遵循格式輸出時(shí):

圖片.png

控制臺(tái)顯示的結(jié)果為:

圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浙巫,一起剝皮案震驚了整個(gè)濱河市金蜀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌的畴,老刑警劉巖渊抄,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丧裁,居然都是意外死亡护桦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)煎娇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)二庵,“玉大人,你說(shuō)我怎么就攤上這事逊桦≌A裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵强经,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我寺渗,道長(zhǎng)匿情,這世上最難降的妖魔是什么兰迫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮炬称,結(jié)果婚禮上汁果,老公的妹妹穿的比我還像新娘。我一直安慰自己玲躯,他們只是感情好据德,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著跷车,像睡著了一般棘利。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朽缴,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天善玫,我揣著相機(jī)與錄音,去河邊找鬼密强。 笑死茅郎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的或渤。 我是一名探鬼主播系冗,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼薪鹦!你這毒婦竟也來(lái)了掌敬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤距芬,失蹤者是張志新(化名)和其女友劉穎涝开,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體框仔,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舀武,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了离斩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片银舱。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖跛梗,靈堂內(nèi)的尸體忽然破棺而出寻馏,到底是詐尸還是另有隱情,我是刑警寧澤核偿,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布诚欠,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏轰绵。R本人自食惡果不足惜粉寞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望左腔。 院中可真熱鬧唧垦,春花似錦、人聲如沸液样。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鞭莽。三九已至坊秸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撮抓,已是汗流浹背妇斤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丹拯,地道東北人站超。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乖酬,于是被迫代替她去往敵國(guó)和親死相。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在表現(xiàn)層的數(shù)據(jù)處理方面主要分為兩種類型咬像,一種是類型轉(zhuǎn)換算撮,這點(diǎn)我們上篇已經(jīng)簡(jiǎn)單介紹過(guò),另外一種則是我們本篇文章將要介...
    Single_YAM閱讀 614評(píng)論 1 7
  • Struts2的輸入校驗(yàn)和類型轉(zhuǎn)換都是對(duì)請(qǐng)求參數(shù)進(jìn)行處理县昂。輸入校驗(yàn)顧名思義就是請(qǐng)求參數(shù)是否能夠滿足一定的要求肮柜; 客...
    重山楊閱讀 871評(píng)論 0 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)倒彰,斷路器审洞,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Struts數(shù)據(jù)效驗(yàn) 表單數(shù)據(jù)的驗(yàn)證:前臺(tái)驗(yàn)證:主要是通過(guò)JS驗(yàn)證, 表達(dá)數(shù)據(jù)是否合法待讳!后臺(tái)驗(yàn)證:通過(guò)后臺(tái)java...
    奮斗的老王閱讀 918評(píng)論 0 51
  • Apache Struts 2是一種流行的 Java模型 - 視圖 - 控制器(MVC)框架芒澜,成功地結(jié)合了 Web...
    wyude閱讀 347評(píng)論 0 0