jersey
ジャージーMVCのサポート
サーチ…
前書き
Spring MVCなどのMVCフレームワークは、動的なWebページを提供するWebアプリケーションの作成に使用しています。 JerseyはREST Frameworkとして知られていますが、MVCモジュールを使用して動的Webページを作成することもサポートしています。
ジャージーMVCハローワールド
開始するには、新しいMaven Webアプリケーションを作成します(これを行う方法はこの例の範囲外です)。あなたのpom.xmlに次の2つの依存関係を追加します
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-jsp</artifactId>
<version>2.25.1</version>
</dependency>
また、pomには、開発中にアプリケーションを実行するために使用するjetty-maven-plugin
を追加します
<build>
<finalName>jersey-mvc-hello-world</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.8.v20160314</version>
</plugin>
</plugins>
</build>
これでコントローラを作成できます。 MVCフレームワークでは、概念は通常同じです。テンプレートがあり、コントローラを使用してテンプレートのレンダリングに使用するモデルを設定します。ここで「レンダリング」という用語は、テンプレートとモデルを組み合わせて最終的なHTMLページを作成することを意味します。たとえば、このテンプレート
src / main / webapp / WEB-INF / jsp / index.jsp
<html>
<head>
<title>JSP Page</title>
</head>
<body>
<h1>${it.hello} ${it.world}</h1>
</body>
</html>
これはJSPファイルです。 JSPは、Jerseyがサポートするテンプレートエンジンの1つに過ぎません。ここでは、 hello
とworld
2つのモデル変数を使用していworld
。これらの2つの変数は、このテンプレートをレンダリングするために使用されるモデルに含まれることが期待されます。コントローラを追加しましょう
package com.example.controller;
import org.glassfish.jersey.server.mvc.Viewable;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;
@Path("/")
public class HomeController {
@GET
@Produces(MediaType.TEXT_HTML)
public Viewable index() {
Map<String, String> model = new HashMap<>();
model.put("hello", "Hello");
model.put("world", "World");
return new Viewable("/index", model);
}
}
ここでは、モデルにhello
とworld
プロパティを設定しています。また、コントローラメソッドは、使用されるビューテンプレートの名前を返します。この場合はindex
です。これにより、フレームワークは「インデックス」テンプレートを取得し、それをレンダリングするために提供されたモデルを使用することを知っています。
今すぐ設定する必要があります。次のようなResourceConfig
サブクラスを追加する
package com.example;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.mvc.jsp.JspMvcFeature;
public class AppConfig extends ResourceConfig {
public AppConfig() {
packages("com.example.controller");
property(JspMvcFeature.TEMPLATE_BASE_PATH, "/WEB-INF/jsp");
register(JspMvcFeature.class);
}
}
ここでは3つのことが起こっています:
私たちは
packages
を使用して、@Path
で@Path
されたクラスのcom.example.controller
パッケージをスキャンし、登録できるようにします。この場合、HomeController
登録します。テンプレートを解決するためのフレームワークの基本パスを設定しています。この場合、私たちはJerseyに
WEB-INF/jsp
でテンプレートを探すよう指示しています。上のindex.jsp
例は、このディレクターの中にあります。また、コントローラではテンプレート名のindex
だけを返しindex
。これは、configureのベースパスの接頭部と暗黙の.jsp
という接尾辞を付けて、テンプレートを見つけるために使用されますJSPレンダリングを扱う機能を登録する必要があります。以前に述べたように、JSPはJerseyがサポートする唯一のレンダリングエンジンではありません。ボックスからすぐにサポートされているカップルがいくつかあります。
最後にweb.xmlにJerseyを設定する必要があります
<filter>
<filter-name>Jersey</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.example.AppConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<url-pattern>/*</url-pattern>
<filter-name>Jersey</filter-name>
</filter-mapping>
ここでは、JerseyがAppConfig
クラスを使用するように設定しています。ここで指摘しなければならない重要な点の1つは、 <servlet>
代わりに<filter>
使用することです。これは、JSPをテンプレートエンジンとして使用する場合に必要です。
今すぐ実行できます。コマンドラインからmvn jetty:run
ます。これで以前設定したMaven Jettyプラグインが実行されます。 "Started Jetty Server"が表示されたら、サーバーは準備完了です。ブラウザのURL http://localhost:8080/
ます。 Voila、 "Hello World"楽しい。
詳細は、 JerseyドキュメンテーションのMVCテンプレートを参照してください。