Struts2表單數據驗證

數據驗證:

客戶端驗證,服務器端驗證,今天我們主要說服務器端驗證

服務器端驗證:

1:編程式驗證:寫代碼驗證:寫死了,硬編碼

package com.qianfeng.web.action;
import org.apache.commons.lang3.StringUtils;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.qianfeng.domain.User;
import com.qianfeng.service.UserService;
import com.qianfeng.service.impl.UserServiceImpl;

public class UserAction extends ActionSupport implements ModelDriven<User> {

    private User user=new User();
    private UserService userService = new UserServiceImpl();
    /**
     * 編程式驗證:重寫ActionSupport中的public void validate()方法
     *          Struts2內部封裝了一個Map,Map的鍵就是表單上的name值
     *          值就是錯誤信息
     * 注意:動作類必須繼承ActionSupport
     * 默認validate()方法在所有動作方法執行之前執行
     *   爲了讓不需要驗證的不去執行validate()方法,解決方式有兩種:
     *       1:使用註解:@SkipValidation
     *       2: 如果只有一個方法需要驗證,其他的很多個方法都不需要驗證,這時候可以
     *          驗證的方法名:validate+動作方法名(首字母要大寫)(注意這裏是動作方法名而不是動作名)
     * @return
     */
    @Override
    public void validate() {
    //驗證用戶名不能爲空
        if(StringUtils.isEmpty(user.getUsername())){
            addFieldError("username","用戶名不能爲空");
        }
    }

    //public void validateRegist() {
        //驗證用戶名不能爲空
        //if(StringUtils.isEmpty(user.getUsername())){
            //addFieldError("username","用戶名不能爲空");
        //}
    //}

    public String regist(){
        //判斷用戶是否存在
        User user1=userService .finUserByUserName(user.getUsername());
        if(user1!=null){
            return "exists";}
        //把用戶添加到數據庫
        int result = userService.register(user);
        if(result>0){
            return "success";
        }
        return null;
    }
    @Override
    public User getModel() {

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

2:聲明式驗證:寫xml文件驗證

聲明式驗證:通過xml文件實現驗證
* 在動作類所在的包下創建xml文件
* 文件名有命名規則:動作類名-validation.xml,默認驗證所有動作方法
* 希望某些方法不被驗證:
* 1:加註釋@SkipValidition
* 2:xml文件名改成 動作類名-動作名-validition.xml,注意這裏是動作名而不是動作方法名
*
* 在xml文件中加入dtd約束 在E:\daliyuan\10-17\day52\struts-2.3.15.3-all\struts-2.3.15.3\apps\struts2-blank\WEB-INF\lib
* 中找到xwork-core.jar中找到xwork-validator-1.0.3.dtd找到

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

UserAction-regist-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">
        <!-- 怎麼驗證 , struts內部已經定義了很多的驗證器
           requiredstring判斷是否爲null,或空字符串,去除空格
        -->
        <field-validator type="requiredstring">
            <message>用戶名不能爲空</message><!--  -->
        </field-validator>
    </field>

    <!-- 基於驗證器的驗證 -->
    <validator type="requiredstring">
        <!-- 使用注入的方式指明驗證誰 
           private String actionName;
           setActionName("action1");
           驗證器的位置:xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators
        -->
        <param name="fieldName">password</param>
        <message>密碼不能爲空</message>
    </validator>
</validators>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章