锁定老帖子 主题:Spark–一个微型的Java Web框架
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (8)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-23
今天在reddit上看到了这个有趣的Java Web框架,就写了几个例子稍微感受了一下,顺手把它的文档也翻译的了一下。 一、Spark是什么Spark是一个微型的Java Web框架,它的灵感来自于Sinatra,它的目的是让你以最小的代价创建出一个Java Web应用。 二、使用SparkSpark的使用相当简单,首先你需要下载它的jar包以及它所依赖的jar包,或者你也可以直接通过maven来帮你做这件事情: <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由三部分组成:
另外需要注意的一点是,Spark在处理请求进行路径匹配的时候是优先匹配先出现的Route,也就是如果你的请求匹配到了多个Route,那么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(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 文档以及源代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-24
最后修改:2011-05-24
。。。
我觉得 Wicket 就很轻量了 |
|
返回顶楼 | |
发表时间:2011-05-25
哎,,命名成spark了,我还以为是im中的那个Spark
|
|
返回顶楼 | |
发表时间:2011-05-25
不要是用wicket 是一个灾难
|
|
返回顶楼 | |
发表时间:2011-05-25
看起来很简洁,不知道能不能和freemarker之类的模板系统整合?
|
|
返回顶楼 | |
发表时间:2011-05-25
大家还有哪些优秀的轻量级的MVC小框架,最好是零配置零注解
|
|
返回顶楼 | |
发表时间:2011-05-26
很简洁,
|
|
返回顶楼 | |
发表时间:2011-05-26
不带hibernate的简化版play!
|
|
返回顶楼 | |
发表时间:2011-05-26
我喜欢。。
|
|
返回顶楼 | |
发表时间:2011-05-26
既然是简洁的,那么必然它的功能是不强大的
|
|
返回顶楼 | |