この記事ではspringmvcimplementationjsoninteraction-requestBodyとresponseBodyの関連知識を中心に紹介します。非常に良い基準値を持っています。以下のエディターで見てみましょう
json データのやり取り
1. json データのやり取りが必要な理由
json データ形式は、interface 呼び出しと HTML ページでより一般的に使用されます。比較的シンプルで解析が簡単です。
例: webservice インターフェース、json データを送信します
2.springmvc は json インタラクションを実行します
(1) リクエスト json、出力 json、リクエストは json 文字列であるため、リクエストを配置する必要があります。フロントエンドページ内 コンテンツを json に変換するのは不便です。
(2) key/valueをリクエストしてjsonを出力します。この方法は比較的一般的です。
3. 環境の準備
3.1 json変換用のjarパッケージをロードします
springmvcは、次のようにjson変換用のjacksonパッケージを使用します(@requestBodyと@responseBodyは以下のjson変換用のパッケージを使用します)。
jackson-core-asl-1.9.11.jar jackson-mapper-asl-1.9.11.jar
@RequestBody 関数:
@RequestBody アノテーションは、http リクエストのコンテンツ (string) を読み取り、提供される HttpMessageConverter インターフェイスを通じて、読み取ったコンテンツを json、xml、およびその他の形式のデータに変換するために使用されます。 springmvcでバインドし、コントローラーメソッドのパラメータに設定します。
このアプリケーション例:
@RequestBody アノテーションは、http リクエストの json データの受信と、json データを java オブジェクトに変換する実装です。
@ResponseBody 関数:
このアノテーションは、HttpMessageConverter を通じてコントローラー メソッドによって返されたオブジェクトを変換するために使用されます。インターフェイスは、json、xml などの指定された形式のデータに変換され、Response を通じてクライアントに送信されます
このサンプル アプリケーション:
@ResponseBody アノテーションは、コントローラー メソッドによって返されるオブジェクトの変換を実装します。クライアントへの json 応答に変換します
3.2 構成 json コンバーター
アノテーション アダプターに messageConverters を追加します
<!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean>
注:
4.json対話型テスト
4.1 入力json文字列、出力はjson文字列です
4.1.1jsppage
を使用しますaja ax は json 文字列を送信します。はい 出力された json 結果が解析されます。 jdueryを使用する場合はjquery-1.4.4.min.jsを導入することを忘れないでください
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" > <title>json交互测试</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> //请求的是json,输出的是json function reuqestJson(){ $.ajax({ type:'post', url:'${pageContext.request.contextPath }/requestJson.action', contentType:'application/json;charset=utf-8', //数据格式是json串,商品信息 data:'{"name":"手机","price":999}', success:function(data){//返回json结果 alert(data); } }); } </script> </head> <body> <input type="button" onclick="reuqestJson()" value="请求的是json,输出的是json"/> </body> </html>
4.1.2controller
package cn.edu.hpu.ssm.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.edu.hpu.ssm.po.ItemsCustom; //json交互测试 @Controller public class JsonText { //请求json(商品信息),输出json(商品信息) //@RequestBody将请求的商品信息的json串转成itemsCustom对象 //@ResponseBody将itemsCustom转成json格式输出 @RequestMapping("/requestJson") public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){ //@ResponseBody将itemsCustom转成json格式输出 return itemsCustom; } }
4.1.3テスト結果
4.2 入力キー/値、出力は json 文字列です
4.2.1 jsp ページ jquery の ajax を使用してキー/値文字列を送信し、出力された json 結果を解析します。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" > <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" > <title>json交互测试</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> //请求是key/value,输出是json function responseJson(){ $.ajax({ type:'post', url:'${pageContext.request.contextPath }/responseJson.action', //请求的是key/value,这里不需要指定contentType,因为默认就是key/value类型 //contentType:'application/json;charset=utf-8', //数据格式是json串,商品信息 data:'name=手机&price=999', success:function(data){//返回json结果 alert(data); } }); } </script> </head> <body> <input type="button" onclick="requestJson()" value="请求的是key/value,输出的是json"/> </body> </html>
4.2.2controller
package cn.edu.hpu.ssm.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.edu.hpu.ssm.po.ItemsCustom; //json交互测试 @Controller public class JsonText { //请求key/value(商品信息),输出json(商品信息) @RequestMapping("/responseJson") public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){ //@ResponseBody将itemsCustom转成json格式输出 System.out.println("前台传过来得商品名:"+itemsCustom.getName()); return itemsCustom; } }
4.2.3 testバックグラウンドコンソールは「フロントから渡された製品名:携帯電話」を出力し、 http データを表示する json データに関するフィードバックを参照してください。
以上がspringmvc は json interaction-requestBody と responseBody (画像とテキスト) を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。