google sitebricks 学习心得--最简单web应用

简介 

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创建项目 

Java代码    收藏代码
  1. #mvn archetype:generate   



简单web项目应该是选择100 

项目的POM文件

Xml代码    收藏代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>vmars</groupId>  
  5.     <artifactId>vmars</artifactId>  
  6.     <packaging>war</packaging>  
  7.     <version>1.0</version>  
  8.     <name>vmars Maven Webapp</name>  
  9.     <url>http://maven.apache.org</url>  
  10.          <repositories>  
  11. <!-- 如果搭建了maven私服,可以在私服上添加一个repository  
  12.      就可以不用以下的repository配置了  
  13. -->  
  14.   
  15.         <repository>   
  16.             <id>sonatype-google-snapshots</id>   
  17.             <name>Sonatype Google Snapshots Repository</name>  
  18.             <url>http://oss.sonatype.org/content/repositories/  
  19. google-snapshots/</url>  
  20.             <releases>  
  21.                 <enabled>true</enabled>  
  22.             </releases>  
  23.             <snapshots>  
  24.                 <enabled>true</enabled>  
  25.             </snapshots>  
  26.         </repository>  
  27.     </repositories>  
  28.     <dependencies>  
  29.         <dependency>  
  30.             <groupId>junit</groupId>  
  31.             <artifactId>junit</artifactId>  
  32.             <version>4.7</version>  
  33.             <scope>test</scope>  
  34.         </dependency>  
  35.         <dependency>  
  36.             <groupId>com.google.sitebricks</groupId>  
  37.             <artifactId>sitebricks</artifactId>  
  38.             <version>0.8.2</version>  
  39.         </dependency>  
  40.             </dependencies>  
  41.     <build>  
  42.         <finalName>vmars</finalName>  
  43.         <plugins>  
  44.             <plugin>  
  45.                 <groupId>org.mortbay.jetty</groupId>  
  46.                 <artifactId>maven-jetty-plugin</artifactId>  
  47.             </plugin>  
  48.             <plugin>  
  49.                 <groupId>org.apache.maven.plugins</groupId>  
  50.                 <artifactId>maven-compiler-plugin</artifactId>  
  51.                 <version>2.1</version>  
  52.                 <configuration>  
  53.                     <source>1.6</source>  
  54.                     <target>1.6</target>  
  55.                 </configuration>  
  56.             </plugin>  
  57.             <plugin>  
  58.                 <groupId>org.apache.maven.plugins</groupId>  
  59.                 <artifactId>maven-eclipse-plugin</artifactId>  
  60.                 <configuration>  
  61.                     <wtpmanifest>true</wtpmanifest>  
  62.                     <wtpapplicationxml>true</wtpapplicationxml>  
  63.                     <wtpversion>2.0</wtpversion>  
  64.                     <ajdtVersion>none</ajdtVersion>  
  65.                 </configuration>  
  66.             </plugin>  
  67.         </plugins>  
  68.     </build>  
  69. </project>  



生成eclipse项目

Java代码    收藏代码
  1. #mvn eclipse:eclipse  


maven 会把依赖的jar下载下来 

配置web.xml文件

Xml代码    收藏代码
  1. <web-app>  
  2.     <display-name>Archetype Created Web Application</display-name>  
  3.     <filter>  
  4.         <filter-name>webFilter</filter-name>  
  5.         <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>  
  6.     </filter>  
  7.     <filter-mapping>  
  8.         <filter-name>webFilter</filter-name>  
  9.         <url-pattern>/*</url-pattern>  
  10.     </filter-mapping>  
  11.     <listener>  
  12.         <listener-class>org.vmars.framework.web.MyGuiceCreator</listener-class>  
  13.     </listener>  
  14. </web-app>  


看到在web.xml中需要一个自己的listener,这个listener的作用是在容器启动时配置sitebricks。 

写listener

Java代码    收藏代码
  1. public class MyGuiceCreator extends GuiceServletContextListener {  
  2.     @Override  
  3.     protected Injector getInjector() {  
  4.         return Guice.createInjector(new SitebricksModule() {  
  5.              protected void configureSitebricks() {   
  6.                  scan(Example.class.getPackage());    //scan class Example's package and all descendants  
  7.              }  
  8.         });  
  9.     }  
  10. }  


示例使用 scan,这是 Sitebricks 所特有的一个 API。它接收一个 Java 包并将其内容添加到由 Sitebricks 管理的类中。这的Example是一个处理请求的类。 

写Example

Java代码    收藏代码
  1. @At("/example"//请求的路径  
  2. @Show("/pages/example.html")  
  3. //处理请求指向的页面,如果没有不写此标签。就需要在webapp目录下或者WEB-INF目录下创建一个Example.html文件。  
  4. public class Example {  
  5.     private boolean appear = false;  
  6.     private String message = "Hello";  
  7.       
  8.     public String getMessage() {  
  9.         return message;  
  10.     }  
  11.       
  12.     public boolean isAppear() {  
  13.         return appear;  
  14.     }  
  15.     public void setAppear(boolean appear) {  
  16.         this.appear = appear;  
  17.     }  
  18. }  



写Example.html

Html代码    收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>Insert title here</title>  
  6. </head>  
  7. <body>  
  8. <a href='?appear=${!appear}'>show/hide</a>  
  9. @ShowIf(appear)  
  10. <span>  
  11.  ${message} from Sitebricks!  
  12. </span>  
  13. </body>  
  14. </html>  



至此一个最简单例子就完成了。 

运行示例

Java代码    收藏代码
  1. #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

 

 

你可能感兴趣的:(Google)