[解決済み] Springの@RequestBodyと@ResponseBodyアノテーション
質問
を説明できる人がいますか?
@RequestBody
と
@ResponseBody
Spring 3 のアノテーション?これらは何のためにあるのでしょうか?どんな例も素晴らしいでしょう。
どのように解決するのですか?
というセクションがあります。
16.3.3.4 @RequestBodyアノテーションを使用したリクエストボディのマッピング
. そして
16.3.3.5 @ResponseBodyアノテーションによる応答本文のマッピング
. これらのセクションを参照することをお勧めします。また、関連する
@RequestBody
javadocsです。
@ResponseBody
ジャバドックス
使用例としては、このような感じでしょうか。
JQueryのようなJavaScriptライブラリを使用すると、次のようなJSON-Objectを投稿することになります。
{ "firstName" : "Elmer", "lastName" : "Fudd" }
コントローラのメソッドは次のようになります。
// controller
@ResponseBody @RequestMapping("/description")
public Description getDescription(@RequestBody UserStats stats){
return new Description(stats.getFirstName() + " " + stats.getLastname() + " hates wacky wabbits");
}
// domain / value objects
public class UserStats{
private String firstName;
private String lastName;
// + getters, setters
}
public class Description{
private String description;
// + getters, setters, constructor
}
ここで、もし
ジャクソン
をクラスパス上に置く(そして
<mvc:annotation-driven>
を追加したため)、Springは入力されたJSONを投稿本文からUserStatsオブジェクトに変換します。
@RequestBody
アノテーションを追加したため)、返されたオブジェクトをJSONにシリアライズします(これは
@ResponseBody
アノテーションを使用します)。そのため、ブラウザやクライアントには、このJSONの結果が表示されます。
{ "description" : "Elmer Fudd hates wacky wabbits" }
完全な動作例については、私のこの前の回答を参照してください。 https://stackoverflow.com/a/5908632/342852
注:RequestBody / ResponseBodyは、もちろんJSONに限らず、どちらもプレーンテキストやXMLなど複数の形式を扱うことができますが、おそらくJSONが最もよく使われる形式でしょう。
更新情報
Spring 4.x以降では、通常は
@ResponseBody
メソッドレベルで、むしろ
@RestController
をクラスレベルで使用しても、同じ効果が得られます。
以下は、公式からの引用です。 Spring MVCのドキュメント :
@RestController
は コンポジットアノテーション それ自体は メタアノテーション と@Controller
と@ResponseBody
を持つコントローラを示すために を継承し、すべてのメソッドが型レベルの@ResponseBody
アノテーションを使用しています。 したがって、レスポンスボディに直接書き込むことになります。 とHTMLテンプレートでレンダリングします。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み] springの@Controllerアノテーションと@RestControllerアノテーションの違いについて