这是 Spark Java Web 框架的入门教程。 我们介绍了 Spark Java 框架,并提供了三个代码示例。
Spark Java
Spark 是一个 Java 微框架,用于以最小的工作量在 Java 8 中创建 Web 应用。 Spark 框架是为快速开发而构建的简单,轻量级的 Java Web 框架。 它的灵感来自流行的 Ruby 微框架 Sinatra 。
Spark 广泛使用 Java 8 的 lambda 表达式,这使 Spark 应用不再那么冗长。 与其他 Java Web 框架相比,Spark 不使用大量的 XML 文件或注释。
路由
Spark 应用包含一组路由。 路由将 URL 模式映射到 Java 处理程序。
路由包含三个部分:
- 动词,包括获取,发布,放置,删除,开头,跟踪,连接和选项
- 诸如/ first 或/ hello /:name 之类的路径
- 回调(请求,响应)-> {}
首个应用
第一个应用返回一条简单消息。 Gradle 用于构建应用。
这是项目结构。 Gradle 的 Java 插件期望 Java 生产代码位于src/main/java
目录中。
build.gradle
这是 Gradle 构建文件。 它包括 Spark 核心组件和 slf4j 简单记录器的依赖项。
FirstSpark.java
应用将“ First Spark 应用消息”返回到 GET 请求。 当我们运行应用时,Spark 将启动嵌入式 Jetty Web 服务器。
get()
方法映射 HTTP GET 请求的路由。 在 Spark 术语中,路由是处理程序。路由是映射到处理程序的 URL 模式。 处理程序可以是物理文件,也可以是
我们使用gradle build
命令构建应用。
我们使用gradle run
命令运行该应用。 嵌入式 Jetty 服务器启动。
我们使用curl
工具将 GET 请求发送到服务器。 内置嵌入式 Jetty 服务器默认情况下侦听端口 4567。
你好应用
第二个应用将向用户打招呼。 客户端发送带有 URL 的名称,应用向用户打招呼。
build.gradle
这是应用的 Gradle 构建文件。
这是项目结构。
HelloSpark.java
Spark 应用检索请求参数,生成一条消息,然后将其返回给调用方。
params()
方法返回提供的路由模式参数的值。
我们构建并运行该应用。
我们向服务器发送请求; URL 包含一个名称。 该应用发回问候。
在 Tomcat 中运行 Spark 应用
默认情况下,Spark 应用在嵌入式 Jetty 服务器中运行。 在此示例中,我们显示了如何在 Tomcat 中运行 Spark Java 应用。 这次我们使用 Maven 构建工具并在 NetBeans 中创建一个项目。
Figure: NetBeans project structure
该图显示了该项目在 NetBeans 中的外观。
pom.xml
这是 Maven 构建文件。
context.xml
这是context.xml
文件。
web.xml
在web.xml
部署描述符中,我们指定spark.servlet.SparkFilter
。
HelloSpark.java
我们实现SparkApplication
接口,并在init()
方法中指定路由。
最后,我们运行 Tomcat Web 服务器。
NetBeans 的内置 Tomcat 侦听端口 8084。
模板引擎
Spark 没有自己的模板系统。 它使用第三方引擎。 在以下两个示例中,我们使用 Thymeleaf 和 FreeMarker。
使用 Thymeleaf
在以下示例中,我们将把 Thymeleaf 模板引擎集成到我们的 Spark 应用中。 Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。
这是项目的目录结构。 模板文件位于src/main/resources/templates
目录中。
build.gradle
在这里,我们有 Gradle 构建文件,其中包含spark-template-thymeleaf
依赖项。
SparkThymeleaf.java
应用读取请求参数并将其放入ModelAndView
对象。
ThymeleafTemplateEngine
的实例传递给get()
方法。
hello.html
这是hello.html
模板文件。 它引用随ModelAndView
对象传递的名称变量。
我们得到这个输出。
FreeMarker
在以下示例中,我们将把 FreeMarker 模板引擎集成到我们的 Spark 应用中。 FreeMarker 是一个完善的 Java 模板引擎。
这是项目的目录结构。 模板文件位于src/main/resources/views
目录中。
build.gradle
在这里,我们有 Gradle 构建文件,其中包含spark-template-freemarker
依赖项。
SparkFreeMarker.java
我们为 FreeMarker 设置了相同的应用。
我们用Configuration
类配置 FreeMarker。 模板文件将放置在views
目录中,该目录必须位于类路径上。
FreeMarkerEngine
传递给get()
方法。
hello.ftl
这是hello.ftl
模板文件; 它引用随ModelAndView
对象传递的名称变量。
这是输出。
在本教程中,我们介绍了 Spark Java 框架。