




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
SpringMVCSpringMVC在3.0版本之前有自己的驗證功能,是通過定義與實體類有關(guān)聯(lián)的校驗類實現(xiàn)的,在3.0之后增加了對JSR303校驗規(guī)范的支持。3定義與Bean對應(yīng)的校驗類方式為了實現(xiàn)對實體類實現(xiàn)校驗,需要在實體類同名的包內(nèi)定義實現(xiàn)了Validator接口的XxxValidator類,然后在該類內(nèi)完成數(shù)據(jù)合法性的校驗。例如實體類叫做com.shinowit.entity.UserInfo則校驗類應(yīng)該為com.shinowit.entity.UserInfoValidator,并實現(xiàn)Validator接口??刂破黝惔a中在需要校驗的實體類參數(shù)前寫@Valid注解,并提前注冊校驗器。實體類代碼:@Entity@Table(name="user_info",uniqueConstraints={@UniqueConstraint(columnNames={"user_name"})//定義唯一索引的字段})publicclassUserInfo{@Id@GeneratedValue(generator="uuidgenerator")@GenericGenerator(name="uuidgenerator",strategy="uuid")@Column(name="user_id",length=32)privateStringuserid;@Column(name="user_name",length=30)privateStringusername;@Column(name="user_pass",length=50)privateStringuserpass;privateintage;校驗類代碼:importorg.springframework.validation.Errors;importorg.springframework.validation.ValidationUtils;importorg.springframework.validation.Validator;publicclassUserInfoValidatorimplementsValidator{@Overridepublicbooleansupports(Class<?>clazz){returnclazz==UserInfo.class;//判斷待校驗對象是否是UserInfo類
}@Overridepublicvoidvalidate(Objecttarget,Errorserrors){UserInfouserInfo=(UserInfo)target;if((userInfo.getUsername()==null)||(userInfo.getUsername().trim().length()<1)){ValidationUtils.rejectIfEmpty(errors,"username",null,"用戶名輸入不正確,不能為空!");}if((userInfo.getUsername()!=null)&&(userInfo.getUsername().trim().length()<3)){errors.rejectValue("username",null,"用戶名不能小于3個字符!");}}}控制器類代碼:@Controller@RequestMapping(value="/user")publicclassUserManagerController{@ResourceprivateBaseDAO<UserInfo>user_dao;@InitBinderpublicvoidinitBinder(DataBinderbinder){//向當(dāng)前Controller注冊校驗器
binder.setValidator(newUserInfoValidator());}@RequestMapping(value="/new",method=RequestMethod.GET)publicStringprepareNew(@ModelAttribute("user")UserInfouserInfo){userInfo.setAge(20);//提供一些缺省值簡化用戶輸入
return"user/create";}@RequestMapping(value="/new",method=RequestMethod.POST)publicStringprepareNew(@Valid@ModelAttribute("user")UserInfouserInfo,BindingResultbindingResult,RedirectAttributesredirectAttributes,Modelmodel){if(bindingResult.hasErrors()){return"user/create";}Stringnew_user_id=null;try{new_user_id=(String)user_dao.insert(userInfo);}catch(Exceptione){e.printStackTrace();}if(null!=new_user_id){redirectAttributes.addFlashAttribute("msg","保存成功!");return"redirect:/user/list";}else{model.addAttribute("msg","保存失敗!");return"user/create";}}}create.jsp代碼:<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri=""%><%@taglibprefix="form"uri=""%><html><head><title></title><style>.errorClass{color:#ff0000;font-weight:bold;}</style></head><body>${msg}<form:formmodelAttribute="user"action="${ctx}/user/new"method="post"><label>用戶名:</label><form:inputpath="username"/><form:errorspath="username"cssClass="errorClass"></form:errors><label>密碼:</label><form:passwordpath="userpass"/><form:errorspath="userpass"cssClass="errorClass"></form:errors><label>年齡:</label><form:inputpath="age"/><form:errorspath="age"cssClass="errorClass"></form:errors><inputtype="submit"value="提交"/></form:form></body></html>實現(xiàn)org.springframework.validation.Validator校驗接口的方法小結(jié):需要定義校驗器類并實現(xiàn)特定的接口。需要在使用前注冊或者實例化。10JSR303校驗什么是JSR303?JSR303–BeanValidation是一個數(shù)據(jù)驗證的規(guī)范,2009年11月確定最終方案。2009年12月JavaEE6發(fā)布,BeanValidation作為一個重要特性被包含其中。如何使用?--在需要校驗的對象上面寫注解即可,例如:可以寫哪些注解?@Null 被注釋的元素必須為null@NotNull 被注釋的元素必須不為null@AssertTrue 被注釋的元素必須為true@AssertFalse 被注釋的元素必須為false@Min(value) 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值@Max(value) 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值@DecimalMin(value) 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值@DecimalMax(value) 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值@Size(max,min) 被注釋的元素的大小必須在指定的范圍內(nèi)@Digits(integer,fraction) 被注釋的元素必須是一個數(shù)字,其值必須在可接受的范圍內(nèi)@Past 被注釋的元素必須是一個過去的日期@Future 被注釋的元素必須是一個將來的日期@Pattern(value) 被注釋的元素必須符合指定的正則表達式Hibernate對標準的JSR303規(guī)范有所擴充:@Email 被注釋的元素必須是電子郵箱地址@Length 被注釋的字符串的大小必須在指定的范圍內(nèi)@NotEmpty 被注釋的字符串的必須非空@Range 被注釋的元素必須在合適的范圍內(nèi)示例:@Column(name="user_name",length=30)
@Size(min=3,max=30,message="用戶名必須介于3到30個字符之間")
privateStringusername;@Column(name="user_pass",length=50)@Size(min=1,max=50,message="密碼必須介于1到50個字符之間")
privateStringuserpass;控制器代碼:@Controller@RequestMapping(value="/user")publicclassUserManagerController{@ResourceprivateBaseDAO<UserInfo>user_dao;@RequestMapping(value="/new",method=RequestMethod.GET)publicStringprepareNew(@ModelAttribute("user")UserInfouserInfo){userInfo.setAge(20);//提供一些缺省值簡化用戶輸入
return"user/create";}@RequestMapping(value="/new",method=RequestMethod.POST)publicStringprepareNew(@Valid@ModelAttribute("user")UserInfouserInfo,BindingResultbindingResult,RedirectAttributesredirectAttributes,Modelmodel){if(bindingResult.hasErrors()){return"user/create";}Stringnew_user_id=null;try{new_user_id=(String)user_dao.insert(userInfo);}catch(Exceptione){e.printStackTrace();}if(null!=new_user_id){redirectAttributes.addFlashAttribute("msg","保存成功!");return"redirect:/user/list";}else{model.addAttribute("msg","保存失敗!");return"user/create";}}前端jsp代碼:<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri=""%><%@taglibprefix="form"uri=""%><html><head><title></title><style>.errorClass{color:#ff0000;font-weight:bold;}</style></head><body>${msg}<form:formmodelAttribute="user"action="${ctx}/user/new"method="post"><label>用戶名:</label><form:inputpath="username"/><form:errorspath="username"cssClass="errorClass"></form:errors><label>密碼:</label><form:passwordpath="userpass"/><form:errorspath="userpass"cssClass="errorClass"></form:errors><label>年齡:</label><form:inputpath="age"/><form:errorspath="age"cssClass="errorClass"></form:errors><inputtype="submit"value="提交"/></form:form></body></html>18JSR303校驗與國際化除了可以在定義JSR303校驗規(guī)則的時候?qū)憽癿essage=”提供校驗失敗后的提示信息,還可以提供國際化資源id完成校驗失敗消息的國際化編程支持。@Size(min=3,max=30,message=“用戶名必須介于3到30個字符之間”)//提示消息寫死的方式
privateStringusername;@Size(min=1,max=50,message=“{userinfo.userpass.invalid}”)//寫成資源文件id的方式
privateStringuserpass;要讓校驗消息完成國際化支持,需要確保springmvc的配置參數(shù)里面包含以下三部分內(nèi)容:<mvc:annotation-drivenconversion-service="conversionService"validator="validator"/><!--缺省的類型轉(zhuǎn)換錯誤提示消息資源文件--><beanid="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><propertyname="basename"value="WEB-INF/classes/messages"/><propertyname="fileEncodings"value="utf-8"/><propertyname="cacheSeconds"value="-1"/><!--neverreload--><propertyname="useCodeAsDefaultMessage"value="true"/></bean><!--JSR303Validator定義--><beanid="validator"class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><propertyname="providerClass"value="org.hibernate.validator.HibernateValidator"/><propertyname="validationMessageSource"ref="messageSource"/></bean>示例://實體類增加JSR303校驗規(guī)則,message里面寫資源文件內(nèi)容id值@Column(name="user_pass",length=50)@Size(min=1,max=50,message="{userinfo.userpass.invalid}")//JSR303驗證
privateStringuserpass;//messages_zh_CN.properties文件內(nèi)的內(nèi)容userinfo.userpass.invalid=用戶密碼輸入不滿足要求22自定義JSR303校驗器手機號碼校驗器代碼示例:importjavax.validation.Constraint;importjavax.validation.Payload;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target({ElementType.FIELD,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy=MobilePhoneValidator.class)public@int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水務(wù)數(shù)字化轉(zhuǎn)型的實例計劃
- 增強幼兒動手能力的教學(xué)活動計劃
- 數(shù)字工具在項目管理中的作用計劃
- 學(xué)生能力培養(yǎng)策略計劃
- 體育鍛煉與健康促進方案計劃
- 2025年臘八節(jié)幼兒園活動標準教案
- 胸腔積液的護理問題與護理措施
- 倉庫服務(wù)創(chuàng)新的實踐探索計劃
- 創(chuàng)意寫作社團創(chuàng)作訓(xùn)練計劃
- 員工招聘管理專題培訓(xùn)
- 2025年危化企業(yè)安全教育培訓(xùn)計劃
- 《HR的成長之路》課件
- 2025年山東浪潮集團有限公司招聘筆試參考題庫含答案解析
- U8UAP開發(fā)手冊資料
- GB 17681-2024危險化學(xué)品重大危險源安全監(jiān)控技術(shù)規(guī)范
- 2018NFPA10便攜式滅火器標準
- 橋梁樁基工程培訓(xùn)課件
- 裝修完成情況報告范文
- 考試五類職業(yè)適應(yīng)性測試試題庫及答案
- 專題11 電磁感應(yīng)-2024物理高考真題及模考題分類匯編
- 《中國各民族的語言》課件
評論
0/150
提交評論