今天在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 =“ ...
Sparkweb 是一个超轻量级的简易高效的 Java WEB 开发框架,其设计思想结合了目前主流的 Spring、Struts2、Playframework、Nodejs-Expressjs、Ruby On Rails 等框架的优秀地方,完美支持 RESTful设计。 二、Sparkweb ...
一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、kafka偏移量管理,web后台管理,web api启动、停止spark streaming,宕机告警、自动重启等等功能支持,用户只需要关心业务代码,无需关注繁琐的...
1、25个经典Spark算子的JAVA实现。2、含有详细的注释。3、全部通过junit测试。
Apache Spark 2.X for Java Developers 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
SparkJava测试 SparkJava Web 框架的简单测试代码
Spark-Java 8的小型Web框架Spark 2.9.3已经发布!! < dependency> < groupId>com.sparkjava</ groupId> < artifactId>spark-core</ artifactId> < version>2.9.3</ version></ dependency> 在这里赞助项目 有关文档,...
Spark应用 带有Spark微型Web框架,Mongo DB和Freemaker的Java应用程序 技术栈: 火花 蒙哥分贝 自由制造者 Java 10 玛文 聪明的想法 Github
Apache Spark 2.x for Java Developers by Sourav Gulati English | 26 July 2017 | ISBN: 1787126498 | ASIN: B01LY3N7ZO | 350 Pages | AZW3 | 4.48 MB Key Features Perform big data processing with Spark—...
spark连接mysql核心代码 java实现方式======================================================================
spark随机森林例子(java版)
SparkJavaDemo 一个使用 java spark 框架的演示应用程序。
包中构建了Java以及Scala混合框架的maven打包框架以及关于spark core,spark sql 、spark streaming的一些典型案例或者算子使用。
参考网络资源使用IKAnalyzer分词组件,实现了纯Java语言、MapReduce模式及Spark 框架三种方式对唐诗宋词等国学经典进行中文分词统计排序的功能,你可以轻松发现唐诗宋词中最常用的词是那几个。
Spark是一个可像Node.js的Express那样快速Web框架,它虽然和大数据处理框架Spark同名,但是它是基于Java的,受Ruby的Sinatra框架鼓舞,用于Java的Web快速开发,使用Java 8 Lambda编写。本例是可运行至tomcat等应用...
依赖关系Sparkjava一个微型Web框架com.sparkjava spark-core 2.3 在Main.java中,我们拥有所有路线所有控制器都在controller文件夹中,该文件夹扩展了与每个Controller类相对应的基础Controller类,那里是template...
Spark-Framework Spark精简web框架
apache-spark-2x-java-developers,apache-spark-2x-java-developers,apache-spark-2x-java-developers,apache-spark-2x-java-developers,apache-spark-2x-java-developers