激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 詳解SpringMVC的類型轉換及驗證方法

詳解SpringMVC的類型轉換及驗證方法

2021-06-02 15:53Java之家 Java教程

在本篇文章里面我們給大家詳細分析了SpringMVC的類型轉換及驗證方法的相關知識,對此有需要的朋友們學習下吧。

spring mvc 數據綁定流程

springmvc將servletrequest對象及目標方法的形參實例傳給webdatabinderfactory實例,以創建databinder實例對象。databinder調用裝配在springmvc上下文中的conversionservice組件進行類型轉換和數據格式化工作,將servlet請求信息填充到形參對象中。調用validator主鍵對已經綁定了請求信息的形參對象精選數據有效性驗證,并最終生成數據綁定結果bindingdata對象。springmvc抽取bindingresult中的形參對象和校驗錯誤對象,將他們賦給處理方法的相應參數

我們查看源代碼可以看到,通過webdatabinderfactory創建databinder對象

詳解SpringMVC的類型轉換及驗證方法

自定義類型轉換器

當我們碰到一些特殊場合,有可能需要我們自己定義類型轉換器。下麥呢來講解一個自定義類型轉器,將字符串轉換成emp對象,當頁面無法完成數據綁定或者類型轉換時,springmvc會拋出異常,異常信息可以使用bindingresult來進行獲取。

spring定義了三種類型的轉換器接口,實現任意一個轉換器接口都可以作為自定義轉換器注冊到conversionservicefactorybean中。

convertre<s,t>:將s類型轉換為t類型。

converterfactory:將相同系類的多個“同質”converter封裝在一起,如果希望一種類型轉換成另一種類型以及子類對象(例如string轉換成number以number的子類),可以使用該轉換器

genericconverter:會根據源類對象以及目標類對象所在的宿主類中的上下文信息精選類型轉換。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.spring.mvc.controller;
import org.springframework.core.convert.converter.converter;
import org.springframework.stereotype.component;
@component
public class userconverter implements converter<string, user>{
 @override
 public user convert(string source) {
  system.out.println(source);
  string users [] = source.split("-");
  user user = new user();
  user.setuno(integer.valueof(users[0]));
  user.setusername(users[1]);
  user.setuserpass(users[2]);
  return user;
 }
}

conversionservice時springmvc中類型轉換器的核心接口,要添加自定義類型轉換器,需要實現該接口/利用

conversionservicefactorybean在spring的ioc容器中第一一個conversionservice,并在bean屬性配置對于的類型轉換器的實現類,springmvc處理方法的形參綁定時就會自動調用該類型轉換器。

?
1
2
3
4
5
6
7
8
9
10
11
12
<!--將非mapping配置下的請求交給默認的servlet來處理 -->
 <mvc:default-servlet-handler />
 <bean id="conversionservice"
  class="org.springframework.context.support.conversionservicefactorybean">
  <property name="converters">
   <set>
    <ref bean="userconverter" />
   </set>
  </property>
 </bean>
 <!-- 注冊類型轉換器 -->
 <mvc:annotation-driven conversion-service="conversionservice" />

在實際的開發同需要配置:<mvc:annotation-driven />標簽

數據格式化

對屬性的輸入/輸出格式化,其本質來講依然屬于類型轉換的范疇。spring在格式化模塊中定義一個實現conversionservice接口的farmattingconversionservice實現類,該實現類擴展了genericconversionservice,因此它既具有類型轉換的功能有具有格式化的功能。formattingconversionservice擁有一個formattingconversionservicefactorybean工廠類,后者用于構造前者。我們要注冊這個

?
1
<mvc:annotation-driven conversion-service="formattingconversionservicefactorybean" />

jsr303

jsr303時java為bean數據合法性校驗提供的標準框架,它已經包含在javaee6.0中,jsr303通過在bean屬性上標注類似@notnull,@max等標準的數據指定驗證規則,并通過標注的驗證接口對bean進行驗證。

?
1
2
3
4
5
6
7
8
9
10
11
12
@notempty
 @notnull
 private string name;
  
 @notnull
 @notempty
 private string age;
  
 @notnull
 @notempty
 @email
 private string email;

我們在前臺使用springmvc提供的form標簽使用form:errors path 綁定屬性即可

?
1
2
3
4
5
6
7
8
@requestmapping(value="/student",method=requestmethod.post)
 public string add(@valid()student student,bindingresult result){
  if (!result.haserrors()) {//判斷是否有格式轉換錯誤或者其他校驗沒通過
   userservice.addstudent(student);
   return "redirect:list";
  }else
   return "addpage";
 }

springmvc提示消息國際化

?
1
2
3
4
<!-- 注冊國際化信息,必須有id,指定資源文件名稱,資源文件在src目錄下 -->
<bean id="messagesource" class="org.springframework.context.support.resourcebundlemessagesource">
 <property name="basename" value="message"></property>
 </bean>

詳解SpringMVC的類型轉換及驗證方法

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久成人动漫 | 日日操夜夜透 | 爱草成年| 黄wwww| 色淫网站免费视频 | 欧美成人精品h版在线观看 久久久久久三区 | 成人在线观看免费高清 | 一级免费观看 | 欧美成人一区二区三区电影 | 老司机免费福利午夜入口ae58 | 亚洲午夜1000理论片aa | 最新欧美精品一区二区三区 | 中日韩免费视频 | 久久精品影视 | 欧美国产一区二区三区激情无套 | 国产三级午夜理伦三级 | 亚洲最新无码中文字幕久久 | asian超清日本肉体pics | 国产精品免费成人 | 一边吃奶一边摸下娇喘 | 97精品国产高清在线看入口 | 欧美一级黄视频 | 一本视频在线观看 | 日本在线高清 | 国产精品午夜在线观看 | 亚洲网站免费 | 免费黄色欧美视频 | 久久97视频| 国产精品欧美久久久久一区二区 | 成人免费午夜视频 | 日本aⅴ在线 | 亚州精品国产 | 久久嗨 | www日韩大片 | 久久久久久久久久久影视 | 久久国产精品免费视频 | 久久色亚洲| 国产在线免 | 搜一级毛片 | 成人毛片一区 | 日操操夜操操 |