前阵子在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>
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
后面计划就下面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。
有兴趣的朋友可以站内联系。