struts2資料校驗
當前端通過form表單或者js程式碼將資料提交給後臺之後,我們需要對資料進行校驗。
struts2資料校驗的方式。
一.通過程式碼方式驗證
在使用程式碼的方式進行資料校驗時,我們只需要在需要資料校驗的action中重寫 validate() 方法,在方法內部寫入校驗的程式碼即可。攔截器會自動為action中的每個方法增加該驗證。如果需要對action中特定的某個方法增加資料校驗,則資料校驗方法的方法需按:validate+方法名 格式命名,程式碼如下。
package com.xalo.action;
import com.opensymphony.xwork2.ActionSupport;
/*
* 如果action中要使用struts2提供的資料校驗攔截器,
* 需要繼承ActionSupport介面
*/
public class ValAction extends ActionSupport{
private String userName;
private String password;
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;
}
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
System.out.println("未指定要執行的方法");
return NONE;
}
//增加
public String add(){
System.out.println("增加");
return NONE;
}
//刪除
public String delete(){
System.out.println("刪除");
return NONE;
}
//修改
public String update(){
System.out.println("修改");
return NONE;
}
//查詢
public String query(){
System.out.println("查詢");
return NONE;
}
/*
* 用作資料校驗的方法,前端提交的資料需要在此方法中進行校驗,
* 如果校驗不通過,不會執行action中的其餘方法。尋找result中
* 名稱為input的介面去跳轉
*
* 對當前action中所有的方法都加資料校驗
*/
@Override
public void validate() {
System.out.println("執行了validate方法");
if (userName == null || userName.length()==0) {
//將錯誤資訊存放進值棧的root中
super.addFieldError("userName","使用者名稱不能為空");
}
if(password == null || password.length()==0){
super.addFieldError("password", "密碼不能為空");
}
super.validate();
}
//對指定方法加資料校驗 validata+要資料校驗的方法名
/*
* 校驗通過還是不通過,根據root中的FieldErrors中是否有資訊來判斷
* 如果該map中有資訊,驗證就不通過,在攔截器中return "input"
* 如果該map中沒有資訊,驗證就通過,這行下一個攔截器
* return invcation.invoke();放行
*/
public void validateAdd(){
if(userName==null){
System.out.println("add校驗方法");
super.addFieldError("userName", "使用者名稱不能為空");
}
}
public void validateQuery(){
System.out.println("query校驗方法");
}
}
二.通過配置檔案方式
運用程式碼方式可以完成對資料的校驗,但是在使用時候相對繁瑣,因此通常都是採用配置檔案的方式完成對資料的校驗。在使用配置檔案進行資料校驗時,檔案命名格式:actionName-validate.xml,其中actionName就是需要進行資料校驗的action的類名。
若要對action中某個方法執行資料校驗,則命名格式:actionName-actionMethodName-validation.xml,其中actionName就是需要進行資料校驗的action的類名,actionMethodName就action中要進行資料校驗的方法的方法名。
<?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>
<!--
要驗證的資料
name:對應action中的欄位名
-->
<field name="userName">
<!--校驗器。type:校驗型別 -->
<!-- 欄位值不能為null,也不能是空字串 -->
<field-validator type="requiredstring">
<!--配置引數資訊。是否去除String前後留白-->
<!-- <param name="trim">true</param> -->
<!-- 校驗不通過,錯誤資訊 -->
<message>使用者名稱不能為空</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>年齡不能為空</message>
</field-validator>
<field-validator type="int">
<param name="min">0</param>
<param name="max">150</param>
<message>年齡超出範圍</message>
</field-validator>
</field>
<field name="height">
<field-validator type="required">
<message>身高不能為空</message>
</field-validator>
<field-validator type="double">
<param name="minExclusive">1.6</param>
<param name="maxExclusive">2.26</param>
<message>身高不在範圍內</message>
</field-validator>
</field>
</validators>
校驗型別有很多種,我們根據需求填入系統提供校驗器的名稱。
系統提供校驗器的位置如下:struts2-core-2.5.16.jar/com.opensymphony.xwork2.validator.validators/default.xml中。
原始碼如下
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<!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="creditcard" class="com.opensymphony.xwork2.validator.validators.CreditCardValidator"/>
<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 -->
相關文章
- 資料校驗
- MySQL手動資料校驗+雲資料庫資料校驗MySql資料庫
- easypoi資料校驗
- Struts2中請求引數校驗
- [資料校驗/資料質量] 資料校驗框架(Java):hibernate-validation框架Java
- 行式填報 資料校驗 --- 小計校驗
- ORACLE資料校驗文件Oracle
- Struts2(五) 校驗簡單資料型別方法 和 值棧的說明資料型別
- Binding(四):資料校驗
- 使用 voluptuous 校驗資料
- DW中的資料校驗
- 前端資料校驗後,後端介面是否需要再次校驗?前端後端
- Hibernate資料校驗簡介
- JSR303 資料校驗JS
- 前端資料校驗從建模開始前端
- Struts2教程4:使用validate方法驗證資料
- Struts2教程5:使用Validation框架驗證資料框架
- 前端與後端TP的資料校驗前端後端
- .NET中特性+反射 實現資料校驗反射
- openGauss-資料校驗gs_datacheck
- WPF 資料繫結之ValidationRule資料校驗綜合Demo
- SAP ABAP maintanence view的資料校驗機制AIView
- 使用spring validation 作為資料校驗Spring
- MerkleTree在資料校驗上的應用
- .NET Attribute在資料校驗上的應用
- 整理SQL SERVER資料頁checksum校驗演算法SQLServer演算法
- 深入Spring官網系列(十七):Java資料校驗SpringJava
- 皕傑報表之資料校驗與處理
- 轉轉業務資料校驗平臺實踐分享
- pt-table-checksum進行主從資料校驗
- Symfony2學習筆記之資料校驗筆記
- IP資料包的校驗和演算法_儒雅演算法
- springMVC:校驗框架:多規則校驗,巢狀校驗,分組校驗;ssm整合技術SpringMVC框架巢狀SSM
- [C#.NET 拾遺補漏]09:資料標註與資料校驗C#
- 2.4 一種基於kafka增量資料校驗的方案Kafka
- 深度解析javaScript常見資料型別檢查校驗JavaScript資料型別
- Node 在 Controller 層如何進行資料校驗Controller
- Django ModelForm中使用鉤子函式校驗資料DjangoORM函式