大约一年前, 针对Java EE 8宣布了一个新的基于动作的MVC框架,简称为MVC。 MVC(在JSR 371中指定)基于JAX-RS,并与Java EE技术(如CDI和Bean验证)集成。 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类:
@ApplicationPath("getting-started")
public class GettingStartedApplication extends Application {}
javax.ws.rs.core.Application的此子类可用于定义其他JAX-RS组件。 在此示例中,我们不需要任何特殊配置,因此该类可以保持为空。 使用@ApplicationPath,我们定义了应用程序的基本路径。
创建控制器
控制器负责处理传入的请求。 根据传入的请求,它执行业务逻辑,更新模型并返回应呈现的视图。 一个简单的Java EE MVC控制器如下所示:
@Controller
@Path("hello")
public class HelloController {@InjectModels models;@GETpublic 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-started / hello上的请求。
使用CDI,可以将Models的实例注入到控制器中。 Models类代表MVC模型。 它由控制器填充数据,然后传递到视图。 模型基本上是一个Map <String,Object>,可以包含任意数据。
sayHello()方法处理传入的HTTP GET请求(由@GET表示)。 使用@QueryParam,可以将请求参数绑定到方法参数。 在sayHello()内部,请求参数名称用于创建文本消息,然后将其添加到模型中。 返回的String定义了应呈现的视图的路径。
创建视图
Java EE MVC应用程序中的视图通常是带有CSS和JavaScript文件HTML页面。 在此示例中,我们的视图是一个简单的JSP文件,位于/WEB-INF/jsp/hello.jsp
<%@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 Web框架。 它使用了许多现有的Java技术,例如JAX-RS,CDI和JSP。 该框架本身非常简单且易于理解。 完整的MVC 1.0规范只有33页左右,非常容易阅读。
我们可以使用MVC 1.0参考实现的最新里程碑版本Ozark来了解即将到来的Java EE 8框架。
- 您可以在GitHub上找到示例应用程序的完整源代码。
翻译自: https://www.javacodegeeks.com/2015/09/java-ee-8-mvc-getting-started-with-ozark.html