简介
Sitebricks 目前仍然处于测试阶段,它是一种新的 Java™ Web 应用程序框架。您可能想问:“为什么我还需要另一个 Web 框架?” 通过 Google Sitebricks,您可以快速构建一个可由他人维护或操作的 Web 应用程序。Sitebricks 构建于 Guice 之上。它将许多 Guice 原则扩展到 Web。它像 Guice 一样大量使用注释将配置作为代码的一部分。要使用 Guice,不需要创建或编辑大量 XML 文件。而 Sitebricks 允许在创建 Web 应用程序时编写相对较少的代码。您编写的代码将会简单明了。可以查看 Sitebricks 代码并快速了解其表达的含义。Sitebricks 不会破坏类型安全或性能。
先决条件
Sitebricks 仍然处于测试阶段;本文使用的是 0.8.2 版本。
目前,使用 Sitebricks 最简单的方式就是随 Maven 一同使用。本文使用的是 Maven 3.0.1。当然,Maven 会引入 Sitebricks 需要的所有其他依赖项,比如 Google Guice。
依赖于 Java 中的一些高级特性,因此需要用到 JDK 1.6。本文使用的是 JDK 1.6.0_5。
您可以使用一个 Java Web 应用服务器来部署本文中的样例应用程序,不过这并非必需步骤。
此外,样例应用程序包含一个可用作测试的嵌入式 Jetty 服务器。
在样例应用程序中用到了由 Sitebricks 使用的 Guice。熟悉一下 Guice 或 Spring 等其他依赖注入框架会很有用。
使用maven创建项目
- #mvn archetype:generate
简单web项目应该是选择100
项目的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>vmars</groupId>
- <artifactId>vmars</artifactId>
- <packaging>war</packaging>
- <version>1.0</version>
- <name>vmars Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <repositories>
- <!-- 如果搭建了maven私服,可以在私服上添加一个repository
- 就可以不用以下的repository配置了
- -->
- <repository>
- <id>sonatype-google-snapshots</id>
- <name>Sonatype Google Snapshots Repository</name>
- <url>http://oss.sonatype.org/content/repositories/
- google-snapshots/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.7</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.google.sitebricks</groupId>
- <artifactId>sitebricks</artifactId>
- <version>0.8.2</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>vmars</finalName>
- <plugins>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-eclipse-plugin</artifactId>
- <configuration>
- <wtpmanifest>true</wtpmanifest>
- <wtpapplicationxml>true</wtpapplicationxml>
- <wtpversion>2.0</wtpversion>
- <ajdtVersion>none</ajdtVersion>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
生成eclipse项目
- #mvn eclipse:eclipse
maven 会把依赖的jar下载下来
配置web.xml文件
- <web-app>
- <display-name>Archetype Created Web Application</display-name>
- <filter>
- <filter-name>webFilter</filter-name>
- <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>webFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>org.vmars.framework.web.MyGuiceCreator</listener-class>
- </listener>
- </web-app>
看到在web.xml中需要一个自己的listener,这个listener的作用是在容器启动时配置sitebricks。
写listener
- public class MyGuiceCreator extends GuiceServletContextListener {
- @Override
- protected Injector getInjector() {
- return Guice.createInjector(new SitebricksModule() {
- protected void configureSitebricks() {
- scan(Example.class.getPackage()); //scan class Example's package and all descendants
- }
- });
- }
- }
示例使用 scan,这是 Sitebricks 所特有的一个 API。它接收一个 Java 包并将其内容添加到由 Sitebricks 管理的类中。这的Example是一个处理请求的类。
写Example
- @At("/example") //请求的路径
- @Show("/pages/example.html")
- //处理请求指向的页面,如果没有不写此标签。就需要在webapp目录下或者WEB-INF目录下创建一个Example.html文件。
- public class Example {
- private boolean appear = false;
- private String message = "Hello";
- public String getMessage() {
- return message;
- }
- public boolean isAppear() {
- return appear;
- }
- public void setAppear(boolean appear) {
- this.appear = appear;
- }
- }
写Example.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <a href='?appear=${!appear}'>show/hide</a>
- @ShowIf(appear)
- <span>
- ${message} from Sitebricks!
- </span>
- </body>
- </html>
至此一个最简单例子就完成了。
运行示例
- #mvn jetty:run
然后在浏览器中输入
http://localhost:8080/项目名称/example
就可以访问测试了。
参考:
http://www.ibm.com/developerworks/cn/web/wa-sitebricks/index.html?ca=drs-
http://code.google.com/p/google-sitebricks/wiki/GettingStarted