`
aben328
  • 浏览: 1460645 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

jeecms加载首页的过程 收藏

阅读更多

 jeecms加载首页的过程 收藏

<script type="text/javascript"></script><script type="text/javascript"></script>

< src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" type="text/javascript"> 刚开始研究jeecms的时候很纳闷,找不到首页的加载页面。。经过一番仔细研究,发现这个加载还是经过了很多曲折的过程的。整个程序的架构师ssh+freemarker模板构成的,所以先要熟悉freemarker模板技术。

先看web.xml文件,其中欢迎页面有:

 

接着再看jeecms/core/struts-front.xml配置文件,发现有个action的通用配置:

  1. <action name="**" class="core.dynamicSystemAct">  
  2.             <result type="chain">  
  3.                 <param name="namespace">${namespace}</param>  
  4.                 <param name="actionName">${actionName}</param>  
  5.             </result>  
  6.             <interceptor-ref name="exception"/>  
  7.             <interceptor-ref name="domain"/>  
  8.             <interceptor-ref name="cookieIdentity"/>  
  9.             <interceptor-ref name="url"/>  
  10.         </action>       

 

struts收到请求以后,将请求转发到core.dynamicSystemAct这个对象,注意这个这个class并不是真正的类,是类的别名,由spring通过标注@Controller进行绑定,web应用上下文可以通过classpath自动扫描到这个类。

 

在这个action执行之前,先要执行好几个拦截器。其他struts和webwork自带的拦截器不必说,主要说一下在程序里面自定义的几个比较重要的拦截器(定义在jeecms/src/struts-default.xml文件中)。

DomainNameInterceptor

UrlInterceptor

CookieIdentityInterceptor

然后执行action自己的execute方法,产生2个参数:

namespace = "/jeedynamic/" + sys;

actionName = "Page";

这2个参数决定了程序的走向,组成转发路径:/jeedynamic/jeecms/Page.do,然后通过查找下面的配置信息

  1. <package name="cms.front.page" namespace="/jeedynamic/jeecms" extends="empty-default">           
  2.     <action name="Page" class="cms.cmsPageAct">  
  3.         <result>${tplPath}</result>  
  4.         <result name="pageCache" type="pageCache">${tplPath}</result>  
  5.         <interceptor-ref name="exception"/>  
  6.         <interceptor-ref name="chain"/>  
  7.     </action>  
  8. </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:ChnlListCommentList等。里面使用struts2标签@s.action来请求数据,整个的index.html页面就是这么加载出来的。通过freemarker引擎来解析数据模型,最后显示到前台,展现给客户。

  1. @Controller("core.dynamicSystemAct")   
  2. public class DynamicSystemAct   
分享到:
评论

相关推荐

    JEECMS2.0版本源码阅读

    JEECMS 2.0 版本的安装和配置过程相对复杂,需要按照以下步骤进行: 1. 下载和解压缩 JEECMS 2.0 版本的源码 2. 配置数据库连接和 Hibernate 配置 3. 配置 Struts2 和 Spring 框架 4. 配置 jcaptcha 验证码识别 5. ...

    JeeCMS 2012 源码包

    摘要:JSP源码,CMS系统,JeeCMS  jeecms v2012版是一款集新闻管理、图库管理、视频管理、下载系统、作品管理、产品发布及留言板于一体的综合性CMS系统。  jeecms v2012版新增功能如下:  1、新增统计功能  1.1...

    jeecms9.2-adminVue

    - **性能优化**:9.2版本对系统的性能进行了深度优化,提高了页面加载速度和响应时间。 - **增强的权限管理**:提供了更细致的角色权限分配,支持按功能模块进行权限控制。 - **移动适配**:适应移动设备的浏览...

    jeecms v8.1 源码

    JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频...doc/jeecms模板置标使用手册.doc

    jeecms9.2源代码文件

    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 下载地址:...

    jeecms个人标签文档

    比如,如何优化标签的使用以提高页面加载速度,如何自定义标签以扩展功能,如何配置缓存策略以提升系统性能,都是实践中值得分享和学习的经验。 6. **文档资源** 提到的"jeecms部分文档"可能包含了Jeecms的使用...

    jeecms X1.0.1 正式版 源码包

     根据用户反馈新增和完善的功能还有很多,诸如:支持百度编辑器ueditor、用户模型、增加首页调用pv总量和访问者总量等,我们期待更多的用户能提出宝贵的建议,jeecms将根据大家的建议一一完善。 jeecms X1.0.1 ...

    jeecms文档

    同时,性能优化也是Jeecms二次开发中的重要考虑因素,包括页面加载速度、服务器资源占用等。 综上所述,Jeecms的二次开发涉及到的内容广泛,涵盖Java编程、MVC架构、模板引擎使用、数据库管理、安全防护以及测试...

    JEECMS

    **JEECMS详解** JEECMS,全称为Java Enterprise Edition Content Management System,是一款基于Java EE技术的开源内容管理系统。作为企业级的CMS解决方案,它具备高效、安全、易用、可扩展性强等特性,广泛应用于...

    jeecms安装包

    在Jeecms的安装过程中,用户首先需要对所提供的压缩包进行解压。压缩包内有一个名为"Readme-说明.htm"的文件,这是非常关键的,因为它通常包含了安装指南、系统需求、配置步骤以及常见问题解答等重要信息。用户应...

    jeecms二次开发必备

    在Jeecms的二次开发过程中,理解这些基础知识至关重要。通过深入学习Jeecms的架构和包结构,开发者可以更高效地进行功能扩展,实现定制化的网站功能。无论是对文章模块的增删改查,还是对模板的个性化设计,或者是对...

    jeecms最全的api

    在实际使用Jeecms的过程中,掌握API的使用是至关重要的。例如,通过API,开发者可以创建、更新、删除内容,管理用户权限,进行模板渲染等。Jeecms的API设计通常遵循RESTful原则,使得接口清晰易懂,方便前后端分离的...

    jeecms 标签 使用说明

    Jeecms是一款基于Java技术开发的内容管理系统,以其灵活性和易用性受到许多开发者的青睐。在Jeecms中,标签是用于动态展示内容的关键元素,它们使得开发者无需编写复杂的Java代码就能实现页面的动态渲染。下面我们将...

    jeecms3.2.2版本源码包

    6. **插件和扩展**:Jeecms可能有插件机制,允许开发者通过编写插件来扩展系统功能,这在源码中会有相应的接口和加载机制。 7. **数据库设计**:源码包中可能包含数据库脚本,用于创建Jeecms运行所需的表结构。分析...

    jeecms 3.0.2数据字典

    在学习和使用 Jeecms 的过程中,理解其数据字典是非常关键的一步,因为数据字典可以帮助我们更好地了解系统中的数据结构和业务逻辑。 数据字典是数据库设计的重要组成部分,它记录了系统中所有数据实体、字段、数据...

    jeecms笔记(阅读源码)

    本笔记将聚焦于Jeecms的安装过程,并探索其源码中的关键部分。 首先,Jeecms的安装过程在源码中通过一系列的HTTP请求和服务器端处理来完成。当访问`install/index.html`时,页面会通过`&lt;meta&gt;`标签自动重定向到安装...

    jeecms9.2安装文件

    一、安装运行环境(JDK7+TOMCAT7+MYSQL5及以上,具体安装过程请参考本下载包中的相关说明文档); 二、将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下(例如:D:\Tomcat7\webapps\),启动tomcat...

    jeecms freemarker快乐到家分析

    安装Jeecms的过程如下: 1. 在MySQL中创建用户,例如`uchangda`,并赋予所有权限。 2. 将Jeecms的ROOT文件复制到Tomcat的`webapps`目录下。 3. 访问`localhost:8080`开始安装流程。 4. 按照网页提示输入数据库用户和...

Global site tag (gtag.js) - Google Analytics