日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Springmvc的服务端数据验证-----Hibernate Validator

發布時間:2024/10/12 javascript 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Springmvc的服务端数据验证-----Hibernate Validator 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導入Hibernate validator的Jar包

? hibernate-validator-4.3.0.Final.jar

? jboss-logging-3.1.0.CR2.jar

? validation-api-1.0.0.GA.jar

定義實體類:


public class Student {


?? ?private String name;
?? ?private double score;
?? ?private String mobile;
?? ??? ?
?? ?public String getName() {
?? ??? ?return name;
?? ?}
?? ?public void setName(String name) {
?? ??? ?this.name = name;
?? ?}
?? ?public double getScore() {
?? ??? ?return score;
?? ?}
?? ?public void setScore(double score) {
?? ??? ?this.score = score;
?? ?}
?? ?public String getMobile() {
?? ??? ?return mobile;
?? ?}
?? ?public void setMobile(String mobile) {
?? ??? ?this.mobile = mobile;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return "Student [name=" + name + ", score=" + score + ", mobile="
?? ??? ??? ??? ?+ mobile + "]";
?? ?}

}

?

定義index.jsp頁面  

? <body>
?? Index.jsp <br>
?? <form action="test/some.do" method="post">
? ??? ??? ?姓名:<input name="name"? /> ${nameMsg }<br>
? ??? ??? ?成績:<input name="score"? /> ${scoreMsg }<br>
? ??? ??? ?手機號:<input name="mobile" />${mobileMsg }<br>
? ??? ??? ?<input type="submit" value="提交請求">
?? </form>
? </body>

?

?

?

定義Controller

import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {

?? ?@RequestMapping("/test/some.do")
?? ?//@Validated 表名Student是使用了Bean驗證
?? ?//BindingResult是異常信息
?? ?public ModelAndView doSome(@Validated Student student , BindingResult br) {
?? ??? ?
?? ??? ?ModelAndView mv = new ModelAndView();
?? ??? ?//默認的成功頁面
?? ??? ?mv.setViewName("/show.jsp");

?? ??? ?//異常的判讀處理
?? ??? ?List<ObjectError> errors = br.getAllErrors();
?? ??? ?//size() > 0 表名有異常
?? ??? ?if(errors.size() > 0 ){
?? ??? ??? ?//獲取指定屬性的異常
?? ??? ??? ?FieldError nameError = br.getFieldError("name");
?? ??? ??? ?FieldError scoreError = br.getFieldError("score");
?? ??? ??? ?FieldError mobileError = br.getFieldError("mobile");
?? ??? ??? ?
?? ??? ??? ?// name屬性驗證失敗了,產生了error
?? ??? ??? ?if( nameError != null){
?? ??? ??? ??? ?mv.addObject("nameMsg", nameError.getDefaultMessage());
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?if( scoreError != null){
?? ??? ??? ??? ?mv.addObject("scoreMsg", scoreError.getDefaultMessage());
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?if( mobileError != null){
?? ??? ??? ??? ?mv.addObject("mobileMsg", mobileError.getDefaultMessage());
?? ??? ??? ?}
?? ??? ??? ?mv.setViewName("/index.jsp");
?? ??? ?}
?? ??? ?return mv;
?? ?}
}

/**

只要發生數據驗證失敗,則需要將頁面重新跳轉到index.jsp表單頁面,讓用戶重寫輸入

BindingResult 接口中常用的方法

getAllErrors() :獲取到所有的異常信息,其返回值為List ,但若沒有發生異常,則該List也被創建,只不過其size()為0,而非List為Null

getFieldError() : 獲取指定屬性的異常信息

getErrorCount() : 獲取所有異常的數量

getRawFieldValue() : 獲取到用戶輸入引發驗證異常的原始值.

*/

?

?

?

定義show.jsp頁面

<html>
?   <head>?? ?
?   </head> ?
?   <body>
?  ?   show.jsp <br>
?   </body>
</html>

?

?

定義SpringMVC配置文件

? <!-- 注冊包掃描器 -->
? <context:component-scan base-package="com.zx.*" />
? <!-- 注冊驗證器 -->
? <bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
? ?? ?? <!-- 指定使用的驗證框架, 驗證器的提供者 -->
? ?? ?? <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
? </bean>
?
? <!-- 把驗證器給注解驅動 -->
? <mvc:annotation-driven validator="myValidator" />
?

?

?

?

?

在實體屬性上添加驗證注解:

  使用的驗證器注解均為:javax.validation.constraints包中的類.在注解的message屬性中,可以使用{屬性名}的方式來引用指定的注解的屬性值

?

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

public class Student {
?? ?//驗證的注解放在屬性上,指定驗證的規則
?? ?@NotEmpty(message="姓名不能為空")
?? ?@Size(min=3,max=6,message="姓名長度是{min}到{max}")
?? ?private String name;
?? ?@Min(value=0,message="成績不能小于0")
?? ?@Max(value=100,message="成績不能大于100")
?? ?private double score;
?? ?@NotEmpty(message="手機號不能為空")
?? ?@Pattern(regexp="^1[34578]\\d{9}$",message="手機號格式不正確")
?? ?private String mobile;
?? ??? ?
?? ?public String getName() {
?? ??? ?return name;
?? ?}
?? ?public void setName(String name) {
?? ??? ?this.name = name;
?? ?}
?? ?public double getScore() {
?? ??? ?return score;
?? ?}
?? ?public void setScore(double score) {
?? ??? ?this.score = score;
?? ?}
?? ?public String getMobile() {
?? ??? ?return mobile;
?? ?}
?? ?public void setMobile(String mobile) {
?? ??? ?this.mobile = mobile;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return "Student [name=" + name + ", score=" + score + ", mobile="
?? ??? ??? ??? ?+ mobile + "]";
?? ?}

}

?

Hibernate Validator中常用的驗證注解介紹:

1.@AssertFalse? : 驗證注解的元素值時false

2.@AssertTrue : 驗證注解的元素值時true

3.@DecimalMax(value=x) : 驗證注解的元素值小于等于指定的十進制value值

4.DecimalMin(value=x) : 驗證注解的元素值大于等于指定的十進制value值

5.@Degits(integer=整數位數,fraction=小數位數) : 驗證注解的元素值的整數位樹和小數位數上線

6.@Futrue : 驗證注解的元素值(日期類型) 比當前時間晚

7.@Max(value=x) : 驗證注解的元素值小于等于指定的value值

8.@Min(value=x) 驗證注解的元素值大于等于指定的value值

9.@NotNull : 驗證注解的元素值不是null

10.@Null : 驗證注解的元素值是null

11.@Past : 驗證注解的元素值(日期類型)比當前時間早

12.@Pattern(regex=正則表達式)? : 驗證注解的元素值與指定的正則表達式匹配

13.@Size(min=最小值,max=最大值) : 驗證注解的元素值在min和max(包含)指定區間,如字符長度,集合大小

14.@Valid : 驗證關聯的對象 ,如賬戶對象里有一個訂單對象,指定驗證訂單對象

15.@NotEmpty : 驗證注解的元素值不為null且不為空(字符長度不為0,集合大小不為0)

16.@Renge(min=最小值,max=最大值) 驗證注解的元素值在最小值和最大值之間

17.@NotBlank : 驗證注解的元素不為空(不為null,去除首位空格后長度為0),不同于@NotEmpty,@NotBlank只應用于字符串且在比較時會去除字符串的空格

18.@Length(min=下限,max=上線) 驗證注解的元素值長度在min和max區間內

19.@Email : 驗證注解的元素值時Emali,也可以通過正則表達式和flag指定自定義的email格式

注意:

  @NotNull,? @NotEmpty 和@NotBlank的區別

    @NotNull?????????? 任何對象的value不能為null

    @NotEmpty?????? 集合對象的元素不為0,即集合不為空,也可以用于字符串不為null

    @NotBlank??????? 只能用于字符串不為null,并且字符串trim()以后length要大于0

?

轉載于:https://www.cnblogs.com/zwjcom/p/11365522.html

總結

以上是生活随笔為你收集整理的Springmvc的服务端数据验证-----Hibernate Validator的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 69av一区二区三区 | av免费在线电影 | 一区二区三区91 | 人人澡人人爽 | 人妻天天爽夜夜爽一区二区三区 | 中文字幕av在线免费观看 | 久久精品视频久久 | 热@国产 | www.欧美日韩 | 国产在线播放网站 | 健身教练巨大粗爽gay视频 | 影音先锋中文字幕一区二区 | 超污网站在线观看 | 欧美做爰xxxⅹ性欧美大片 | 女人张开双腿让男人捅 | 日韩欧美福利 | 日韩一区二区三区四区五区六区 | 青青草原综合久久大伊人精品 | 亚洲欧美91 | 久久人人爽人人爽人人片av免费 | 被两个男人吃奶三p爽文 | 国产xx视频 | 中日韩精品在线 | 色综合99 | 男人天堂电影 | 亚州国产精品视频 | 呦呦精品 | 视频一区二区在线 | 天天看天天干 | 女人下面流白浆的视频 | 国产第一精品 | 美女主播福利视频 | 亚洲天堂美女视频 | 国产在线视频资源 | 在线免费一区 | 色桃av | 黄色在线观看www | 欧美激情综合五月色丁香 | 草草地址线路①屁屁影院成人 | 欧美裸体视频 | 国产精品丝袜黑色高跟鞋 | 手机亚洲第一页 | 亚洲 日本 欧美 中文幕 | 波多野结衣之潜藏淫欲 | 人人射人人干 | 午夜国产视频 | 麻豆 美女 丝袜 人妻 中文 | 茄子av| 日韩一区在线视频 | 欧美天堂久久 | 中国少妇毛片 | av成人免费在线观看 | 欧洲性猛交 | 中文字幕一区二区三区视频 | 国产91片| 国产成人无码一区二区三区在线 | 丰满圆润老女人hd | 销魂美女一区二区 | 欧美激情第五页 | 911成人网 | 青青操国产 | 一区二区中文字幕 | 亚洲免费网站 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 最近免费中文字幕中文高清百度 | 无码人妻精品一区二区50 | 美女av片 | 国产妻精品一区二区在线 | 亚洲精品天天 | 黄色免费网站观看 | 18视频在线观看网站 | 狠狠人妻久久久久久综合 | 精品国产黄 | 五月天综合网 | 黄页网站在线 | 国产精品二区在线观看 | 乱中年女人伦 | 成人黄色在线免费观看 | 内谢少妇xxxxx8老少交视频 | 国产探花在线精品一区二区 | 水果视频污 | 日本老肥婆bbbwbbbwzr | a级片一级片| 黄色大片儿. | 久久精品99国产精品日本 | 关秀媚三级 | 精品视频在线观看免费 | 国产伦理吴梦梦伦理 | 日韩av在线免费看 | 五月天婷婷综合网 | 日韩黄片一区二区 | 国产毛片视频 | 久久天天东北熟女毛茸茸 | 日韩欧美在线观看免费 | 欧美特一级 | 国产极品美女高潮无套在线观看 | 日本加勒比一区二区 | 国语对白一区 | av每日更新 |