當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSR表单校验框架
表單校驗的重要性:
表單校驗保障了數據有效性、安全性
不適用表單檢驗數據可以隨意輸入,導致錯誤的結果。后端表單校驗的重要性,比如輸入框采集成績,如果前端做了檢驗,但是用戶比較牛逼,他在地址欄上直接加?score=1000000
表單校驗分類:
校驗位置:
- 客戶端校驗
- 服務端校驗
校驗格式:
- 客戶端:使用Js技術,利用正則表達式校驗
- 服務端:使用校驗框架
邏輯校驗:
- 客戶端:使用ajax發送要校驗的數據,在服務端完成邏輯校驗,返回校驗結果
- 服務端:接收到完整的請求后,在執行業務操作前,完成邏輯校驗
表單校驗規則:
- 長度:例如用戶名長度,評論字符數量
- 非法字符:例如用戶名組成
- 數據格式:例如Email格式、 IP地址格式
- 邊界值:例如轉賬金額上限,年齡上下限
- 重復性:例如用戶名是否重復
JSR規范列表:
JSR(Java Specification Requests):Java 規范提案
303:提供bean屬性相關校驗規則
企業應用技術:
- 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應用技術:
- 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應用框架 (JSR 296)
- JavaBeans Activation Framework (JAF) 1.1 (JSR 925)
管理與安全技術:
- 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有關的規范
- 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技術:
- 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社區
Hibernate框架中包含一套獨立的校驗框架hibernate-validator
Hibernate使用的話需要用高版本的tomcat
導入坐標
<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
- 類型:形參注解
- 位置:處理器類中的實體類類型的方法形參前方
- 作用:設定對當前實體類類型參數進行校驗
2.設置校驗規則
- 名稱:@NotNull
- 類型:屬性注解 等
- 位置:實體類屬性上方
- 作用:設定當前屬性校驗規則
- 范例:
每個校驗規則所攜帶的參數不同,根據校驗規則進行相應的調整
具體的校驗規則查看對應的校驗框架進行獲取
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獲取校驗結果數據,通過Model接口將數據封裝后傳遞到頁面顯示
<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獲取校驗結果數據,通過Model接口將數據封裝后傳遞到頁面顯示
頁面獲取后臺封裝的校驗結果信息
多規則校驗:
同一個屬性可以添加多個校驗器
@NotNull(message = "請輸入您的年齡") @Max(value = 60,message = "年齡最大值不允許超過60歲") @Min(value = 18,message = "年齡最小值不允許低于18歲") private Integer age;//員工年齡3種判定空校驗器的區別:
嵌套校驗:
- 名稱:@Valid
- 類型:屬性注解
- 位置:實體類中的引用類型屬性上方
- 作用:設定當前應用類型屬性中的屬性開啟校驗
- 范例:
注意:開啟嵌套校驗后,被校驗對象內部需要添加對應的校驗規則
分組校驗:
同一個模塊,根據執行的業務不同,需要校驗的屬性會有不同
- 新增用戶
- 修改用戶
對不同種類的屬性進行分組,在校驗時可以指定參與校驗的字段所屬的組類別
- 定義組(通用)
- 為屬性設置所屬組,可以設置多個
- 開啟組校驗
總結
- 上一篇: php mysql搭建_PHP+MYSQ
- 下一篇: 百度网盘php文件怎么打开,如何通过网页