SpringMVC - JSONデータ交換

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弹窗

 

おすすめ

転載: www.cnblogs.com/Dm920/p/12148412.html