jersey
Поддержка Джерси MVC
Поиск…
Вступление
Структуры 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);
}
}
Здесь есть три вещи:
Мы используем
packages
чтобы сообщить Джерси о сканировании пакетаcom.example.controller
для классов, аннотированных с@Path
чтобы он мог его зарегистрировать. В этом случае он регистрирует нашHomeController
.Мы устанавливаем базовый путь для платформы для разрешения шаблонов. В этом случае мы говорим Джерси, чтобы посмотреть в шаблонах
WEB-INF/jsp
. Вы можете увидеть примерindex.jsp
выше в этом директоре. Также в контроллере мы возвращаем толькоindex
имени шаблона. Это будет использоваться для поиска шаблона, путем префикса базового пути configure и суффикса неявного.jsp
Нам нужно зарегистрировать функцию, которая обрабатывает 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