java validation 後臺引數驗證
一、前言
在後臺開發過程中,對引數的校驗成為開發環境不可缺少的一個環節。比如引數不能為null,email那麼必須符合email的格式,如果手動進行if判斷或者寫正則表示式判斷無意開發效率太慢,在時間、成本、質量的博弈中必然會落後。所以把校驗層抽象出來是必然的結果,下面說下幾種解決方案。
二、幾種解決方案
1、struts2的valid可以通過配置xml,xml中描述規則和返回的資訊,這種方式比較麻煩、開發效率低,不推薦
2、validation bean 是基於JSR-303標準開發出來的,使用註解方式實現,及其方便,但是這只是一個介面,沒有具體實現.Hibernate Validator是一個hibernate獨立的包,可以直接引用,他實現了validation bean同時有做了擴充套件,比較強大 ,實現圖如下:
3、oval 是一個可擴充套件的Java物件資料驗證框架,驗證的規則可以通過配置檔案、Annotation、POJOs 進行設定。可以使用純 Java 語言、JavaScript 、Groovy 、BeanShell 等進行規則的編寫,本次不過多講解
三、bean validation 框架驗證介紹
bean validation 包放在maven上維護,最新包的座標如下:
1 2 3 4 5 |
< dependency >
< groupId >javax.validation</ groupId >
< artifactId >validation-api</ artifactId >
< version >1.1.0.Final</ version >
</ dependency >
|
下載之後開啟這個包,有個package叫constraints,裡面放的就是驗證的的註解:
下面開始用程式碼實踐一下:
1、定義一個待驗證的bean:Student.java
View Code2、測試類:StudentTest.java
View Code3、執行testValidation()方法,輸處如下:
地址應該在6-30字元之間 郵箱的格式不合法 生日必須在當前時間之前 多吃點飯吧 名字不能為空
4、總結
- 像@NotNull、@Size等比較簡單也易於理解,不多說
- 因為bean validation只提供了介面並未實現,使用時需要加上一個provider的包,例如hibernate-validator
- @Pattern 因為這個是正則,所以能做的事情比較多,比如中文還是數字、郵箱、長度等等都可以做
- @AssertTRue 這個與其他的校驗註解有著本質的區別,這個註解適用於多個欄位。例子中isHaveFriend方法依賴friendName欄位校驗
- 驗證的api是經過我加工了一下,這樣可以批量返回校驗的資訊
- 有時我們需要的註解可能沒有提供,這時候就需要自定義註解,寫實現類,下面說一下自定義註解的使用
四、自定義bean validation 註解驗證
有時框架自帶的沒法滿足我們的需求,這時就需要自己動手豐衣足食了,恩恩 ,這個不難,下面說下。
這個例子驗證字串是大寫還是小寫約束標註,程式碼如下:
1、列舉型別CaseMode
, 來表示大寫或小寫模式
2、定義一個CheckCase的約束標註
View Code 3、約束條件CheckCase
的驗證器
4、在Student.java中增加一個屬性
View Code5、在StudentTest.java的getBean()方法中增加一行
bean.setSpellName("XIAOGANGFAN");
6、執行testValidation()方法,輸處如下:
地址應該在6-30字元之間
郵箱的格式不合法
生日必須在當前時間之前
多吃點飯吧
名字的拼音需要小寫
名字不能為空
7、說明新增的約束生效了,大功告成
程式碼下載地址:[email protected]:xiaogangfan/vaidation.git
命令: git clone [email protected]:xiaogangfan/vaidation.git
相關推薦
java validation 後臺引數驗證
一、前言 一、前言 在後臺開發過程中,對引數的校驗成為開發環境不可缺少的一個環節。比如引數不能為null,email那麼必須符合email的格式,如果手動進行if判斷或者寫正則表示式判斷無意開發效率太慢,在時間、成本、質量的博弈中必然會落後。所以把校驗層抽象出來是必然的結果,下面說下幾種解決
後臺引數驗證的幾種方式
前臺和後臺驗證(MVC、Struts2)的必要性經驗總結: 1.後端驗證是必需的,只有後端驗證才能保證表單資料輸入的合法性,前端驗證的主要目的是為了方便使用者,增強使用者體驗。2.雖然不是必需的,但目前也算是一種發展趨勢,特別是面向一般使用者的網站,沒有加前端驗證可能會加大使用者註冊跑路率。3.前端驗證方式
總結篇-後臺引數驗證的幾種方式
1.前言 引數驗證是一個常見的問題,無論是前端還是後臺,都需對使用者輸入進行驗證,以此來保證系統資料的正確性。對於web來說,有些人可能理所當然的想在前端驗證就行了,但這樣是非常錯誤的做法,前端程式碼對於使用者來說是透明的,稍微有點技術的人就可以繞過這個驗證,
JAVA引數驗證 Validation(二)分組校驗&自定義校驗
有些時候一個物件會在多個場景使用,不同場景對該物件中的引數校驗需求不同,即有些場景不對引數進行校驗。 比如註冊時,我們要填寫出生日期引數,但是登入時並不需要該引數 這裡可以用到校驗分組groups public class User implement
【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:多引數尋優
【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:多引數尋優 一、網格搜尋原理 二、網格搜尋+交叉驗證用於多引數尋優的python實現 1、訓練模型及待尋優引數 2、直接迴圈巢狀實現網格搜尋 + cros
【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:單一引數尋優
【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:單一引數尋優 一、交叉驗證的意義 二、常用的交叉驗證方法 1、Hold one method 2、K-flod CV 3、Leave-One-Ou
WebGeeker-Validation: 一個強大的引數驗證工具(PHP)
主要用於對API請求的引數取值進行合法性驗證。 在實現服務端的API介面時,對於每一個介面的每一個引數,都應該驗證其取值是否合法,以免錯誤的資料輸入到系統中。這個工作可以說是費時費力,但又不得不做。本工具就是針對這個工作而設計的,能夠有效地減少編碼量,程式碼
Java web 後臺選單許可權驗證方法
首先有個選單表,和許可權表,使用者表, 使用者表id 關聯許可權id 許可權表中要有個 許可權欄位 下面開始說許可權欄位中的資料存什麼: 這裡我們運用BitInteger這個類 1.在建立角色許可權時首先運用 BitInteger中setBit( int);方法將所有
【Java】@PathVariable與@RequestParam 影響後臺引數型別與前臺傳參的形式
前言 小編最近在維護專案的過程中,遇到了swagger中不同環境下的同一方法執行效果不同。 一、問題背景 自己在寫SSM框架中的controller層寫方法時,將兩個注入@PathVaria
java頁面傳引數到後臺
注意:著重記錄獲取單選框攜帶屬性的值。 實現的小功能:單選框攜帶一個屬性的值並後臺獲取到這個屬性的值 1、下面是一個簡單的單選框,通過ajax在後臺取得的money和salemoney的值。 <div style='width:80px;display: inline-bl
java後臺產生驗證碼後臺驗證
直接跳severlet在java後臺生成驗證碼:@RequestMapping(value="yzm.action") public void Yzm(HttpSession session,HttpServletResponse resp){ // 驗證碼圖片的寬度
java引數驗證
一、導包 hibernate-validator-4.2.0.Final.jar validation-api-1.0.0.GA.jar 二、配置檔案 <bean id="validator" class="org.springframework.validatio
jquery validation表單驗證插件2。
back nbsp $() static 輸入 run hand get () <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></t
java之後臺返回json格式字符串,前臺接受並轉為json文件
length con exc != gin for idt ajax emp 作為一個菜鳥,做項目真的好困難呀,這兩天被一個問題困了兩天,終於解決了,但是也不算太完美。首先,先說一下問題吧,根據後臺返回的值,前臺接受並作出一個折線圖。 最初,在後臺根據從數據庫中的值
Java基礎之身份證驗證
日期格式 三位數 catch 功能 parseint log main str formate //簡約版package test; import java.util.Scanner; public class ID { /** * 匹配算法 :
JAVA生成問答式驗證碼圖片,支持加減算法
idt case rate cas end setattr ons trace api 原文:http://liuguihua0823.iteye.com/blog/1511355 import java.awt.Color; import java.awt.Font
Java實現身份證號碼驗證源碼分享
分隔 toc bst nbsp port birt random exti 一位數 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;
jQuery之Validation表單驗證插件使用
urn html .org utf span con require input 詳情 <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <met
java 實現登錄驗證碼 (kaptcha 驗證碼組件)
內容 清除 pub auto 二維碼 我們 constant nts extend 驗證碼的作用: 1、防止廣告機註冊和發帖、評論。2、防止暴力破解密碼,特別是有管理員權限的密碼。 在這裏介紹一種非常實用的驗證碼生成工具:kaptcha 這個工具,可以生成各種樣式的驗證碼
java ssm 後臺框架平臺 項目源碼 websocket IM quartz springmvc
結果 ssg service ava 其它 開發 拍照 強制 iis 博文來源:http://www.fhadmin.org/webnewsdetail2.htmlA代碼編輯器,在線模版編輯,仿開發工具編輯器,pdf在線預覽,文件轉換編碼B 集成代碼生成器 [正反雙向](單