WebMVC機能について説明します。
Spring Frameworkが提供するMVCフレームワークは、処理の中核を担うModel(M)と画面への表示・出力を担うView(V)、入力内容に基づいてModelとViewを制御するController(C)の3要素を組み合わせたMVCモデル2を採用し、Webアプリケーション開発を容易にする事を目的としたフレームワークです。
Webアプリケーション開発をサポートするSpring Web MVCフレームワークでは、以下の機能を提供します。
クライアントからのHTTPリクエスト→業務処理→処理結果表示までの画面遷移機能
クライアントからの入力データや業務処理の出力データの受け渡し機能
入力データの検証機能
処理結果をレンダリングするためのViewテクノロジとの連携機能
Springタグライブラリ
Spring Web MVCフレームワークは上記の機能によって、Webアプリケーション開発を支援します。
Spring Web MVCフレームワークではWebアプリケーション環境定義をXML形式(web.xml)またはJava形式で設定することが可能です。
例
各形式のWebアプリケーション環境定義の例を以下に示します。
XML形式のWebアプリケーション環境定義(web.xml):
… <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </context-param> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> … |
Java形式のWebアプリケーション環境定義:
public class UserWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { XmlWebApplicationContext appContext = new XmlWebApplicationContext(); appContext.setConfigLocation("/WEB-INF/dispatcher-servlet.xml"); ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(appContext)); registration.setLoadOnStartup(1); registration.addMapping("/"); } } |
@Controllerや@RestControllerを付与したクラスにおいて、リクエストのURLとメソッドのマッピング定義やリクエストの入力値の処理などを実現する機能です。
例
アノテーション付きコントローラの実装例を以下に示します
@Controller public class UserController { @GetMapping(“/get”) public String get() { return “hello”; } } |
Spring FrameworkはURIを作成するAPIを提供します。
Viewテクノロジと連携し、処理結果をレンダリングする機能を提供します。
本製品は以下のViewテクノロジとの連携をサポートします。
JSPおよびJSTL
Jackson
XMLマーシャリング
XSLTビュー
Spring Frameworkのタグライブラリを使用する場合、以下のディレクトリーからSpring FrameworkのTLDファイル(spring.tld、spring-form.tld)をWEB-INFディレクトリーの下に配置してください。
/opt/FJSVibs/spring5/lib |
[Interstageのインストールディレクトリー]\BAS\spring5\lib |
キャッシュを制御する以下のヘッダーと連携し、リクエストに設定されたヘッダーの値へのアクセスやレスポンスへのヘッダーの設定などを実現する機能です。
Cache-Control
Last-Modified
ETag
Servlet 4.0から提供されるHTTPプロトコルのHTTP/2をサポートします。
GlassFishの標準機能である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; |