ホームページ > Java > &#&チュートリアル > springmvc は json interaction-requestBody と responseBody (画像とテキスト) を実装します。

springmvc は json interaction-requestBody と responseBody (画像とテキスト) を実装します。

黄舟
リリース: 2017-03-16 10:05:41
オリジナル
2098 人が閲覧しました

この記事では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:&#39;post&#39;, 
url:&#39;${pageContext.request.contextPath }/requestJson.action&#39;, 
contentType:&#39;application/json;charset=utf-8&#39;,  
    //数据格式是json串,商品信息 
    data:&#39;{"name":"手机","price":999}&#39;, 
    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:&#39;post&#39;, 
url:&#39;${pageContext.request.contextPath }/responseJson.action&#39;, 
     //请求的是key/value,这里不需要指定contentType,因为默认就是key/value类型 
     //contentType:&#39;application/json;charset=utf-8&#39;, 
     //数据格式是json串,商品信息 
     data:&#39;name=手机&price=999&#39;, 
     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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート