Статьи

Java EE 8 MVC: начало работы с Ozark

Около года назад для Java EE 8 была анонсирована новая среда MVC, основанная на действии, называемая просто MVC. MVC (указанный в JSR 371 ) основан на JAX-RS и интегрируется с технологиями Java EE, такими как CDI и Bean Validation. Эталонной реализацией для MVC 1.0 является Ozark .

Это первая статья из нескольких частей, которую я планирую написать о Java EE MVC. В этой статье мы увидим, как получить базовое приложение Java EE MVC, работающее с Ozark. Предстоящие статьи предоставят больше деталей к определенным разделам.

Начало работы с Озарком

Обратите внимание, что спецификация MVC все еще находится на ранней стадии разработки, окончательная спецификация планируется выпустить в третьем квартале 2016 года. Чтобы взглянуть на Java EE MVC в этом раннем состоянии, нам нужна последняя версия GlassFish для текущей ночной сборки и текущий Ozark. выпуск вехой. Команда Ozark рекомендует GlassFish B13 03-16-2015 для текущей версии Ozark.

Помимо GlassFish нам нужны следующие зависимости для создания приложения MVC:

01
02
03
04
05
06
07
08
09
10
11
12
13
<dependencies>
  <dependency>
    <groupId>com.oracle.ozark</groupId>
    <artifactId>ozark</artifactId>
    <version>1.0.0-m01</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
  </dependency>
</dependencies>

Как упоминалось выше, Java EE MVC основан на JAX-RS. Так что все может показаться вам очень знакомым, если вы уже знаете о JAX-RS.

Для создания нашего приложения MVC нам сначала понадобится класс приложения JAX-RS:

1
2
3
4
@ApplicationPath("getting-started")
public class GettingStartedApplication extends Application {
 
}

Этот подкласс javax.ws.rs.core.Application может использоваться для определения дополнительных компонентов JAX-RS. В этом примере нам не нужны никакие специальные настройки, поэтому класс может оставаться пустым. С помощью @ApplicationPath мы определяем базовый путь для нашего приложения.

Создание контроллера

Контролер отвечает за обработку входящих запросов. На основе входящего запроса он выполняет бизнес-логику, обновляет модель и возвращает представление, которое должно быть отображено. Простой Java EE MVC Controller выглядит следующим образом:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
@Controller
@Path("hello")
public class HelloController {
 
  @Inject
  Models models;
 
  @GET
  public String sayHello(@QueryParam("name") String name) {
    String message = "Hello " + name;
    models.put("message", message);
    return "/WEB-INF/jsp/hello.jsp";
  }
}

Класс Controller аннотирован @Controller и @Path. Это указывает на то, что класс является контроллером Java EE MVC, который прослушивает запросы в / Getting-Start / Hello.

С CDI экземпляр Models вводится в контроллер. Класс Models представляет модель MVC. Он заполняется данными контроллером и затем передается в представление. Models — это в основном Map <String, Object>, которая может содержать произвольные данные.

Метод sayHello () обрабатывает входящие HTTP-запросы GET (обозначается @GET). С @QueryParam параметры запроса могут быть связаны с параметрами метода. Внутри sayHello () имя параметра запроса используется для создания текстового сообщения, которое затем добавляется в модель. Возвращаемая строка определяет путь к представлению, которое должно быть отображено.

Создание представления

Представления в приложениях Java EE MVC обычно представляют собой HTML-страницы с файлами CSS и JavaScript. В этом примере наше представление представляет собой простой файл JSP, расположенный по адресу /WEB-INF/jsp/hello.jsp

01
02
03
04
05
06
07
08
09
10
11
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Getting started</title>
  </head>
  <body>
    <h1>${message}</h1>
  </body>
</html>

Внутри файлов JSP свойства модели доступны через EL . Здесь мы используем $ {message} для доступа к значению модели с помощью ключевого сообщения.

Спецификация Java EE MVC определяет два стандартных механизма шаблонов для представлений: JSP и Facelets. Тем не менее, другие шаблоны могут быть легко интегрированы. Мы рассмотрим интеграцию других технологий просмотра в следующем посте.

Запуск приложения

Теперь мы готовы запустить GlassFish и развернуть наше новое приложение MVC. После этого мы можем отправить запрос GET нашему контроллеру и посмотреть, что он возвращает. Не забывайте, что контроллер ожидает имя параметра.

Например, GET /getting-started/hello?name=john приведет к HTML-странице, содержащей сообщение Hello John .

Резюме

Java EE MVC — это новая грядущая веб-платформа Java MVC. Он использует множество существующих технологий Java, таких как JAX-RS, CDI и JSP. Сам фреймворк довольно прост и легок для понимания. Полная спецификация MVC 1.0 составляет всего около 33 страниц и очень легко читается.

Мы можем использовать текущую веховую версию эталонной реализации MVC 1.0 Ozark, чтобы получить представление о готовящейся среде Java EE 8.

  • Вы можете найти полный исходный код примера приложения на GitHub .