刚开始研究jeecms的时候很纳闷,找不到首页的加载页面。。经过一番仔细研究,发现这个加载还是经过了很多曲折的过程的。整个程序的架构师ssh+freemarker模板构成的,所以先要熟悉freemarker模板技术。
先看web.xml文件,其中欢迎页面有:
- <welcome-file-list>
- <welcome-file>index.jspa</welcome-file>
- <welcome-file>index.do</welcome-file>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
接着再看jeecms/core/struts-front.xml配置文件,发现有个action的通用配置:
- <action name="**" class="core.dynamicSystemAct">
- <result type="chain">
- <param name="namespace">${namespace}</param>
- <param name="actionName">${actionName}</param>
- </result>
- <interceptor-ref name="exception"/>
- <interceptor-ref name="domain"/>
- <interceptor-ref name="cookieIdentity"/>
- <interceptor-ref name="url"/>
- </action>
struts收到请求以后,将请求转发到core.dynamicSystemAct这个对象,注意这个这个class并不是真正的类,是类的别名,由spring通过标注@Controller进行绑定,web应用上下文可以通过classpath自动扫描到这个类。
- @Controller("core.dynamicSystemAct")
- public class DynamicSystemAct
在这个action执行之前,先要执行好几个拦截器。其他struts和webwork自带的拦截器不必说,主要说一下在程序里面自定义的几个比较重要的拦截器(定义在jeecms/src/struts-default.xml文件中)。
DomainNameInterceptor
UrlInterceptor
CookieIdentityInterceptor
然后执行action自己的execute方法,产生2个参数:
namespace = "/jeedynamic/" + sys;
actionName = "Page";
这2个参数决定了程序的走向,组成转发路径:/jeedynamic/jeecms/Page.do,然后通过查找下面的配置信息
- <package name="cms.front.page" namespace="/jeedynamic/jeecms" extends="empty-default">
- <action name="Page" class="cms.cmsPageAct">
- <result>${tplPath}</result>
- <result name="pageCache" type="pageCache">${tplPath}</result>
- <interceptor-ref name="exception"/>
- <interceptor-ref name="chain"/>
- </action>
- </package>
注:其他的请求过程类似,先找到命名空间,然后找到对应的acting进行处理。
将请求转发给cms.cmsPageAct对象,同上的道理,对应到控制器:com.jeecms.cms.action.front.CmsPageAct。拦截器处理完毕后,执行自己的execute方法,判断若是首页,则执行sysIndex()方法,返回一个模板路径tplPath:/WEB-INF/user_base/jeecms_com_www/template/article/default/index.html,找到这个文件,是文章对应的首页模板,里面有自定义的freemarker标签@cms,定义在配置文件freemarker.properties中:
auto_import="/WEB-INF/ftl_lib/ponyjava.com/index.ftl" 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和CommentList等。里面使用struts2标签@s.action来请求数据,整个的index.html页面就是这么加载出来的。通过freemarker引擎来解析数据模型,最后显示到前台,展现给客户。
分享到:
相关推荐
jeecms图文安装过程,导入myeclipse步骤,jeecms首页加载过程,标签的使用及自定义标签,怎样使用自己创建的表
JEECMS
jeecms9.2源代码文件 环境软件可以从以下网址中获得 Jdk 7.0 下载址: http://java.sun.com/javase/downloads/index.jsp Tomcat7 下载地址:https://tomcat.apache.org/download-70.cgi MySQL 5.0.22 下载地址:...
根据用户反馈新增和完善的功能还有很多,诸如:支持百度编辑器ueditor、用户模型、增加首页调用pv总量和访问者总量等,我们期待更多的用户能提出宝贵的建议,jeecms将根据大家的建议一一完善。 jeecms X1.0.1 ...
本教程主要对JEECMS安装步骤以及在JEECMS安装过程中常见的问题进行了详细的介绍与解答。
一、安装运行环境(JDK7+TOMCAT7+MYSQL5及以上,具体安装过程请参考本下载包中的相关说明文档); 二、将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下(例如:D:\Tomcat7\webapps\),启动tomcat...
jeecms 标签使用说明 jeecms 标签使用说明 jeecms 标签使用说明
五、面向未来的过渡,JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版本,具有更大的灵活性和稳定性;-一、系统内核完全开源,为用户提供透明的管理平台,为java初学者提供良好的学习平台; 二、核心模板...
摘要:JSP源码,CMS系统,JeeCMS jeecms v2012版是一款集新闻管理、图库管理、视频管理、下载系统、作品管理、产品发布及留言板于一体的综合性CMS系统。 jeecms v2012版新增功能如下: 1、新增统计功能 1.1...
jeecms完整全功能版——源代码,压缩包3,去掉后最gz,配合压缩包1解压。
JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频...doc/jeecms模板置标使用手册.doc
JEECMS后台地址修改:JEECMS修改后台地址比较麻烦,按照文档上的步骤操作可以进行修改
感谢您使用JEECMS,系统使用过程中如遇到问题,请到JEECMS的官方网站http://www.jeecms.com 查看相关资料,或者加入JEECMS官方论坛(http://bbs.jeecms.com)发帖和大家一起交流,我们的技术人员和众多会员一起与您...
jeecms 数据库表结构
jeecms oracle 官方版本
就是jeecms5.0的数据库,直接放到mysql中执行就行了。很简单
jeecms 数据库说明,此文档详细解释jeecms数据库的设计
Jeecms标签使用手册,内容非常详细。
jeecms数据结构powerdesigner模型
jeecms 源码包