Web機能について説明します。
Spring Frameworkが提供するMVCフレームワークは、処理の中核を担うModel(M)と画面への表示・出力を担うView(V)、入力内容に基づいてModelとViewを制御するController(C)の3要素を組み合わせたMVCモデル2を採用し、Webアプリケーション開発を容易にする事を目的としたフレームワークです。
OSS版のSpring Frameworkは以下の2つのMVCフレームワークを持っています。
Spring Web MVCフレームワーク
Spring Portlet MVCフレームワーク
本製品が提供するSpring Frameworkでは、Spring Web MVCフレームワークのみをサポートします。
Webアプリケーション開発をサポートするSpring Web MVCフレームワークでは、以下の機能を提供します。
クライアントからのHTTPリクエスト→業務処理→処理結果表示までの画面遷移機能
クライアントからの入力データや業務処理の出力データの受け渡し機能
入力データの検証機能
処理結果をレンダリングするためのViewテクノロジとの連携機能
Springタグライブラリ
Spring Web MVCフレームワークは上記の機能によって、Webアプリケーション開発を支援します。
Spring MVCのWebアプリケーションで、Jacksonを利用してJSON形式のリクエストを受けることができます。
例
json2Viewの宣言:
@Configuration |
Json2Viewを利用して、JSONのresponseを戻します。
@RequestMapping(value="/user/{userId}", method=RequestMethod.GET) |
注) Contextが"json2View"という名前で宣言されたJson2Viewを探せるように、下記ViewResolverを宣言してください。
@Bean |
jQueryとJacksonの連携もできます。下記に例を示します。
例
<html> <head> <script type="text/javascript" src="xxx/jquery.js"></script> <script> function displayJson(result) { $.each(result, function(field, value) { var newTh = $("<th></th>").text(field); $("#fields").append(newTh); var newTd = $("<td></td>").text(value); $("#values").append(newTd); }); } $(document).ready( function() { $.getJSON("xxx/user/ユーザーID", function(result) { displayJson(result); }); }); </script> </head> <body> <table border="1"> <tr id="fields"></tr> <tr id="values"></tr> </table> </body> </html> |
Java EE 7の標準機能であるJava API for WebSocketと連携できます。
Spring FrameworkのWebSocket連携機能は、Spring MVCベースの実装ができます。また、SockJSを使用することで、WebSocketに対応していないブラウザでもWebSocket連携ができます。
WebSocket連携を使用することで、Spring MVCと同様の方法でWebアプリケーションの実装が可能です。
例
Spring Frameworkで動作するWebSocketアプリケーションを作成するためには、下記のアプリケーションが必要です。
ハンドラークラス
設定クラス
ハンドラークラスは、発行されたイベントに対応した処理を実装します。
送信を行うデータに応じてTextWebSocketHandler、BinaryWebSocketHandlerを継承して作成してください。
ハンドラークラスの作成:
テキストデータを扱う場合
import org.springframework.web.socket.TextMessage; |
バイナリデータを扱う場合
import org.springframework.web.socket.TextMessage; |
設定クラスには、WebSocket上のリクエストを処理するハンドラーを登録する必要があります。WebSocketConfigurerインターフェースを実装して、クラスにConfigurationアノテーションとEnableWebSocketアノテーションを設定してください。
設定クラス:
import org.springframework.context.annotation.Configuration; |