设计思想:
http://jander.iteye.com/admin/blogs/393754
项目主页:
http://code.google.com/p/beetlefly/
下载:
http://beetlefly.googlecode.com/files/beetlefly-eclipse-project-0.1.zip
欢迎各种意见。
简单介绍:
使用Beetlefly构建web程序,不用任何配置:
Beetlefly在服务程序加载时,自动扫描各个Action,并将它们注入到Guice容器。
在客户端请求时,将request url 自动映射为Action的 method。
使用Beetlefly构建web程序,只需要简单几步:
1. 在web.xml中加入
<listener>
<listener-class>org.beetlefly.example.blog.WebContextListener</listener-class>
</listener>
<servlet>
<servlet-name>Beetle</servlet-name>
<servlet-class>org.beetlefly.web.BeetleflyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Beetle</servlet-name>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>
其中org.beetlefly.example.blog.WebContextListener 进行Guice注入,需要使用者自己编写,格式如下:
public class WebContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent event) {
GuiceInjector.destory();
}
@Override
public void contextInitialized(ServletContextEvent event) {
//Here,you can add your Gurice Modules.
//在"org.beetlefly.example"的Package下,扫描Action.
GuiceInjector.createInjector("org.beetlefly.example",new AbstractModule(){
@Override
protected void configure() {
bind(Service.class).to(ServiceImpl.class).asEagerSingleton();
//如果想控制Exception的话
//bind(ExceptionHandler.class).to(MyExceptionHandler.class).asEagerSingleton();
}
});
}
}
BeetleflyServlet,作为Beetlefly的分配器,将客户端发送给各个Action,上面的配置,说明 BeetleflyServlet?将作用于http://hostname/rootname/page/下的url。
2. 编写自己的Action文件。所有Action类,都implements Action接口,Action接口是一个标记接口,其中不含任何方法。每个Action都要进行一个标记,用于BeetleflyServlet从容器中查找它。
//对Action进行标记
@ActionAnnotation("blog")
public class BlogAction implements Action {
private Service service;
@Inject
public BlogAction(Service service) {
super();
this.service = service;
}
//这个方法的url: http://hostname/rootname/page/blog/list
public View list(HttpServletRequest req, HttpServletResponse resp){
Map<String,Object> map=new HashMap<String,Object>();
map.put("blogs", service.findAllBlogs());
return new JstlView("/blog/list.jsp",map);
}
//这个方法的url: http://hostname/rootname/page/blog/creat
public View create(HttpServletRequest req, HttpServletResponse resp){
String title=req.getParameter("title");
String content=req.getParameter("content");
Blog blog=new Blog(service.nextKey(),title,content);
service.create(blog);
return new RedirectView("/page/blog/list");
}
}
3. 第三步,没有了,你可以执行你的程序了,是不是很简单。