日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

JSR表单校验框架

發(fā)布時間:2025/3/15 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSR表单校验框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

表單校驗的重要性:

表單校驗保障了數(shù)據(jù)有效性、安全性
不適用表單檢驗數(shù)據(jù)可以隨意輸入,導(dǎo)致錯誤的結(jié)果。后端表單校驗的重要性,比如輸入框采集成績,如果前端做了檢驗,但是用戶比較牛逼,他在地址欄上直接加?score=1000000

表單校驗分類:

校驗位置:

  • 客戶端校驗
  • 服務(wù)端校驗

校驗格式:

  • 客戶端:使用Js技術(shù),利用正則表達式校驗
  • 服務(wù)端:使用校驗框架

邏輯校驗:

  • 客戶端:使用ajax發(fā)送要校驗的數(shù)據(jù),在服務(wù)端完成邏輯校驗,返回校驗結(jié)果
  • 服務(wù)端:接收到完整的請求后,在執(zhí)行業(yè)務(wù)操作前,完成邏輯校驗

表單校驗規(guī)則:

  • 長度:例如用戶名長度,評論字符數(shù)量
  • 非法字符:例如用戶名組成
  • 數(shù)據(jù)格式:例如Email格式、 IP地址格式
  • 邊界值:例如轉(zhuǎn)賬金額上限,年齡上下限
  • 重復(fù)性:例如用戶名是否重復(fù)

JSR規(guī)范列表:

JSR(Java Specification Requests):Java 規(guī)范提案
303:提供bean屬性相關(guān)校驗規(guī)則

企業(yè)應(yīng)用技術(shù):

  • Contexts and Dependency Injection for Java (Web Beans 1.0) (JSR 299)
  • Dependency Injection for Java 1.0 (JSR 330)@postConstruct, @PreDestroy
  • Bean Validation 1.0 (JSR 303)
  • Enterprise JavaBeans 3.1 (includes Interceptors 1.1) (JSR 318)
  • Java EE Connector Architecture 1.6 (JSR 322)
  • Java Persistence 2.0 (JSR 317)
  • Common Annotations for the Java Platform 1.1 (JSR 250)
  • Java Message Service API 1.1 (JSR 914)
  • Java Transaction API (JTA) 1.1 (JSR 907)
  • JavaMail 1.4 (JSR 919)

Web應(yīng)用技術(shù):

  • Java Servlet 3.0 (JSR 315)
  • JavaServer Faces 2.0 (JSR 314)
  • JavaServer Pages 2.2/Expression Language 2.2 (JSR 245)
  • Standard Tag Library for JavaServer Pages (JSTL) 1.2 (JSR 52)
  • Debugging Support for Other Languages 1.0 (JSR 45)
  • 模塊化 (JSR 294)
  • Swing應(yīng)用框架 (JSR 296)
  • JavaBeans Activation Framework (JAF) 1.1 (JSR 925)

管理與安全技術(shù):

  • Java Authentication Service Provider Interface for Containers (JSR 196)
  • Java Authorization Contract for Containers 1.3 (JSR 115)
  • Java EE Application Deployment 1.2 (JSR 88)
  • J2EE Management 1.1 (JSR 77)
  • Java SE中與Java EE有關(guān)的規(guī)范
  • JCache API (JSR 107)
  • Java Memory Model (JSR 133)
  • Concurrency Utilitie (JSR 166)
  • Java API for XML Processing (JAXP) 1.3 (JSR 206)
  • Java Database Connectivity 4.0 (JSR 221)
  • Java Management Extensions (JMX) 2.0 (JSR 255)
  • Java Portlet API (JSR 286)

Web Service技術(shù):

  • Java Date與Time API (JSR 310)
  • Java API for RESTful Web Services (JAX-RS) 1.1 (JSR 311)
  • Implementing Enterprise Web Services 1.3 (JSR 109)
  • Java API for XML-Based Web Services (JAX-WS) 2.2 (JSR 224)
  • Java Architecture for XML Binding (JAXB) 2.2 (JSR 222)
  • Web Services Metadata for the Java Platform (JSR 181)
  • Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101)
  • Java APIs for XML Messaging 1.3 (JSR 67)
  • Java API for XML Registries (JAXR) 1.0 (JSR 93)
  • JCP(Java Community Process):Java社區(qū)

Hibernate框架中包含一套獨立的校驗框架hibernate-validator
Hibernate使用的話需要用高版本的tomcat

導(dǎo)入坐標(biāo)

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.1.0.Final</version> </dependency>

注意:
tomcat7 :搭配hibernate-validator版本5.*.*.Final
tomcat8.5↑ :搭配hibernate-validator版本6.*.*.Final

快速使用:

1. 開啟校驗

  • 名稱:@Valid 、 @Validated
  • 類型:形參注解
  • 位置:處理器類中的實體類類型的方法形參前方
  • 作用:設(shè)定對當(dāng)前實體類類型參數(shù)進行校驗
@RequestMapping(value = "/addemployee") public String addEmployee(@Valid Employee employee) {System.out.println(employee); }

2.設(shè)置校驗規(guī)則

  • 名稱:@NotNull
  • 類型:屬性注解 等
  • 位置:實體類屬性上方
  • 作用:設(shè)定當(dāng)前屬性校驗規(guī)則
  • 范例:
    每個校驗規(guī)則所攜帶的參數(shù)不同,根據(jù)校驗規(guī)則進行相應(yīng)的調(diào)整
    具體的校驗規(guī)則查看對應(yīng)的校驗框架進行獲取
public class Employee{@NotNull(message = "姓名不能為空") // 填上如果用戶這里填空的提示內(nèi)容就可以了private String name;//員工姓名 }

3.獲取錯誤信息

@RequestMapping(value = "/addemployee") public String addEmployee(@Valid Employee employee, Errors errors, Model model){System.out.println(employee);if(errors.hasErrors()){for(FieldError error : errors.getFieldErrors()){model.addAttribute(error.getField(),error.getDefaultMessage());}return "addemployee.jsp";}return "success.jsp"; }

通過形參Errors獲取校驗結(jié)果數(shù)據(jù),通過Model接口將數(shù)據(jù)封裝后傳遞到頁面顯示

<form action="/addemployee" method="post">員工姓名:<input type="text" name="name"><span style="color:red">${name}</span><br/>員工年齡:<input type="text" name="age"><span style="color:red">${age}</span><br/><input type="submit" value="提交"> </form>

通過形參Errors獲取校驗結(jié)果數(shù)據(jù),通過Model接口將數(shù)據(jù)封裝后傳遞到頁面顯示
頁面獲取后臺封裝的校驗結(jié)果信息

多規(guī)則校驗:

同一個屬性可以添加多個校驗器

@NotNull(message = "請輸入您的年齡") @Max(value = 60,message = "年齡最大值不允許超過60歲") @Min(value = 18,message = "年齡最小值不允許低于18歲") private Integer age;//員工年齡

3種判定空校驗器的區(qū)別:

嵌套校驗:

  • 名稱:@Valid
  • 類型:屬性注解
  • 位置:實體類中的引用類型屬性上方
  • 作用:設(shè)定當(dāng)前應(yīng)用類型屬性中的屬性開啟校驗
  • 范例:
public class Employee {//實體類中的引用類型通過標(biāo)注@Valid注解,設(shè)定開啟當(dāng)前引用類型字段中的屬性參與校驗@Validprivate Address address; }

注意:開啟嵌套校驗后,被校驗對象內(nèi)部需要添加對應(yīng)的校驗規(guī)則

分組校驗:

同一個模塊,根據(jù)執(zhí)行的業(yè)務(wù)不同,需要校驗的屬性會有不同

  • 新增用戶
  • 修改用戶

對不同種類的屬性進行分組,在校驗時可以指定參與校驗的字段所屬的組類別

  • 定義組(通用)
  • 為屬性設(shè)置所屬組,可以設(shè)置多個
  • 開啟組校驗
public interface GroupOne { } // Validated才支持分組校驗, public String addEmployee(@Validated({GroupOne.class}) Employee employee){ } @NotEmpty(message = "姓名不能為空",groups = {GroupOne.class}) private String name;//員工姓名

總結(jié)

以上是生活随笔為你收集整理的JSR表单校验框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。