javascript
SpringMVC校验---SpringMVC学习笔记(八)
校驗的理解
項目中,通常使用較多是前端的校驗,比如頁面中js校驗。對于安全要求較高點建議在服務端進行校驗。
服務端校驗:
控制層conroller:校驗頁面請求的參數的合法性。在服務端控制層conroller校驗,不區分客戶端類型(瀏覽器、手機客戶端、遠程調用)
業務層service(使用較多):主要校驗關鍵業務參數,僅限于service接口中使用的參數。
持久層dao:一般是不校驗的。
SpringMVC校驗
SpringMVC校驗屬于控制層校驗,使用的是hibernate校驗框架validation(只是單純的校驗框架,與hibernate沒有任何關系)。
校驗思路:
頁面提交請求的參數,請求到controller方法中,使用validation進行校驗。如果校驗出錯,將錯誤信息展示到頁面。
具體需求:
商品修改,添加校驗(校驗商品名稱長度,生產日期的非空校驗),如果校驗出錯,在商品修改頁面顯示錯誤信息。
校驗的步驟:
第一步:環境準備
導入hibernate的校驗框架validation所需要jar包:
第二步:配置校驗器
在springmvc.xml文件中添加:
<!-- 校驗器 --><bean id="validator"class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><!-- 校驗器 --><property name="providerClass" value="org.hibernate.validator.HibernateValidator" /><!-- 指定校驗使用的資源文件,如果不指定則默認使用classpath下的ValidationMessages.properties --><property name="validationMessageSource" ref="messageSource" /></bean><!-- 校驗錯誤信息配置文件 --><bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><!-- 資源文件名 --><property name="basenames"><list><!-- 指定校驗文件的路徑地址 --><value>classpath:CustomValidationMessages</value></list></property><!-- 資源文件編碼格式 --><property name="fileEncodings" value="utf-8" /><!-- 對資源文件內容緩存時間,單位秒 --><property name="cacheSeconds" value="120" /></bean>第三步:將校驗器注入到處理器適配器中
配置方式1:
在springmvc.xml文件中添加以下內容中的紅色方框中的屬性:
配置方式2(自學):
<!-- 自定義webBinder --><bean id="customBinder"class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"><property name="validator" ref="validator" /></bean><!-- 注解適配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="webBindingInitializer" ref="customBinder"></property></bean>特別說明:
創建錯誤提示信息文件:
第四步:在pojo中添加校驗規則
在ItemsCustom.java中添加校驗規則:
配置錯誤信息提示文件中的錯誤提示信息:
校驗的注解:
@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(regex=,flag=) 被注釋的元素必須符合指定的正則表達式
Hibernate Validator 附加的 constraint
@NotBlank(message =) 驗證字符串非null,且長度必須大于0
@Email 被注釋的元素必須是電子郵箱地址
@Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內
@NotEmpty 被注釋的字符串的必須非空
@Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內
第五步:捕獲校驗錯誤信息
如果需要pojo需要檢驗,在需要校驗的pojo前邊添加@Validated,在需要檢驗的pojo后邊添加BindingResult bindingResult接收校驗出錯信息。
注意:@Validated和BindingResult bingingResult是配對出現的,并且形參順序是固定的(一前一后)
在Controller的方法中添加如下內容:
第六步:在頁面顯示錯誤校驗信息
1.在controller中將錯誤信息傳到頁面即可:
2.在jsp頁面顯示錯誤信息:
在editItems.jsp中添加如下內容:
分組校驗
需求:
在pojo中定義校驗規則,而pojo是被多個 controller所共用,當不同的controller方法對同一個pojo進行校驗,但是每個controller方法需要不同的校驗。
解決方法:
定義多個校驗分組(其實是一個java接口),分組中定義有哪些規則
每個controller方法使用不同的校驗分組
1.定義校驗分組
分組就是一個標識,這里定義一個接口,接口里面啥也沒有:
2.在校驗規則中指定分組
在需要檢驗的pojo類中:
3.在controller方法中使用指定分組的校驗
在controller方法中:
總結
以上是生活随笔為你收集整理的SpringMVC校验---SpringMVC学习笔记(八)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse和Myeclipse中的p
- 下一篇: 数据回显---SpringMVC学习笔记