三个类似Sinatra的Java框架

今天在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");
Sinatra 是一个微型的 Ruby 语言的 Web 框架,据说 100 行代码就可以开发一个博客软件.一个简单的hello world的web应用用Sinatra只需5行代码:

require 'rubygems'
require 'sinatra'
get '/' do
'Hello World'
end

而 Sinatra 这种框架的思路被越来越人所接受,也因此创造出参考该框架的其他语言移植版本.

下面是三个 Java 语言实现的类 Sinatra 框架:

1. Turismo

Turismo 是一个类似 Sinatra 的 Java 的微型 Web 框架.

示例代码:

public class AppRoutes extends RoutesList {
    protected void map() {
        get(“/wildcard/*/:id”, new Action() {
        public void run() {
        String id = params(“id”);
        print(“wildcard id ” + id);
        }
        });
}
}

2. Spark Framework

Spark是一个微型的Java Web框架,它的灵感来自于Sinatra,它的目的是让你以最小的代价创建出一个Java Web应用.

示例代码:

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!”;
}
});
}
}

3. Scalatra

Scalatra 是一个 Scala 语言仿 Sinatra 的框架.

示例代码:

import org.scalatra._

class ScalatraExample extends ScalatraServlet {

get(“/”) {

  Hello, world!
}

}

总结:

Sinatra 是一种全堆栈的 Web 框架解决方案,这种思路用在 Java 上,你觉得靠谱吗?

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。