サーチ…


前書き

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つに過ぎません。ここでは、 helloworld 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);
    }
}

ここでは、モデルにhelloworldプロパティを設定しています。また、コントローラメソッドは、使用されるビューテンプレートの名前を返します。この場合は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つのことが起こっています:

  1. 私たちはpackagesを使用して、 @Path@Pathされたクラスのcom.example.controllerパッケージをスキャンし、登録できるようにします。この場合、 HomeController登録します。

  2. テンプレートを解決するためのフレームワークの基本パスを設定しています。この場合、私たちはJerseyにWEB-INF/jspでテンプレートを探すよう指示しています。上のindex.jsp例は、このディレクターの中にあります。また、コントローラではテンプレート名のindexだけを返しindex 。これは、configureのベースパスの接頭部と暗黙の.jspという接尾辞を付けて、テンプレートを見つけるために使用されます

  3. 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テンプレートを参照してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow