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程式碼
- package com.sh.action;
- import java.util.Date;
- import com.opensymphony.xwork2.ActionSupport;
- import com.sun.xml.internal.fastinfoset.stax.events.Util;
- public class ValidateAction extends ActionSupport {
- private String name;
- private String pwd;
- private Date date;
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- return SUCCESS;
- }
- @Override
- public void validate() {
- if(date==null || date.after(new Date())){
- addFieldError("date", "出生日期無效!");
- }
- if(pwd==null || Util.isEmptyString(pwd)){
- addFieldError("pwd", "密碼不能為空!");
- }
- }
- }
3.struts.xml
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>
- <!-- 如果 註解的action配置改變時候不需要重新啟動tomcate -->
- <constant name="struts.i18n.encoding" value="utf-8"/>
- <constant name="struts.devMode" value="false"/>
- <constant name="struts.convention.classes.reload" value="true" />
- <package name="default" extends="struts-default">
- <action name="validateAction" class="com.sh.action.ValidateAction">
- <result>/success.jsp</result>
- <result name="input">/index.jsp</result>
- </action>
- </package>
- </struts>
4.login.jsp
Html程式碼
- <body>
- <s:fielderror/>
- <s:form action="validateAction" method="post" theme="simple">
- 使用者名稱:<s:textfield name="name"/><br/>
- 複合生日:<s:textfield name="pwd"/><br/>
- 常用日期:<s:textfield name="date"/><br/>
- 常用日期2:<sx:datetimepicker name="todayDate" label="Format (yyyy-MM-dd)" displayFormat="yyyy-MM-dd hh:mm:ss"/><br/>
- <s:submit value="提交"/>
- </s:form>
- </body>
5訪問
--http://localhost:8080/Struts2_validate/index.jsp
-----------ValidateXxxx()------------------------
6.只對action中某一個處理方法 進行校驗 測試login(如果 valudate()不註釋,就會對所有的方法起作用)
Java程式碼
- package com.sh.action;
- import java.util.Date;
- import java.util.regex.Pattern;
- import com.opensymphony.xwork2.ActionSupport;
- import com.sun.xml.internal.fastinfoset.stax.events.Util;
- public class ValidateAction extends ActionSupport {
- private String name;
- private String pwd;
- private Date date;
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- return SUCCESS;
- }
- @Override //會對所有的 方法都有作用 比如 execute login
- public void validate() {
- if(date==null || date.after(new Date())){
- addFieldError("date", "出生日期無效!");
- }
- if(pwd==null || Util.isEmptyString(pwd)){
- addFieldError("pwd", "密碼不能為空!");
- }
- }
- //登陸方法
- public String login(){
- return SUCCESS;
- }
- //只對登入方法進行校驗
- public void validateLogin(){
- if(name!=null && !Pattern.matches("\\w{6,15}", name.trim())){
- addFieldError(name, "validateLogin()方法的作用");
- }
- }
- //get set
- }
7.struts.xml
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>
- <!-- 如果 註解的action配置改變時候不需要重新啟動tomcate -->
- <constant name="struts.i18n.encoding" value="utf-8"/>
- <constant name="struts.devMode" value="false"/>
- <constant name="struts.convention.classes.reload" value="true" />
- <package name="default" extends="struts-default">
- <action name="validateAction" class="com.sh.action.ValidateAction">
- <result>/success.jsp</result>
- <result name="input">/index.jsp</result>
- </action>
- <action name="validateLoginAction" class="com.sh.action.ValidateAction" method="login">
- <result>/success.jsp</result>
- <result name="input">/index.jsp</result>
- </action>
- </package>
- </struts>
- 8.訪問
- --http://localhost:8080/Struts2_validate/index.jsp
- --如果不輸入端額話,將會出現指定的錯誤資訊。
-----------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