資料轉換&資料格式化&資料校驗
阿新 • • 發佈:2020-12-09
1.資料繫結流程① Spring MVC 主框架將 ServletRequest 物件及目標方法的入參例項傳遞給 WebDataBinderFactory 例項,以建立 DataBinder 例項物件② DataBinder 呼叫裝配在 Spring MVC 上下文中的 ConversionService 元件進行資料型別轉換、資料格式化工作。將 Servlet 中的請求資訊填充到入參物件中③呼叫 Validator 元件對已經綁定了請求訊息的入參物件進行資料合法性校驗,並最終生成資料繫結結果 BindingData 物件④Spring MVC 抽取 BindingResult 中的入參物件和校驗錯誤物件,將它們賦給處理方法的響應入參
圖解:
2.自定義型別轉換器 步驟如下:① 實現Converter<S,T>介面:將S型別物件轉換成T型別物件
來自為知筆記(Wiz)
圖解:
2.自定義型別轉換器
②在SpringMVC配置檔案中配置轉換器public class TestCon implements Converter<String, Employee> { @Override public Employee convert(String s) { if(s != null){ String[] vals = s.split("-"); if(vals != null & vals.length == 4){ String lastName = vals[0]; String email = vals[1]; Integer gender = Integer.parseInt(vals[2]); Department department = new Department(); department.setId(Integer.parseInt(vals[3])); Employee employee = new Employee(null,lastName,email,gender,department); return employee; } } return null; } }
③將自定義的ConversionService註冊到Spring MVC的上下文中<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="testCon"/> </set> </property> </bean>
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
3.<mvc:annotation-driven /><mvc:annotation-driven /> 會自動註冊RequestMappingHandlerMapping 、RequestMappingHandlerAdapter 與 ExceptionHandlerExceptionResolver 三個bean。還將提供以下支援:支援使用 ConversionService 例項對錶單引數進行型別轉換支援使用 @NumberFormat annotation、@DateTimeFormat 註解完成資料型別的格式化支援使用 @Valid 註解對 JavaBean 例項進行 JSR 303 驗證支援使用 @RequestBody 和 @ResponseBody 註解從圖中就能說明重要性@InitBinder由 @InitBinder 標識的方法,可以對 WebDataBinder 物件進行初始化。WebDataBinder 是 DataBinder 的子類,用 於完成由表單欄位到 JavaBean 屬性的繫結 @InitBinder方法不能有返回值,它必須宣告為void。@InitBinder方法的引數通常是是 WebDataBinder4.資料格式化使用步驟 ------------------------>主要針對數字型別、日期型別 比如①在對應的bean物件中的屬性上方加上註解就可以了 ------------------------------->就一步原理:Spring在格式化模組中定義一個實現ConversionService介面的FormattingConversionService實現類,該類擴充套件了GenericConverisonService,因此它既具有型別轉換的功能,又具有格式化的功能。FormattingConversionService擁有FormattingConversionServiceFactotyBean工廠類,從而可以在Spring配置檔案中註冊構造FormattingConversionService。所以轉換器一般就直接配置<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
5.JSR303 資料校驗JSR 303 是 Java 為 Bean 資料合法性校驗提供的標準框架,它已經包含在 JavaEE 6.0 中 .JSR 303 通過在 Bean 屬性上標註類似於 @NotNull、@Max 等標準的註解指定校驗規則,並通過標準的驗證介面對 Bean 進行驗步驟如下:①加入jar包②在需要資料校驗的部分新增如下註解③處理器部分,入參新增@valid註解@RequestMapping(value = "/emp",method = RequestMethod.POST)
public String save(@Valid Employee employee, BindingResult result,Map<String,Object> map){
if(result.getErrorCount() > 0){
System.out.println("出錯了");
for(FieldError error:result.getFieldErrors()){
System.out.println( error.getField() + ":" + error.getDefaultMessage());
}
//若驗證出錯則轉向定製頁面
map.put("departments", departmentDao.getDepartments());
return "input";
}
employeeDao.save(employee);
return "redirect:/emps";
}
來自為知筆記(Wiz)