Поиск…


Вступление

Структуры MVC, такие как Spring MVC, используются для создания веб-приложений, обслуживающих динамические веб-страницы. Джерси, хотя и известна как REST Framework, также поддерживает создание динамических веб-страниц с использованием своего MVC-модуля.

Джерси MVC Hello World

Чтобы начать работу, создайте новый веб-приложение Maven (как это сделать, выходит за рамки этого примера). В вашем pom.xml добавьте следующие две зависимости

<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 / Главный / 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. Здесь мы используем две переменные модели, hello и world . Ожидается, что эти две переменные будут в модели, которая используется для визуализации этого шаблона. Итак, добавим контроллер

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 . При этом структура знает, как захватить шаблон «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);
    }
}

Здесь есть три вещи:

  1. Мы используем packages чтобы сообщить Джерси о сканировании пакета com.example.controller для классов, аннотированных с @Path чтобы он мог его зарегистрировать. В этом случае он регистрирует наш HomeController .

  2. Мы устанавливаем базовый путь для платформы для разрешения шаблонов. В этом случае мы говорим Джерси, чтобы посмотреть в шаблонах WEB-INF/jsp . Вы можете увидеть пример index.jsp выше в этом директоре. Также в контроллере мы возвращаем только index имени шаблона. Это будет использоваться для поиска шаблона, путем префикса базового пути configure и суффикса неявного .jsp

  3. Нам нужно зарегистрировать функцию, которая обрабатывает JSP-рендеринг. Как упоминалось ранее, JSP - это не единственный движок, поддерживаемый Джерси. Есть еще пара поддержки из коробки.

Последнее, что нам нужно сделать, это настроить Джерси в web.xml

<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>

Здесь мы просто настраиваем Джерси, чтобы использовать наш класс AppConfig . Здесь очень важно отметить использование <filter> вместо того, что вы обычно видите, <servlet> . Это необходимо при использовании JSP в качестве механизма шаблона.

Теперь мы можем запустить его. Из командной строки запустите mvn jetty:run . Это запустит ранее подключенный плагин Maven Jetty. Когда вы видите «Started Jetty Server», сервер готов. Перейдите в URL-адрес браузера http://localhost:8080/ . Вуаля, «Привет, мир». Наслаждаться.

Для получения дополнительной информации см. Шаблоны документов для шаблонов MVC



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow