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。

有兴趣的朋友可以站内联系。



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