论坛首页 入门技术论坛

一个简单web的构想,即将又一个山寨

浏览 9161 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-05-22   最后修改:2009-05-22
动机:现在的web框架大都是庞然大物,学习曲线陡峭,难道就不能有5分钟能熟练应用的框架?我想做一个这样的。

大致思路: 根据url映射为各个Action类的method,进行控制器的调用,这样的好处是省略了view的配置。

框架的使用
1.实现一个具体的Action(见下面的Class Blog),并对其进行标记(只对Action类标记一个值)。
2.将标记的Action注入到Guice容器,就是要实现自己的Guice Module。
3.在web启动后,进行Guice注入,在ServeletContextListener中实现。
4.好像没有需要做的了。。。。除了写jsp\javascript\

实现
1.Action类大概的设计
Action类都implements Action 接口。Action接口是一个空接口,紧紧用于标识。
每个Action类都标记一个名称,Action的标记与method一起用于与url匹配.
每个Action可以实现多个方法.

@ActionAnnotation("blogs")
class Blog implements Action{
   ....
   
   public View new(HttpServeletRequest req,HttpServeletResponse resp){

    }

   //Action中的方法,模仿spring.
   public View list(HttpServeletRequest req,HttpServeletResponse resp){
         Map model=new HashMap();
         model.put("list",service.findAll());
         return new JstlView("/blogList.jsp",model);
    }
   ....
}


2.url路径转换器
//将url路径转换成MethodInvocation.
public class PathTranslator {
   public static MethodInvocation translate(String requestPath);
}

public class MethodInvocation{
   private Object object; //invocate action.
   private Method method; //invocate method of the action
   public Object inovate(Object... params);
}


3.建立一个MainServelet,将PathTranslator转化来的MethodInvocation进行调用.调用结果将返回一个View的对象.

4.View 表示框架视图.可以有JstlView,JsonView,RedirectView等等,不过暂时准备实现这三个。

流程
1.Client发出http://jander.iteye.com/admin/blogs/list请求;
2.该请求由MainServelet接收,发给PathTranslator翻译;
3.翻译结果出来是一个MethodInvocation对象,隐含我们要调用的Action Object和  method Object;
4.调用MethodInocation.innvocate方法,这将导致调用Action.method();
5.action.method()返回一个View。


就这样,应该没有问题,争取这两天做出来。
   发表时间:2009-05-24  
真的够简单,,但也完成了,参数接受,-》(处理) -》返回
0 请登录后投票
   发表时间:2009-05-24  
action根本不理页面向导.
直接html连接html
到html上了再用action 返回 json数据  把数据填到必要的区域中.
数据提交除外
0 请登录后投票
   发表时间:2009-05-24  
也听小胖说过完美mvc框架
0 请登录后投票
   发表时间:2009-05-24  
投个新手

你这个简单是简单,优秀web框架的demo也是这么简单来的
倒不如先看看其他web框架,比如springmvc
0 请登录后投票
   发表时间:2009-05-25  
mccxj 写道
投个新手

你这个简单是简单,优秀web框架的demo也是这么简单来的
倒不如先看看其他web框架,比如springmvc


你知道我没有看?我以前就是用springmvc的。
我只是在使用过程中,感觉springmvc还是麻烦,才做这个项目的。
0 请登录后投票
   发表时间:2009-05-25  
对大家说一句:
希望大家对设计思路提意见,而不是冷嘲热讽和无声的新手票。
0 请登录后投票
   发表时间:2009-05-25  
jander 写道
对大家说一句:
希望大家对设计思路提意见,而不是冷嘲热讽和无声的新手票。

springmvc2.5的annotation,coc配置
等多就用xml配点bean,还麻烦么?
我是怎么看你的思路都和springmvc不是大同小异的么?
另外,2天弄出来的东西,功能真的够的上项目需求么?

ps:无冷嘲热讽之意思
0 请登录后投票
   发表时间:2009-05-25  
mccxj 写道
jander 写道
对大家说一句:
希望大家对设计思路提意见,而不是冷嘲热讽和无声的新手票。

springmvc2.5的annotation,coc配置
等多就用xml配点bean,还麻烦么?
我是怎么看你的思路都和springmvc不是大同小异的么?
另外,2天弄出来的东西,功能真的够的上项目需求么?

ps:无冷嘲热讽之意思


我的思路是与spring mvc差不多,毕竟大部分时间就是用它。但也有不同点:
1.我使用guice作为ioc容器。spring和guice谁好,在于个人选择,我也不好说什么,个人不喜欢spring那种以字符串表示对象的方式。
2.因为使用url映射Action的method,比spring少了@RequestMapping这个标签。一个Controller一个这样的标签,项目一大,数量也是惊人不是,麻烦。

另外,我这个框架是不成熟的,我也没有说它是成熟的,只是想把自己的想法表达出来,作为交流的目的,我认为2天时间够了。
0 请登录后投票
   发表时间:2009-05-25  
@RequestMapping可以对每个方法注释一个,一个controller就可以映射多个路径了。
使用org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping
有coc的功能也不错哦。

我的意见,倒不如在springmvc上做扩展,修改,更吻合自己的项目需求更好。。
总觉得mvc这条路,思路都差不多了。呵呵
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics