1. 程式人生 > >Struts2 使用Validation框架驗證資料

Struts2 使用Validation框架驗證資料

在採用struts的xml配置方式校驗資料時,發現怎麼也不起作用。無法按照正常流程,走到input指向的頁面。

一   問題的解決

很多部落格說明了自己查詢的方式,最後都指明瞭是因為配置檔案格式不正確的原因。出現這種問題的時候,應該從下面4個部分考慮:

1:檔名是否是 LogInAction-validation.xml 第一部分的名字必須與action類名對應一致。

2:struts.xml中同一個action下面,要配置input型別的返回結果,如同:

<action name="login" class="com.allen.ssh.action.LogInAction">
            <result name="success">/Welcome.jsp</result>
            <result name="error">/Register.jsp</result>
            <result name="input">/Register.jsp</result> 
        </action>

3:然後是檢查 LogInAction-validation.xml 中指定的屬性名字,是否與JSP頁面中的屬性名字一致。

4:然後是 LogInAction-validation.xml 檔案格式是否正確,主要是指如下這一部分:

<!DOCTYPE validators PUBLIC
  "-//Apache Struts//XWork Validator 1.0.3//EN"

  "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

A:在Struts2的框架匯中,開發者可以通過繼承ActionSupport()類,並重寫validate()方法來完成輸入校驗。使用在Action中重寫Validate()或者 validateXxx()方法實現校驗對某個方法起作用。 


   例如:validate()方法會對action中的所有 邏輯處理方法起作用  比如:execute() , login() 

B:採用Struts2的內建校驗器 也就是配置檔案 來實現校驗 

-----------Validate()------------------------
1.在Struts2的框架匯中,專門用來校驗資料的方法是validate(),開發者可以通過繼承ActionSupport()類,並重寫validate()方法來完成輸入校驗。 
validate()方法會對action中的所有 邏輯處理方法起作用  比如:execute() ,    login() 


2.action. 

Java程式碼  收藏程式碼
  1. package com.sh.action;  
  2. import java.util.Date;  
  3. import com.opensymphony.xwork2.ActionSupport;  
  4. import com.sun.xml.internal.fastinfoset.stax.events.Util;  
  5. public class ValidateAction extends ActionSupport {  
  6. private String name;  
  7. private String pwd;  
  8. private Date date;  
  9. @Override  
  10. public String execute() throws Exception {  
  11.     // TODO Auto-generated method stub  
  12.     return SUCCESS;  
  13. }  
  14. @Override  
  15. public void validate() {  
  16.     if(date==null || date.after(new Date())){  
  17.         addFieldError("date""出生日期無效!");  
  18.     }  
  19.     if(pwd==null || Util.isEmptyString(pwd)){  
  20.         addFieldError("pwd""密碼不能為空!");  
  21.     }  
  22. }  
  23. }  

3.struts.xml 
Xml程式碼  收藏程式碼
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5. <struts>   
  6.     <!-- 如果 註解的action配置改變時候不需要重新啟動tomcate -->  
  7.     <constant name="struts.i18n.encoding" value="utf-8"/>  
  8.     <constant name="struts.devMode" value="false"/>    
  9.     <constant name="struts.convention.classes.reload" value="true" />   
  10.     <package name="default" extends="struts-default">  
  11.         <action name="validateAction" class="com.sh.action.ValidateAction">  
  12.             <result>/success.jsp</result>  
  13.             <result name="input">/index.jsp</result>  
  14.         </action>  
  15.     </package>  
  16. </struts>  

4.login.jsp 
Html程式碼  收藏程式碼
  1. <body>  
  2.   <s:fielderror/>  
  3.    <s:form action="validateAction" method="post" theme="simple">  
  4.     使用者名稱:<s:textfield name="name"/><br/>  
  5.     複合生日:<s:textfield name="pwd"/><br/>  
  6.     常用日期:<s:textfield name="date"/><br/>  
  7.     常用日期2:<sx:datetimepicker name="todayDate" label="Format (yyyy-MM-dd)" displayFormat="yyyy-MM-dd hh:mm:ss"/><br/>  
  8.     <s:submit value="提交"/>  
  9.    </s:form>  
  10.   </body>  


5訪問 
--http://localhost:8080/Struts2_validate/index.jsp 


-----------ValidateXxxx()------------------------

6.只對action中某一個處理方法 進行校驗  測試login(如果 valudate()不註釋,就會對所有的方法起作用) 
Java程式碼  收藏程式碼
  1. package com.sh.action;  
  2. import java.util.Date;  
  3. import java.util.regex.Pattern;  
  4. import com.opensymphony.xwork2.ActionSupport;  
  5. import com.sun.xml.internal.fastinfoset.stax.events.Util;  
  6. public class ValidateAction extends ActionSupport {  
  7. private String name;  
  8. private String pwd;  
  9. private Date date;  
  10. @Override  
  11. public String execute() throws Exception {  
  12.     // TODO Auto-generated method stub  
  13.     return SUCCESS;  
  14. }  
  15. @Override  //會對所有的 方法都有作用 比如 execute login  
  16. public void validate() {  
  17.     if(date==null || date.after(new Date())){  
  18.         addFieldError("date""出生日期無效!");  
  19.     }  
  20.     if(pwd==null || Util.isEmptyString(pwd)){  
  21.         addFieldError("pwd""密碼不能為空!");  
  22.     }  
  23. }  
  24. //登陸方法  
  25. public String login(){  
  26.     return SUCCESS;  
  27. }  
  28. //只對登入方法進行校驗  
  29. public void validateLogin(){  
  30.     if(name!=null && !Pattern.matches("\\w{6,15}", name.trim())){  
  31.         addFieldError(name, "validateLogin()方法的作用");  
  32.     }  
  33. }  
  34. //get set  
  35. }  


7.struts.xml 
Xml程式碼  收藏程式碼
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5. <struts>   
  6.     <!-- 如果 註解的action配置改變時候不需要重新啟動tomcate -->  
  7.     <constant name="struts.i18n.encoding" value="utf-8"/>  
  8.     <constant name="struts.devMode" value="false"/>    
  9.     <constant name="struts.convention.classes.reload" value="true" />   
  10.     <package name="default" extends="struts-default">  
  11.         <action name="validateAction" class="com.sh.action.ValidateAction">  
  12.             <result>/success.jsp</result>  
  13.             <result name="input">/index.jsp</result>  
  14.         </action>  
  15.         <action name="validateLoginAction" class="com.sh.action.ValidateAction" method="login">  
  16.             <result>/success.jsp</result>  
  17.             <result name="input">/index.jsp</result>  
  18.         </action>  
  19.     </package>  
  20. </struts>  
  21. 8.訪問  
  22. --http://localhost:8080/Struts2_validate/index.jsp  
  23. --如果不輸入端額話,將會出現指定的錯誤資訊。  


-----------Struts2內建校驗器------------------------
struts2的所有校驗器在 
xwork-core.jar/com.opensymphony.xwork2.validator.validators/default.xml 中有定義。 

9.Struts2內建校驗器的種類 

相關推薦

Struts2 使用Validation框架驗證資料

在採用struts的xml配置方式校驗資料時,發現怎麼也不起作用。無法按照正常流程,走到input指向的頁面。 一   問題的解決 很多部落格說明了自己查詢的方式,最後都指明瞭是因為配置檔案格式不正確的原因。出現這種問題的時候,應該從下面4個部分考慮:

struts2 validation.xml 驗證

當使用struts2的validation.xml進行驗證時,需要注意如下幾個方面: 1.表單一般使用struts2標籤<s:form validate="false"/>關閉客戶端驗證,使用<s:textfield type="text" name=

Struts2框架資料驗證

資料驗證分為客戶端驗證和伺服器端驗證, Struts2框架的驗證屬於伺服器端的驗證 ①程式設計式驗證 在動作類中重寫validate(): package com.rl.action; import org.apache.struts2.interceptor.val

struts驗證框架的配置及validation.xml常用的驗證規則(Struts2的輸入驗證詳解)

<field name="username"><field-validator type="required"><message>指定檢驗失敗的提示資訊</message></field-validator></field></va

Struts2 Validation 驗證

一個Struts2簡單驗證例項,eclipse。 其他檔案見上篇簡單登入實現。就改了下Action和login.jsp然後加了個validation.xml罷遼。 結構 Action中以Action方法驗證User登入 package com.struts2; i

Struts2框架資料封裝一之屬性封裝(屬性封裝的第二種方式:封裝成javaBean)

Struts2中提供了兩類資料封裝的方式? 第一種方式:屬性驅動(有兩種方式:一個對屬性,另外一個是將引數封裝到javaBean中)   B. 在頁面上,使用OGNL表示式進行資料封裝。(將引數封裝到javaBean中)     * 在頁面中使用OGNL表示式進行資料的封裝,就可以直接把屬性封

Struts2之Validator驗證框架的詳細介紹

Struts2中提供了資料校驗驗證資料例如驗證郵件、數字等。驗證方式有3種: 一是通過validate()方法, 二是通過Xml, 三是使用註解方式。 一、初始化 首先定義一個User類 1 2 3 4 5 6

七、Struts2框架資料封裝

什麼叫框架的資料封裝? 就是將原本需要使用Servlet的Api手動去解析請求引數,然後封裝成model的操作交給了Struts2框架來完成。Struts2的框架採用了攔截器來完成資料的封裝。 兩類資料封裝的方式 1.屬性驅動方式 提供對應屬性的set方法進行資料的封裝。 表單的

Struts2框架資料封裝

1. 為什麼要使用資料的封裝呢? * 作為MVC框架,必須要負責解析HTTP請求引數,並將其封裝到Model物件中 * 封裝資料為開發提供了很多方便 * Struts2框架提供了很強大的資料封裝的功能,不再需要使用Servlet的API完成手動封裝了!! 2. S

Struts2框架封裝資料

主要解決的問題:是在action中如果獲取請求引數主要有兩種方式:1.屬性驅動直接在action類中提供與請求引數匹配屬性,提供get/set方法在action類中創始一個javaBean,對其提供get/set ,在請求時頁面上要進行修改,   例如 user.userna

Struts2表單驗證、模型驅動、防重複提交、資料回顯筆記整理

 剛學完一些零散的struts內建功能,做點筆記,就當回顧一遍,也便以後使用。 -------------------------------------------------------------------------------------------------

struts2框架------驗證機制

在struts2中,我們可以實現對action類的所有方法進行校驗或者對action的指定方法進行校驗。 對於輸入校驗struts2提供了兩種實現方法: 1. 採用手工編寫程式碼實現(程式設計式)。2. 基於XML配置方式實現(宣告式)。 手工校驗機制 在Struts2

struts2 使用驗證框架驗證域模型和ModelDriven驗證

有一類特殊的屬性,即這個屬性的型別是另外一個JavaBean,如有一個User類,程式碼如下: package data; public class User { private String name; private int age; p

基於SSH驗證框架validation.xml驗證不執行

最近在學習使用SSH框架,首先感謝YnWi的部落格(連結http://blog.csdn.net/yeohcooller/article/details/9316923)。在根據YnWi的部落格搭建S

Struts2+Hibernate框架探險

service 分支 環境 eclips 操作 factory rds 相對 targe 寫這篇文章的目的 了解 JavaWeb 開發的人都知道SSH和SSM框架,前段時間開始接觸 JavaWeb 開發,看了幾個教學視頻後就想上手構建一個小型 Web項目,可在跟著視頻敲代碼

《Java從入門到放棄》入門篇:Struts2的常用驗證方式

java struts action 感覺過了一個周末,人都懶得不要不要的,今天就來點簡單的內容吧 - -,各位看官如果欲求不滿的話,可以自行解決或再去寵幸其他“勃主”···struts2的驗證方式主要有四種方式:一、直接在功能方法中寫驗證代碼(不要扔雞蛋,這種辦法確實算一種)二、重寫valida

《Java從入門到放棄》入門篇:Struts2的常用驗證方式(二)

java struts action validate 數據驗證 前一回,我們講完了“直接在功能方法中寫驗證代碼”這種驗證方式,接下來,我們繼續搞定後續的三種方式。二、重寫validate方法(註意這個方法會驗證該類中所有的方法) 使用重寫驗證方法的好處就是,又可以少寫一句代碼了!!

jQuery Validation驗證變得如此easy(二)

inpu jsb sage on() popu action func fonts strong 上一個樣例我們是統一引用jquery.validate.js這樣全部必填字段的提示信息都將是This field is required.如今要改成動態提示,比方姓名假設為

Spring+struts2+Hibernate框架的搭建

param 配置 tro 會有 net click ast scan amp 1.搭建過程 首先需要引入Spring、Struts2、Hibernate的開發包,已經數據庫的驅動包。 UserAction.java文件 package cn.shop.ac

關於停止使用Apache Struts2開發框架的通知

nbsp log 訪問 java es2017 決定 web應用 安全 系統 原文鏈接: http://www.cnblogs.com/yxnchinahlj/p/7770509.html 關於停止使用Apache Struts2開發框架的通知 各有關單位: Apach