Java的微型Web框架 Spark 簡易入門教程

jopen 9年前發布 | 16K 次閱讀 Spark 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!";
     }
  });

}

}</pre>

打開http://localhost:4567/hello快快看看效果吧。
怎么樣?夠簡單吧,接下來看下Spark中一些重要的組件:

三、Spark中的組件

Routes

在Spark程序中,其請求的處理都是由Route來完成的,一個Route由三部分組成:

  • 一個動詞,比如get,post,delete,trace等等
  • 一個路徑,比如前面的例子中的“/hello”
  • 回調函數,比如前面的例子中的handle
  • </ul>

    另外需要注意的一點是,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

    文檔以及源代碼

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!