前陣子在10gen官網參與了MongoDB For Java Developer的網絡課程,課程採用了一個blog作爲開發例子,側重於MongoDB的介紹,當然要對web開發(web框架,HTML,JavaScript等)儘可能略過。在搭建這個blog web app的時候,課程使用了一個叫Spark的框架,讓筆者眼前一亮。
經過一番閱讀(網上的資料很少)和實驗,發現Spark確實是簡單明瞭到極致的Java Web框架。如果任何Java Developer,想要迅速地開發一個簡單的web產品(例如blog,或者簡單的公司網站),Spark絕對是第一選擇。
下面介紹一下筆者的實驗(基於maven,Eclipse):
1、用maven新建一個web project
命令如下
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
2、用maven的eclipse插件把這個web project加入Eclipse IDE支持
命令如下:
mvn eclipse:eclipse -Dwtpversion=2.0
3、打開Eclipse,Import -> Existing Projects into Workspace
4、打開pom.xml,把spark加進去
需要加一個repository和一個dependency
加好之後的pom如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jieqin</groupId>
<artifactId>blog</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>blog Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>spark</groupId>
<artifactId>spark</artifactId>
<version>0.9.9.4-SNAPSHOT</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>Spark repository</id>
<url>http://www.sparkjava.com/nexus/content/repositories/spark/</url>
</repository>
</repositories>
<build>
<finalName>blog</finalName>
</build>
</project>
5、在terminal執行mvn clean install
maven會自動下載spark包,以及spark包所依賴的3個包(jetty-webapp, servlet-api, slf4j-api)
需要jetty的原因是spark使用它作爲embedded sever,這樣不需要額外的server就可以運行spark項目
6、新建一個Java class
package blog;
import spark.*;
public class Test {
public static void main(String[] args) {
Spark.get(new Route("/hello") {
/* (non-Javadoc)
* @see spark.Route#handle(spark.Request, spark.Response)
*/
@Override
public Object handle(Request request, Response response) {
return "Hello World from Spark!";
}
});
}
}
7、運行(Run as Java Application)
注意Eclipse的console view裏面出現如下的log
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
== Spark has ignited ...
>> Listening on 0.0.0.0:4567
這時候表示spark(“火花”的英文)已經被點燃了!打開web瀏覽器,輸入http://localhost:4567/hello
後面計劃就下面2個問題各再寫一篇
1、Spark——最簡單明瞭的Java Web框架(2)
現在整個項目的入口是main方法,那怎麼把這個web項目重新構造使得它符合大家熟悉的根據url pattern調用相應的servlet的模式,並且如何使基於Spark的web項目部署在tomcat這樣的server上。
2、Spark + Freemarker + Bootstrap
加入Freemarker作爲HTML templating engine,以及Bootstrap作爲CSS,使得Spark+Freemarker+Bootstrap真正能夠有很強的實用性,而不是簡單的只能做做hello world。
有興趣的朋友可以站內聯繫。