初览nutz的DEMO-CMS

来源:互联网 发布:spycall软件哪里能买到 编辑:程序博客网 时间:2024/05/19 00:50

很是喜欢国内的开源项目nutz,不仅是它的简易易用,功能齐全;更是里面包含项目团队的认真的执着。

正文开始~~

今晚由于zxh冒雨溜达去了,和群内的小灵同学吹了一下水,无所事事之余,怀着无尚致敬的心情,深入学习的态度,打算好好学习一下nutz的综合demo-CMS。

大致看了一圈记录一下自己觉得关键的地方,再深入的地方黑盒化,大家可以看nutz的源码。

 

真正的正文开始~~~
1.WEB.xml,大家都知道,这是配置入口。
NutzFilter做了几件事
获得MainModule来初始化Ioc容器,主要看MainModule的@IocBy的args读取的json配置文件和扫描的包;
构建ActionHandler,主要就是每个Action的URL映射,然后每次对访问的URL进行拦载,指向Action的方法。


其它内容可查看控制台输出,或断点到doFilter方法来查看执行情况。

2.知道nutz是怎么在cms里初始化后,就可以直接访问http://localhost:8080/cms。
当nutzFilter拦截到这个访问的URL后,就会在handler(ActionHandler)里找到IndexAction。
没错,查看IndexAction可以看到类的注解有:
@At("/")
@Fail("jsp:error.404")
看就明白了,映射的是上下文的根目录,失败时。。。
于是,Nutz就会构建IndexAction:

NutIoc会把datasource.json的dao就注入到BasicDao中,BasicDao又注入到BaseAction中,一系列的动作后,Make...'indexAction'。
[http-apr-8080-exec-2] DEBUG org.nutz.mvc.impl.UrlMappingImpl - find mapping (DEFT&[]) for path '/'
[http-apr-8080-exec-2] DEBUG org.nutz.ioc.impl.NutIoc - Get 'indexAction'<class com.scxxs.cms.controller.IndexAction>
[http-apr-8080-exec-2] DEBUG org.nutz.ioc.impl.NutIoc -   >> Load definition
[http-apr-8080-exec-2] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(indexAction) in IocLoader(AnnotationIocLoader[basicDao, indexPicAction, navModelAction, messageTypeAction, articleTypeAction, messageTypeDao, task, managerDao, templeteAction, articleAction, siteAction, roleAction, taskExcutor, adminAction, contactAction, indexAction, oneArticleAction, groupAction, oneArticleTypeAction, permissionAction, downloadAction, linkAction, messageAction])
[http-apr-8080-exec-2] DEBUG org.nutz.ioc.impl.NutIoc -   >> Make...'indexAction'<class com.scxxs.cms.controller.IndexAction>
嗯,延时构建,不错!

3.IndexActon的index方法主体
1.查询了几个数据集合出去,newses、reports、pics、groups、link1、link2、link3。
2.最后return new JspView("upload.index");很明显,指向项目upload目录的index.jsp显示页面。
3.由index.jsp中可以看到应用了jstl、fckeditor和自定义的security标签来作页面数据显示用。

4.回过头来看整个项目的架构规划
1.基于nutz的主体应用,周边增加了一些工具类。
2.dao包,主要是注入nutz的Dao类来构建了一个泛型接口的BasicDao,这里可以看作是对nutz的一个隔离或对项目DAO的规范,思路很清析的。
3.没有service包,估计是网站应用很简单,直接在action包里注入BasicDao来解决数据存储的问题
4.项目各个数据表对应的实体类都放在model包了,这方面应该细化看看各实体的关系构建。
5.余下的编辑器fckeditor、上传工具类、字符存储压缩等放在util,配置文件就不说了吧
6.有趣的是,在BasicDao的基础上,作者写了ManagerDao、MessageTypeDao两个专用DAO类,增加的方法很简单,目标权当是层次划分或专用处理吧。

此次走马观花,仅仅是初体验^_^!
我还漏掉了什么?同学们拍砖~


 

原创粉丝点击