まず、原則
さらに、サーバとクライアントとの対話コンテキストセッション(セッション)機構を備え、HTTPリクエスト=要求ヘッダー(ヘッダー)+リクエストボディ(ボディ)+ URL +パラメータ、ここでとは、変換要求メッセージ変換体を指します。
リクエストが来たとき、我々は最初のHTTPリクエストパラメータとコンテキストから取得されます。
注1:簡単なパラメータである場合、SpringMVC自体提供される単純な変換器で変換されます。intとしてというようにそのような。
注2:変換は、HTTPリクエストボディ(BODY)であれば、HttpMessageConverterインタフェースを呼び出します。
注3:HttpMessageConverterインターフェースコールリクエストボディ(ボディ)変換、
まず第一に、それは、変換canReadかどうかを判断します。
次いで、(ユーザJSON)は、コントローラ(ユーザーユーザー)への読み取りパラメータを変換します。
注4:パラメータ変換はcanRead +読取りに使用されます
注5:出力は書き込み+ JSON canWriteとして使用されています
結果のタイプを返し、メディアタイプパラメータとして、この方法は判断する場合canWriteのMappingJackson2HttpMessageConverter変換
二、HttpMessageConverterインタフェース解析
public interface HttpMessageConverter<T> {
1.是否可读,其中clazz为Java类型,mediaType为HTTP请求类型
canRead(clazz,mediaType);
2.是否可转换为mediaType类型
canWrite(Class <?> clazz,MediaType mediaType);
3.可支持的媒体类型列表
List<MediaType> getSupportedMediaTypes();
4.当canRead验证通过后,读入HTTP请求信息
T read(clazz,inputMessage)
5.当 canWrite 方法验证通过后,写入响应
void write(T t,contentType,outputMessage)
}
第三に、アーキテクチャ解析
--------------------------------------------------------
+----------------------------+
| HttpMessageConverter |
+--------------+---------+---+
| ||| +----------+
| +----|调用控制器|
| +----------+
| |||
+---------------------|-----------------|------+
|webDataBinder ||| | |
| +------------------------------+ | |
| | |---------| |---------| | | |
| | |Converter| |Formatter| | | |
| | +---------| |---------+ | | |
| | |----------------| | | |
| | |GenericConverter| | | |
| | |----------------| | | |
| +---------------|--------------+ | |
| |------|----| -+----------+ |
| | POJO |---------| 验证机制 | |
| |-----------| -|----------| |
+----------------------------------------------+
第四に、説明
1. SpringMVCはWebDataBinder機構によってパラメータを得ることで、その主な役割は、HTTPリクエストのコンテキスト、呼び出しの前にコントローラを解析することです。
- WebDataBinderメカニズム[認証パラメータ取得パラメータ--- --- ---変換パラメータ>コントローラ
- 3つのインターフェイスコンバータ[[全般] +フォーマッタ[フォーマット変換] + GenericConverter [配列]を介しWebDataBinder機構は、様々なパラメータに変換しました
- SpringMVCこれらの3つのインターフェイスは、RIの機構を用いており、登録されているコンピュータ内の変換器の数が登録されています。
RequestBody @ 2.プロセッサ本体(ボディ)は、パラメータ変換を行う注釈コンテンツ要求を使用して表記した後、そのJSON要求タイプとしてのフロントエンドは、SPRINGMVCカスタムコンバータ[]を呼び出します。
前端的JSON类型数据---canRead方法---read方法---转换为控制器的(User)类参数
3.使用例
- 1-1変換アプリケーション:コンバーター-1カスタム・コンバータ:@コンポーネント+実現コンバーター。springMVCは自動的に変換器への登録スキャンします。
注:使用URLは - 間隔の文字列を、コントローラが自動的にユーザーに変換しました
- GenericConverterトランスデューサアレイ:アレイ2変換のアプリケーションストリングは、サブコンマに係る第一の分割です。次に、元のジェネリック型String、ユーザコンバータ<文字列、ユーザー>変換の一般的な目的に従ってください。