大约一年前, 针对 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 上找到示例应用程序的完整源代码。
在以后的博文中,我们将了解参数验证、异常处理和其他视图技术。