收藏 分享(赏)

jeecms——二次开发相关文档(入门).doc

上传人:无敌 文档编号:1069792 上传时间:2018-06-09 格式:DOC 页数:13 大小:87.01KB
下载 相关 举报
jeecms——二次开发相关文档(入门).doc_第1页
第1页 / 共13页
jeecms——二次开发相关文档(入门).doc_第2页
第2页 / 共13页
jeecms——二次开发相关文档(入门).doc_第3页
第3页 / 共13页
jeecms——二次开发相关文档(入门).doc_第4页
第4页 / 共13页
jeecms——二次开发相关文档(入门).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、Jeecms 二次开发相关文档(入门)目录:(本文档中内容整理自网络并结合自己实际开发经验总结而来,文档后有相关内容引用出处,本处声明免责,不承担任何纠纷,文档供大家交流使用)Jeecms 二次开发相关文档(入门) .1一、jeecms 内部请 求转发运行原理 .2二、jeecms 使用 freemarker 标签示例及原理 .41、标签使用示例 .42、标签原理 .43、自定义标签(实例演示说明标签用法) .7三、在 MyEclipse 工作环境中构建 jeecms 项目 .101、搭建 Jeecms 的运行环境 .102、安装 jeecms 演示系统 .103、导入 Jeecms 项目 .

2、10一、jeecms 内部请求转发运行原理Jeecms 中有众多的配置文件,单 xml 配置文件就相当繁多,各个文件间的关联查找使用关系也不像简单的 struts 配置文件一样。如首页的显示过程如下。系统架构是 ssh+freemarker 模板构成的,所以先要熟悉 freemarker 模板技术。先看 web.xml 文件,其中欢迎页面有:index.jspa index.do index.html 接着再看 jeecms/core/struts-core-front.xml 配置文件,发现有个 action 的通用配置:$namespace $actionName struts 收到请求以

3、后,将请求转发到 core.dynamicSystemAct 这个对象,注意这个这个 class 并不是真正的类,是类的别名,由 spring 通过标注Controller进行绑定,web 应用上下文可以通过 classpath 自动扫描到这个类。Controller(“core.dynamicSystemAct“) public class DynamicSystemAct 在这个 action 执行之前,先要执行好几个拦截器。其他 struts 和 webwork 自带的拦截器不必说,主要说一下在程序里面自定义的几个比较重要的拦截器(定义在 jeecms/src/struts-defaul

4、t.xml 文件中) 。DomainNameInterceptorUrlInterceptorCookieIdentityInterceptor然后执行 action 自己的 execute 方法,产生 2 个参数:namespace = “/jeedynamic/“ + sys;actionName = “Page“;这 2 个参数决定了程序的走向,组成转发路径:/jeedynamic /jeecms/Page.do,然后通过查找下面的配置信息$tplPath $tplPath 注:其他的请求过程类似,先找到命名空间,然后找到对应的 action进行处理。将请求转发给 cms.cmsPage

5、Act 对象,同上的道理,对应到控制器:com.jeecms.cms.action.front.CmsPageAct。拦截器处理完毕后,执行自己的 execute 方法,判断若是首页,则执行 sysIndex()方法,返回一个模板路径tplPath:/WEB-INF/user_base/jeecms_com_www/template /article/default/index.html,找到这个文件,是文章对应的首页模板,里面有使用的各 freemarker 标签cms 等。二、jeecms 使用 freemarker 标签示例及原理1、标签使用示例可以看到,在 jeecms 系统的 htm

6、l 文档中经常有好多cms 等引用标签,这类标签是 freemarker 标签使用会是下列情况、单独标签调用示例:cms.ChnlList/ cms. ArtiList /(这个是显示文章列表的)、自定义标签调用示例: cms.ChnlList id= inner=1;c,i $c.name#if (i+1)%2=0/#if /cms.ChnlList 、配合其它标签嵌套调用示例: cms.ChnlList id= sysType=article hasContent=1 inner=1;c $c.name cms.ArtiList chnlId=c.id sysContent=1-1 tit

7、Len=20 count=6 / /cms.ChnlList2、标签原理部分常用标签参数:原理:如 freemarker 标签cms,定义在配置文件 freemarker.properties 中:auto_import=“/WEB-INF/ftl_lib/ as p, “/WEB-INF/ftl_lib/jeecms/index.ftl“ as cms cms 标签所用的 ftl 模板文件为 index.ftl。 打开 index.ftl 文件,includes 了多个 ftl,其中有 action_cms.ftl,该文件用标签#macro,自定义许多directive:ChnlList 和

8、 CommentList 等。里面使用 struts2 标签s.action 来请求数据,整个的 index.html 页面就是这么加载出来的。通过 freemarker 引擎来解析数据模型,最后显示到前台,展现给客户。index.html include head.htmlcms.ChnlList id= inner=1;c$c.name/cms.ChnlList对应 action_cms.ftl 中 macro ChnlList 定义, 使用 struts 标签 action 在 struts-front.xml 中找到对应的 class=“cms.chnlPartAct“.private

9、 Pagination tagChnlList() list = cmsChannelMng.getChild(getWebId(), sysType, chnlId, orderBy,isDisplay = 1 ? true : false, hasContent = 1 ? true : false,firstResult, count);pagination = new Pagination(pageNo, count, list.size(), list);return pagination;CmsChannelMng CmsChannelMngImplBaseManagerImplB

10、aseDaoBaseDaoImpl待整理:如页面跳到 action: article.articleActlist()将取出对应的文章pagination = articleMng.getRightArticle(getWebId(), chnlId,getAdminId(), queryInputAdminId, queryContentCtgId,queryDisabled, queryTopTime, queryTopLevel, queryStatus,queryTitle, queryOrder, pageNo, getCookieCount();(freemarker macro

11、对应参数)最终掉到 ArticleDaoImpl.public Pagination getRightArticle(Long webId, Long chnlId, Long adminId,Long inputAdminId, Long contentCtgId, boolean disabled,boolean topTime, int topLevel, int status, String title, int order,int pageNo, int pageSize)3、自定义标签(实例演示说明标签用法)自定义标签时候会用到 Macro,Macro 又叫宏,宏是在模板中使用 m

12、acro 指令定义,宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子。下面以用自定义的标签cms.VoteList/ (本 中的代码cms.VoteList 显示了下图的整个页面)显示投票结果功能为例,该例显示结果如下图:“投票测试”和“投票测试 2”就是 VoteList 标签显示出来的,在本 html 中,只在 html 中用cms.VoteList/就可显示上图中所有内容,包括分页功能,不需要其他 html 标签来辅助显示,原本页面该用 htm 标签的地方都在 ftl 文件里面使用 html 标签处理过排版了。定义 freemarker 标签(该标签内

13、不含 html 标签,和后面的含 html 标签和前台显示关联密切的 ftl 文件相对比,可在 freemarker 自定义的标签中设置 ftl 文件中是否使用 html 标签)下面的代码位于 WebRoot/WEB_INF/ftl_lib/jeecms/auxiliary/voteList.ftl 内。WebRoot/WEB_INF/ftl_lib/jeecms/auxiliary/voteList.ft 为标签定义文件,WebRoot/WEB_INF/ftl_lib 下的多个 ftl 文件组成了整个系统的标签支持功能,auxiliary 为网站的辅助功能(网站发起的投票,留言等)文件包,s

14、rc 内有auxiliary 相应的 action 和相关 xml 配置文件,下面讲解会用到。在上面标签中,/WEB-INF/ftl_lib/jeecms/auxiliary/voteList.ftl$tplPath由以上配置文件可知,标签请求的数据来自 class=“auxiliary.votePartAct“ , 相关的 votePartAct 代码为:public String voteList() pagination = voteTopicMng.getPageForTag(getWebId(),firstResult,pageNo, count);return handleResu

15、lt(“VoteList“);数据即来自 pagination,到此处,标签已经获得了数据,下面是显示部分,标签将得到的数据显示在$tplPath 中配置的$tplPath即auxiliary 模块,该模块文件在/WEB-INF/user_base/jeecms_com_www/template)的 auxiliary 的 defalut 下以 sys_开头,以标签名字 VoteList 结尾的文件sys_VoteList.html 网页内。显示方式为/WEB-INF/ftl_lib/jeecms/auxiliary/voteList.ftl设置的/WEB-INF/ftl_lib/jeecms

16、/auxiliary/voteList.ftl 中的方式,voteList.ftl 文件内容(含 html 标签)如下:注释: 使用标签已经获得的 pagination 数据$vote.title注释:isPage 是声明使用分页功能。标签获得的 Pagination 中有已封装的分页相关参数,此处可直接使用。至此,标签 VoteList 的声明定义(/WEB-INF/ftl_lib/jeecms/action_auxiliary.ftl 文件中) 、标签使用 struts 的标签s.action 引用来自相应 action 的数据、标签得到的数据的显示方式的设置(/WEB-INF/ftl_l

17、ib/jeecms/auxiliary/voteList.ftl 文件定义)都已经完成。在系统页面中,就可以直接使用 VoteList 标签了。只要系统见到cms.VoteList/就可以找着 ftl_lib 中的相关 VoteList 标签定义,顺藤摸瓜,然后就可以得到数据,然后再在页面正常显示出页面数据(此例我们用到的是投票列表)了。三、在工作环境中构建 jeecms 项目源码包内有相关安装使用文档,参照使用就可以。下面是 MyEclipse 中创建jeecms 项目图文指南。1、搭建 Jeecms 的运行环境具体过程在此不做赘述,可以参考 Jeecms 官网上的教程 .准备好 Jeecms 程序包和源代码包,下载地址 http:/ jeecms 演示系统Tomcat 内已有可以运行的 jeecms 系统的话可以跳过本步骤,下载下来的文件包 jeecms-v2.0-beta.rar 为 Jeecms 的运行程序包, jeecms-2.0.0-beta-src.zip 为源码包。依照下载包内相关文档使用操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报