JSON(JavaScriptのオブジェクト表記)で、軽量のデータ交換フォーマットは、フォーマットは、特に現在広く使用され、読みやすい、シンプルです。
インタラクティブモードの2つの方法
コンテンツがフロントページ要求で要求されるように、①要求JSON、JSONの出力は、要求は、JSON文字列を必要とするには便利ではない、JSONに変換されます。
②キー/値、出力JSONを要求しました。この方法は、一般的に使用されます。
@RequestBody与@ResponseBody
● @RequestBody:受信文字列のJSON POJOを有効にするユーザーを受け取ります
HTTPコンテンツ(文字列)を読み出し、HttpMessageConverter Springmvcインターフェイスコンテンツ(JSONデータ)を読み出すために提供するための要求は、パラメータ制御装置及び方法にバインドされたJavaオブジェクトに変換されます。
伝統的なリクエストパラメータ:
?のitem_id = 001・セーブ&ITEM_NAME =キング&ITEM_TYPEの栄光がMOBA&ITEM_PRICEが0.0を= =
今のパラメータを要求:POSTリクエストを使用して、リクエストデータは、本体内部にJSONを追加しました
{ "ITEM_ID": "001" 、 "ITEM_NAME": "王者荣耀" 、 "ITEM_TYPE": "MOBA" 、 "ITEM_PRICE":0.0 }
● @ResponseBody:POJOには、ユーザーのJSONに対応した文字列に変換しました
応答クライアントへの応答を介して、等JSON、XML、:springmvcによって返さコントローラオブジェクトのメソッドのような、指定されたデータ形式にHttPMessageConverterインターフェースを提供しました。
環境設定
Gsonジャクソンと依存2つのJSONプロセスの場合、直接添加することができます。
手動で構成HttpMessageConverterにfastjsonの必要性などに加えて、他のJSONパーサー。
実際、SpringMVCでは、オブジェクトがHttpMessageConverterという名前のクラスのJSON文字列による変換を提供することです。
そして、それはデフォルトSpringMVC GsonとジャクソンのHttpMessageConverter、それぞれorg.springframework.http.converter.json.GsonHttpMessageConverterとMappingJackson2HttpMessageConverterを提供します。
他のJSONパーサの場合、開発者は手動でのみ見HttpMessageConverterを設定する必要があります。
1、ジャーパック準備 - jackjsonを用いた本実施形態の処理
Springmvcのデフォルトのデータは次のようにジャクソンのパッケージは、追加する必要があり、JSON MappingJacksonHttpMessageConverterに変換しました:
2、springmvc.xmlファイルの設定 - 推奨注釈駆動型
、あなたはどんな冗長構成を必要としない:設定ファイルがある場合は①の注釈は、<注釈駆動型/ MVC>駆動します
何の注釈方式の構成は、次の設定を必要としない場合は②(この方法ではお勧めしません)
<! - 注解适配器- > < 豆のクラス= "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" > < プロパティ名= "messageConverters" > < リスト> < 豆のクラス= "org.springframework .http.converter.json.MappingJacksonHttpMessageConverter」> </ 豆> </ リスト> </ プロパティ> </ 豆>
● 追加説明
依存gsonジャクソンは現在のプロジェクトのクラスパスに存在する場合、デフォルト、HttpMessageConverter JSON org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverterクラスで処理することにより、または、それが自動的にロードされたクラスになり、その後、適切なHttpMessageConverterを作成します。
システムは、自動サポートを提供しないのでfastjsonため、開発者はfastjson HttpMessageConverterタイプを設定する手動でする必要がある、次の通り配置しました。
①導入fastjson依存:fastjson.jar
②参加設定
< MVC:アノテーション・ドリブン> <! - デフォルト以外のメッセージコンバータを使用する- > < :MVC-コンバータのメッセージ登録-デフォルト= "trueに" > <! - 設定fastjsonサポート- > < 豆のクラス=「COM .alibaba.fastjson.support.spring.FastJsonHttpMessageConverter " > < プロパティ名=" supportedMediaTypes " > < リスト> <! - シーケンスは、ダウンロードIEのエラーを回避するために、そのままに- > < 値>テキスト/ HTML;のcharset = UTF-8。</ 値> <値>アプリケーション/ JSON</ 値> </ リスト> </ プロパティ> < プロパティ名= "機能" > < リスト> < 値> WriteMapNullValue </ 値> < 値> QuoteFieldNames </ 値> </ リスト> </ プロパティ> </ 豆> </ MVC:メッセージ・コンバータ> </ MVC:アノテーション駆動型>
HttpMessageConverter二つのことを想定して:
JSONへのリクエスト結果を①
②JSONオブジェクトにブラウザに送信されます
JSONリクエスト、レスポンスはJSONを達成しました
リクエスト:
JSON形式のデータを受信すると、我々は自動的に関連するJavaオブジェクトに変換ヘルプフレームにする必要があります。
データは途中でAJAX POST JSONデータを提出するクライアントによって提出さ
@RequestBodyにパラメータを追加する必要性
データは主にパスJSON文字列の後端にフロントエンドを受信するために使用され、JSONオブジェクトにデータをオーバー要求します:@RequestBodyを。
回答:
クライアントに応答して、オブジェクトJSONに対応するデータ項目である
処理方法で注釈を追加@ResponseBody
、springmvcで直接受信JSONパラメータ、日付パラメータ場合、
日付型コンバータを定義する必要がなく、変換日付はgson /ジャクソン/ fastjsonによって提供されます。
JSONデータ交換を使用して
フロントエンドのコード:
注: ①のみリクエストボディにJSONすることができ、したがって、唯一のJSONのポストに置いたり、要求に入れることができる、 ②DoがJSON引数をテストする/削除要求を取得し使用していません。
機能jsonData(){ $アヤックス({ // 要求モード タイプ: "POST" 、 // リクエストのURLアドレス URL: "$ {} /jsonData.do pageContext.request.contextPath" 、 // 送信されたデータフォーマット のcontentTypeを: "ファイルアプリケーション/ JSON" 、 // 文字列JSON.stringifyのに変換されたオブジェクトを使用して送信データ、 データ:JSON.stringifyを({ "のitem_id": "007" 、 "ITEM_NAME": "王の栄光" 、 "ITEM_TYPE": "MOBA" 、 "ITEM_PRICE":0.0 })、 // コールバック形式の データ型: 'JSON' 、 // コールバック 成功:機能(データ){ アラート(データ); 警告(data.item_name); }、 エラー:関数(XHR、AjaxOptions、thrownError){ アラート( "リクエストエラー!" + 項目); 戻り値 はfalseに。 } }); }
コントローラコード:
@ResponseBody @RequestMapping(値 = "jsonData.do" ) 公衆ItemInfo jsonData(@RequestBody ItemInfoアイテム){ するSystem.out.println( "jsonData =" + アイテム)。 戻り値の項目。 }
テスト結果:
- データは、ブラウザから送信されます
- バックグラウンド受信
- 浏览器响应:返回一个json字符串
- alert弹窗