Spark——最簡單明瞭的Java Web框架(1)

前陣子在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。

有興趣的朋友可以站內聯繫。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章