Java EE 8 MVC:Ozark 入门

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

大约一年前, 针对 Java EE 8 发布了 一个新的基于操作的 MVC 框架,简称为 MVC。 MVC(在 JSR 371 中指定)基于 JAX-RS 并集成了 Java EE 技术,如 CDI 和 Bean Validation。 MVC 1.0 的参考实现是 Ozark

这是我计划编写的关于 Java EE MVC 的多部分教程的第一篇文章。在这篇文章中,我们将了解如何获得与 Ozark 一起运行的基本 Java EE MVC 应用程序。即将发布的文章将提供特定部分的更多详细信息。

开始使用 Ozark

请注意,MVC 规范仍是早期草案,最终规范计划于 2016 年第三季度发布。要了解处于早期状态的 Java EE MVC,我们需要 GlassFish 的最新夜间构建版本和当前的 Ozark里程碑发布。 Ozark 团队为当前的 Ozark 版本推荐 GlassFish b13 03-16-2015

除了 GlassFish,我们还需要以下依赖项来创建 MVC 应用程序:


 <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 Application 类:


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

这个 javax.ws.rs.core.Application 的子类可以用来定义额外的 JAX-RS 组件。在这个例子中我们不需要任何特殊的配置,所以类可以保持为空。使用@ApplicationPath,我们定义了应用程序的基本路径。

创建控制器

控制器负责处理传入的请求。它根据传入的请求执行业务逻辑、更新模型并返回应呈现的视图。一个简单的 Java EE MVC 控制器如下所示:


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

Controller 类使用@Controller 和@Path 注释。这表明该类是一个 Java EE MVC 控制器,用于侦听 /getting-started/hello 上的请求。

使用 CDI,模型的一个实例被注入到控制器中。 Models 类表示 MVC 模型。它由控制器填充数据,然后传递给视图。模型基本上是一个可以包含任意数据的 Map<String, Object>。

sayHello() 方法处理传入的 HTTP GET 请求(由 @GET 指示)。使用@QueryParam 请求参数可以绑定到方法参数。在 sayHello() 内部,请求参数名称用于创建文本消息,然后将其添加到模型中。返回的字符串定义了应该呈现的视图的路径。

创建视图

Java EE MVC 应用程序中的视图通常是带有 CSS 和 JavaScript 文件的 HTML 页面。在此示例中,我们的视图是位于 /WEB-INF/jsp/hello.jsp 的简单 JSP 文件


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

在 JSP 文件中,可以通过 EL 访问模型属性。在这里,我们使用 ${message} 来访问带有关键消息的模型值。

Java EE MVC 规范为视图定义了两个标准模板引擎:JSP 和 Facelets。但是,可以轻松集成其他模板引擎。我们将在即将发布的帖子中了解其他视图技术的集成。

运行应用程序

现在我们已准备好启动 GlassFish 并部署我们的新 MVC 应用程序。之后,我们可以向我们的控制器发送 GET 请求并查看它返回的内容。不要忘记控制器需要一个名称参数。

例如

GET /入门/你好?名字=约翰

将产生一个包含消息 Hello John 的 HTML 页面

概括

Java EE MVC 是即将推出的新 Java MVC Web 框架。它使用了许多现有的 Java 技术,如 JAX-RS、CDI 和 JSP。框架本身非常简单易懂。完整的 MVC 1.0 规范只有大约 33 页,非常容易阅读。

我们可以使用 MVC 1.0 参考实现 Ozark 的当前里程碑版本来感受即将到来的 Java EE 8 框架。

您可以在 GitHub 上找到示例应用程序的完整源代码。

在以后的博文中,我们将了解参数验证、异常处理和其他视图技术。