一个简单的web框架-beetlefly

设计思想:[url=/admin/blogs/393754]http://jander.iteye.com/admin/blogs/393754[/url]

项目主页:[url]http://code.google.com/p/beetlefly/[/url]

下载:[url]http://beetlefly.googlecode.com/files/beetlefly-eclipse-project-0.1.zip[/url]

欢迎各种意见。

简单介绍:
使用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. 第三步,没有了,你可以执行你的程序了,是不是很简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值