`
davice_li
  • 浏览: 93227 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jeecms加载首页的过程

阅读更多

原创  jeecms加载首页的过程 收藏

< 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自动扫描到这个类。

  1. @Controller("core.dynamicSystemAct")  
  2. 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,然后通过查找下面的配置信息

  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引擎来解析数据模型,最后显示到前台,展现给客户

分享到:
评论

相关推荐

    jeecms文档

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

    ueditor for jeecms

    UEditor的引入,无疑提升了Jeecms在内容创作方面的专业度,使得编辑过程更加直观和高效。 在使用"ueditor for jeecms"时,首先需要下载压缩包,并从中解压出UEditor的相关文件。这个压缩包中的唯一文件名"ueditor...

    jeecms最新指导文档

    此外,文档可能还会介绍如何进行页面元素的动态加载和交互效果的实现,以提升网站的吸引力和互动性。 3. **aa.txt** 这个文件名看起来像是一个临时或备忘性质的文档,可能是开发过程中的笔记、问题记录或者待办...

    jeecms的oracle数据库脚本及初始化数据

    3. 执行表结构脚本:加载`oracle10g-jeecms-table.sql`,按照脚本中的顺序逐条执行DDL语句,创建Jeecms所需的所有表。 4. 初始化数据:接着执行`oracle_jeecms-initdata.sql`,将初始数据导入到已经创建好的表中。 ...

    JEECMS开发总结1

    在Jeecms的开发过程中,主要涉及以下几个核心模块: 1. **内容管理** - 内容管理是Jeecms的核心功能,允许管理员添加、编辑和删除页面内容以及专题。内容可以通过不同模板进行展示,以满足不同的页面布局需求。 -...

    jeecms introduction

    CMS的主要目的是简化内容的创建过程,使得非技术人员也能轻松管理和更新网站内容。CMS通常具有以下特点: - **基于模板的设计**:用户可以通过预设的模板来快速构建网站,无需编写复杂的代码。 - **快速开发**:相比...

    Jeecms2012版标签学习手册

    以上四个标签是Jeecms2012版中常用的几个标签,它们不仅简化了开发过程中的代码编写工作,也极大地提升了网站的功能性和用户体验。合理运用这些标签能够帮助开发者构建出更加高效、易维护的Web应用程序。

    JEECMS系统标签使用概述

    因此,首页模板需要使用`[@cms.ArtiListchnlId=.../`这样的标签来动态加载数据。 2. **栏目页**:栏目页用于展示某一类别下的文章列表,可以通过`[@cms.ArtiListchnlId=.../`等标签来实现。同时,为了增强用户体验...

    Jeecms开源内容管理系统学习

    2. **手把手教你用JEECMS建站**:分为三个部分详细介绍建站的全过程。 3. **轻松给网站配置留言板**:通过Jeecms内置的功能实现留言板功能。 4. **JEECMS网站管理系统栏目模型管理**:介绍如何管理和编辑网站的栏目...

    jeecms 学习Java JSP学习 很不错哦

    在Java和JSP的学习过程中,Jeecms是一个非常实用的实践平台,可以帮助开发者深入理解这两种技术的结合应用。 Java是面向对象的编程语言,以其跨平台的特性而广受欢迎。学习Java,你需要掌握其基础语法、类与对象、...

    jeecms微信小程序源代码

    在实际开发过程中,Jeecms微信小程序可能会包含以下几个关键技术点: 1. **接口设计**:需要设计合理的RESTful API,以便于小程序调用,这些接口通常包括登录验证、新闻列表获取、新闻详情查询、评论发表等功能。 ...

    自定义的上下拉刷新View

    同时,为了提供良好的用户体验,你需要在刷新过程中显示一个指示器,比如旋转的菊花图标,告诉用户数据正在加载。 自定义的PullToRefreshView相比现成的库,如SwipeRefreshLayout,最大的优势在于灵活性。开发者...

    cms后台管理

    三 首页的加载过程 在浏览器中输入http://localhost:8080/jeecms,回车 首先进入配置文件web.xml, &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;!----&gt; &lt;param-value&gt; /WEB-INF/...

    jeecmsv5.1.zip

    11. **性能优化**:Jeecms可能会包含缓存机制,以提高页面加载速度,减少服务器压力。 12. **API接口**:Jeecms可能提供API接口,允许与其他系统集成,如CRM、ERP等,实现数据的同步。 安装Jeecms V5.1时,用户...

    HibernateSynchronizer(2.3.1 & 3.1.9)

    1. **新特性**:3.1.9版本在2.3.1的基础上增加了更多的自定义选项,如生成的实体类是否启用懒加载、是否生成equals()和hashCode()方法等。 2. **性能优化**:针对大量表的同步,3.1.9版本进行了性能提升,处理速度...

    上品折扣网站静态化方案1

    - 静态文件策略:首页和频道页定时生成,详情页实时生成,商品删除时相应页面需重新生成。 3. **静态文件命名与目录设计**: - 固定目录和静态文件名用于频道页和概览页,定时生成时覆盖旧文件,简化管理。 - ...

    我的人生案例(jsp) 刚步入jsp

    10. **JSP生命周期**:理解JSP页面从加载到销毁的过程,包括编译成Servlet、初始化、服务、销毁等阶段。 通过这个项目,你不仅能学习到JSP的基本知识,还能接触到实际的项目开发流程,提升自己的实战能力。记住,...

Global site tag (gtag.js) - Google Analytics