今天在reddit上看到了这个有趣的Java Web框架,就写了几个例子稍微感受了一下,顺手把它的文档也翻译的了一下。
一、Spark是什么
Spark是一个微型的Java Web框架,它的灵感来自于Sinatra,它的目的是让你以最小的代价创建出一个Java Web应用。
二、使用Spark
Spark的使用相当简单,首先你需要下载它的jar包以及它所依赖的jar包,或者你也可以直接通过maven来帮你做这件事情:
在pom.xml中修改repository的配置:
<repository>
<id>Spark repository</id>
<url>http://46.137.105.19:8081/nexus/content/repositories/spark/</url>
</repository>
再添加spark的依赖
<dependency>
<groupId>spark</groupId>
<artifactId>spark</artifactId>
<version>0.9.8-SNAPSHOT</version>
</dependency>
然后只要下面这一段代码,你就可以输出一个Hello,world了:
import static spark.Spark.*;
import spark.*;
public class HelloWorld {
public static void main(String[] args) {
get(new Route("/hello") {
@Override
public Object handle(Request request, Response response) {
return "Hello World!";
}
});
}
}
打开http://localhost:4567/hello快快看看效果吧。 怎么样?够简单吧,接下来看下Spark中一些重要的组件:
三、Spark中的组件
Routes
在Spark程序中,其请求的处理都是由Route来完成的,一个Route由三部分组成:
- 一个动词,比如get,post,delete,trace等等
- 一个路径,比如前面的例子中的“/hello”
- 回调函数,比如前面的例子中的handle
另外需要注意的一点是,Spark在处理请求进行路径匹配的时候是优先匹配先出现的Route,也就是如果你的请求匹配到了多个Route,那么Spark会调用先出现的那个来处理请求。
另外Spark也支持在路径中设置参数,例如:
new Route("/user/:username"){};
你可以在handle方法里面通过调用request的params方法来获取到路径中的参数:
request.params(":username");
Filters
除了Routes之外,Spark中另一个重要的组件就是Filter,filter分为before filter和after filter,两者分别可以在请求被Routes处理之前和被Routes处理之后获取Request或者对Response进行修改,比如
Before Filter:
before(new Filter() { // matches all routes
@Override
public void handle(Request request, Response response) {
boolean authenticated;
// ... check if authenticated
if (!authenticated) {
halt(401, "You are not welcome here");
}
}
});
After Filter:
after(new Filter() {
@Override
public void handle(Request request, Response response) {
response.header("foo", "set by after filter");
}
});
你也可以让Filter只过滤符合特定规则的URL:
before(new Filter("/protected/*") {
@Override
public void handle(Request request, Response response) {
// ... check if authenticated
halt(401, "Go Away!");
}
});
四、其他
终止一个请求
如果你要在Routes或者Filter中马上终止一个请求,那么你可以调用halt方法来终止,在halt方法,你可以指定状态码或者返回的信息:
halt();
halt(401);
halt("This is the body");
halt(401, "Go Away!");
请求重定向
可以调用response的redirect方法来进行请求重定向:
response.redirect("/bar");
指定端口
Spark采用的默认应用服务器是jetty,默认的端口是4567,如果你要指定其他的端口,那么可以在Routes或者Filter中调用下面方法来指定:
setPort(9090); // Spark will run on port 9090
文档以及源代码
分享到:
相关推荐
Spark是一个基于java的微型web框架,与大数据处理框架同名,不要下错了。这个框架可以用java来开发小型的web应用,用起来很方便。这个文档对应的spark版本是2.7.1,开发时请使用java8以上的版本。
这是一个简单的Web RESTful服务的演示。 /你好,世界 / helloworld / {输入名称} / createAPost / listAllPosts / *如何启动WebService? * / 〜$ mvn全新安装〜$ mvn exec:java -Dexec.mainClass =“ ...
标题中的"SparkApplication"指的是一个基于Java开发的项目,它使用了Spark微型Web框架,MongoDB数据库以及FreeMarker模板引擎。这个应用展示了如何在Java 10环境下集成这些技术来构建一个功能丰富的Web应用程序。 ...
SparkJava是由Perwendel创建的一个微型Web框架,它基于Jetty服务器,提供了简洁的API来构建HTTP路由。它的主要特点是代码简洁、易读,让开发者可以快速地搭建Web应用。例如,使用SparkJava创建一个简单的"Hello, ...
Spark Web 框架是一个轻量级的Java Web框架,它允许开发者快速构建灵活、可扩展的网络应用程序。本示例项目"spark-example"旨在帮助用户理解如何利用Spark框架进行开发。Spark框架以其简洁的API和高效的工作流程而受...
tinympi4j是一款专为Java开发者设计的微型分布式离线计算框架,它的核心目标是提供一个简单、直观的工具,让开发人员能够轻松地进行大规模数据处理和计算任务。这款框架的设计理念是降低学习曲线,使得即使是对...
依赖关系Sparkjava一个微型Web框架com.sparkjava spark-core 2.3 在Main.java中,我们拥有所有路线所有控制器都在controller文件夹中,该文件夹扩展了与每个Controller类相对应的基础Controller类,那里是template...
一个Java程序通常经历编写、编译、运行和调试等阶段。开发者使用文本编辑器编写源代码(.java文件),然后用javac命令将源码编译为字节码(.class文件),最后通过java命令执行字节码。 5. **Java的应用领域** - ...
Java有一个活跃的开源社区,如Apache、Google、Eclipse等组织提供了大量高质量的开源项目,如Apache Tomcat、Hibernate、MyBatis等,这些项目极大地丰富了Java的生态系统。 六、持续集成与自动化测试 Java有强大的...
第四章开始介绍实际应用,讲解了如何使用Java来创建Web服务,涉及Eclipse IDE、Gradle构建工具、SparkJava微型Web服务框架以及单元测试,这些都是现代Java开发的常用工具和技术。 这本书的特色在于,通过对比不同...
6. Spark:Spark是一个轻量级的Web框架,受到Sinatra的启发,设计简洁,让开发快速构建Web应用变得更加便捷。Spark提供了一种简单的方式来创建微型Web服务,适用于快速原型开发或构建简单的API。 7. Docusaurus:...
**Spark**: Spark是一个微型Java Web框架,它简化了构建Web应用的过程。Spark框架提供了轻量级的路由机制,允许开发者通过简单的API定义HTTP端点,并关联它们到相应的处理方法。在这个待办事项应用中,Spark可能是...
2. 大数据处理:Hadoop、Spark等大数据处理框架主要使用Java,处理海量数据。 3. 移动应用:Android应用主要使用Java或Kotlin开发,而Java作为基础,许多概念和技术可以直接迁移。 4. 服务器端开发:Tomcat、Jetty...
- **Spark**:一个微型的Java和Kotlin Web框架,以轻量级和灵活为特点,但不如Play功能全面。 #### 学习资源 - **官方文档**:[Play Framework官方文档](***是了解和学习Play框架的最佳资源。 - **书籍**:《Play ...
例如,你可能从创建第一个"Hello, World!"程序开始,然后学习数组、字符串处理、集合框架(List、Set、Map),再到IO流、多线程、异常处理、网络编程等高级主题。随着对Java的理解加深,你可以尝试实现更复杂的系统...
Java技术体系包含了三个主要平台:Java SE(标准版)、Java EE(企业版)和Java ME(微型版)。Java SE是基础,适用于桌面应用,提供完整的Java核心API。Java EE是针对企业级应用,如Web应用,包括Servlet、JSP等...
【标题】"java-demo-api-customers" 是一个基于Java实现的顾客管理API示例项目,主要展示了如何构建一个微型服务应用程序。此项目采用SparkJava框架,这是一个轻量级的HTTP服务器,用于快速开发Web应用。它允许...
2. **Spark框架**: Spark是轻量级的Java Web框架,常用于构建微型服务或快速原型开发。它提供简洁的API,使得开发者能够快速地创建RESTful API。在"Java-Week3-待办事项清单"项目中,Spark用于处理HTTP请求,比如...
Spark是一个轻量级的Java和Scala库,用于构建微型Web服务。在"spark-framework-request-body:http"这个主题中,我们主要关注的是如何使用Spark来处理HTTP请求中的主体部分,即request body。在开发Web应用程序时,...
3. **Java Spark**:Java Spark是一个微型的Java Web框架,用于快速开发简单的HTTP服务。它支持GET、POST、PUT、DELETE等HTTP方法,且具有易于使用的API,使得构建Web应用变得简单。 4. **MVC(Model-View-...