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

歡迎訪問 生活随笔!

生活随笔

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

javascript

springboot 优雅的参数校验_SpringBoot 2.x 开发案例之优雅的校验参数

發布時間:2024/9/30 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot 优雅的参数校验_SpringBoot 2.x 开发案例之优雅的校验参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

參數如何校驗?擼主很久很久之前的項目都是在前端頁面一個個 if else 的,后來就用了一系列的前端校驗框架,比如 layui iview 等等,幾個樣式屬性就可以輕松搞定,的確是美滋滋。

后端驗證

那么問題來了?前端已經驗證了,后端還有必要驗證嗎?

如果非要有個結果,答案只能是不安全的。雖然客戶端自己對自己已經做了驗證,但是你不能避免一些惡意用戶人為的修改表單直接發送欺騙請求。

所以說,從安全的角度來說,單純的依靠前端驗證,是不安全的,任何健壯的系統都必須在后端進行驗證。

當然,你也不必擔心后臺再寫一坨if else,這里推薦大家一款參數校驗神器 Hibernate-Validator 。SpringBoot的標配JPA是自帶的,小伙伴們直接使用即可。

注解

基本提供了常用的校驗注解,如果不滿足業務,可以通過@Pattern自行定義正則表達式。

@Null 被注釋的元素必須為null @NotNull 被注釋的元素不能為null @AssertTrue 被注釋的元素必須為true @AssertFalse 被注釋的元素必須為false @Min(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值 @Max(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值 @DecimalMin(value) 被注釋的元素必須是一個數字,其值必須大于等于指定的最小值 @DecimalMax(value) 被注釋的元素必須是一個數字,其值必須小于等于指定的最大值 @Size(max,min) 被注釋的元素的大小必須在指定的范圍內。 @Digits(integer,fraction) 被注釋的元素必須是一個數字,其值必須在可接受的范圍內 @Past 被注釋的元素必須是一個過去的日期 @Future 被注釋的元素必須是一個將來的日期 @Pattern(value) 被注釋的元素必須符合指定的正則表達式。 @Email 被注釋的元素必須是電子郵件地址 @Length 被注釋的字符串的大小必須在指定的范圍內 @NotEmpty 被注釋的字符串必須非空 @Range 被注釋的元素必須在合適的范圍內

案例

這里以用戶注冊為例:

@Data @Entity @Table(name = "sys_user") public class SysUser implements Serializable{/*** 用戶id */ @Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "user_id", nullable = false, length = 20)private Long userId;/*** 用戶名 */@NotNull@Column(name = "username", nullable = false, length = 50)private String username;/*** 密碼 */@Size(min = 6, max = 25, message = "密碼長度要求6到25之間")@Column(name = "password", nullable = false, length = 50)private String password;/*** 姓名(昵稱) */ @NotNull@Column(name = "nickname", length = 50)private String nickname;/*** 郵箱 */@Email(message="郵箱格式不正確")@Column(name = "email", length = 100)private String email;/*** 手機號 */@Pattern(regexp="^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))d{8}$",message="手機格式不正確")@Column(name = "mobile", length = 100)private String mobile;/*** 狀態 0:禁用,1:正常 */ @Column(name = "status", length = 4)private Short status;/*** 備注 */ @Column(name = "remark", length = 500)private String remark;/*** 創建用戶id */ @Column(name = "user_id_create")private Long userIdCreate;/*** 創建時間 */@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")@Column(name = "gmt_create")private Timestamp gmtCreate;/*** 修改時間 */@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")@Column(name = "gmt_modified")private Timestamp gmtModified; }

小結

是不是很爽,再也不用 if else 了,當然后臺還沒校驗的另說!最后還是建議各位小伙伴,把安全校驗做充分,省的以后前后端扯皮,最重要的是避免背鍋!!!

http://weixin.qq.com/r/IUwFHVfE1AqrrRN_9xkz (二維碼自動識別)

總結

以上是生活随笔為你收集整理的springboot 优雅的参数校验_SpringBoot 2.x 开发案例之优雅的校验参数的全部內容,希望文章能夠幫你解決所遇到的問題。

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