锁定老帖子 主题:一个简单的web框架-beetlefly
精华帖 (0) :: 良好帖 (5) :: 新手帖 (7) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-25
最后修改:2009-05-27
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. 第三步,没有了,你可以执行你的程序了,是不是很简单。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-25
每个Action都要带这么一个(HttpServletRequest req, HttpServletResponse resp)
够麻烦的。 个人认为不妥。 |
|
返回顶楼 | |
发表时间:2009-05-25
最后修改:2009-05-25
stworthy 写道 每个Action都要带这么一个(HttpServletRequest req, HttpServletResponse resp)
够麻烦的。 个人认为不妥。 设计一个HttpServletRequest req, HttpServletResponse resp的包装Class,放入ThreadLocal? 个人认为这样也不妥。与原来的编程风格差异太大了。这个项目的目标就是简单。只要会Servlet编程,看了说明就会使用。 |
|
返回顶楼 | |
发表时间:2009-05-25
还是struts2更简单。
|
|
返回顶楼 | |
发表时间:2009-05-25
jianfeng008cn 写道 还是struts2更简单。
看了一遍:http://struts.apache.org/2.0.9/docs/struts-2-spring-2-jpa-ajax.html。 不明白struts2简单到哪里?struts.xml要是不需要配置才能更我这个一样简单。 |
|
返回顶楼 | |
发表时间:2009-05-25
思路挺好的。鼓励一下
|
|
返回顶楼 | |
发表时间:2009-05-27
可以参照springside看看,先不说struts2的理念和扩展性,他的用法是很灵活的,零配置也很方便,而且通过自己设计拦截器和result,可以用得很舒服,山寨框架自己练练编程蛮好的,但是往往作者报喜不报忧,实际上和主流框架的差距不是一点点,je上很多以前发过的框架都是如此,框架开发者一般能力比较强,我想还是投入开源阵地做点是实实在在的贡献吧。(菜鸟谈想法,老鸟别愤怒哈~~)
|
|
返回顶楼 | |
发表时间:2009-05-27
to:jianfeng008cn
我这个只是一个试验性的原型项目,不是让大家用的,而是用来探讨的。说句实话,这个东西的编码2天功夫就完成了。 公布出来,不是对开源阵地做贡献,难道只有改进strut,spring才是。 |
|
返回顶楼 | |
发表时间:2009-05-27
最后修改:2009-05-27
说实话真的很麻烦,我建议你有时间看一下我曾经写过的框架把。
Action什么都不需要写 要执行的方法上加上@Job就可以 要访问ServletAPI,可以通过提供了ActionContext类提供的借口访问。 @Name("Login") pulbic class LoginAction { @Job public String execute(WebForm form){ User u=(User)form.toEntity(User.class); String name=form.get("name"); Map m=ActionContext.getSession(); String secret=ActionContext.getSession("secret"); FreemarketTemplate().putParameter("name",name); return "success"; } } |
|
返回顶楼 | |
发表时间:2009-05-27
cloud21 写道 说实话真的很麻烦,我建议你有时间看一下我曾经写过的框架把。
Action什么都不需要写 要执行的方法上加上@Job就可以 要访问ServletAPI,可以通过提供了ActionContext类提供的借口访问。 @Name("Login") pulbic class LoginAction { @Job public String execute(WebForm form){ User u=(User)form.toEntity(User.class); String name=form.get("name"); Map m=ActionContext.getSession(); String secret=ActionContext.getSession("secret"); FreemarketTemplate().putParameter("name",name); return "success"; } } Action有两个Servlet参数,返回一个View就麻烦吗? 个人不觉得,而且也很好地与spring mvc对接(其实是抄袭)。 还有,你那个我下载了,说句实在话,别介意,设计思路,注释文档,测试一概没有,神仙才会看。 要交流,起码先让别人知道你的思想不是? |
|
返回顶楼 | |