最近工作需要内容管理系统,下载了jeecms v5 顺便学习一下它的架构:

采用框架为:Hibernate3.3.2+spring3.05+springMVC+freemarker2.3.16

Hibernate:采用非注解持久化操作对数据访问层(DAO)的实现.

优点:1.支持多个数据库的切换oracle,mysql等支持,

2.支持以及缓存的和二级缓存的使用。

缺点:1.sql语句部分有框架自动生成,不方便性能优化。针对系统性能要求比较高的系统hibernate自动生成实现比较难。

2.不方便维护。

3.针对hibernate的高级使用对开发人员要求很高,学习曲线比较高。

Spring:实现项目中各层的粘合,以及解耦事务处理。

优点:1.通过IOC注入使各组件解耦。

2.使用AOP实现事物的处理。采用注解事物,也深知其使用的优缺点。优点干净简洁易修改,缺点不利于维护,业务与配置混杂。

3.方便和其他第三方框架整合,jar可以按需分配不需要全部导入。

4.框架活跃程度比较高。

5.便于测试,易于维护

缺点:

1.针对部分代码底层采用反射或者代理性能不是太好。

springMVC负责控制层的业务逻辑的处理。

freemarker:负责页面的页面和展示。

系统中模块划分比较明确,分为三部分cms,core,common。

cms根据cms中层的划分和作用划分action,dao,entity,lucene,service,task等。

core主要一些系统管理相关的权限,配置,数据文件,Ftp管理以及用户认证。

common:主要是一些工具的封装使用如:fck,验证码,图片操作,ip追踪,搜索,安全。文件上传等工具雷。

此系统基于整站模板引擎技术,js,Css,图片等资源与模板分离,模板放置在WEB-INF下,因此仅能通过springmvc去调用,安全性非常棒,分离也非常清晰。页面请求使用了伪静态,便于搜索引擎收录。然后就是有一套完善的日志系统,搜索采用了流行的lucene和baoding分词做搭配。此外数据库配有连接池commons-pool,据说性能不是太好。系统中为了防止xss攻击采用过滤器处理用户的操作请求信息,但是处理不够完善。hibernate配有二级缓存与持久化缓存。验证码也使用了现成的组件jcaptcha简单易用,Ajax使用了Json介质,在线编辑器使用的FCK。针对用户的追踪和分析采用的ipseek针对用户来源的分析。通过封装类似spring-security的权限管理,控制用户留言的控制以及用户权限和后台管理制发布新闻的控制审查。针对用户的用户回话的管理采用的缓存管理回话中心,保证了系统的分布式的使用。在图片操作方面采用 jmagick,jar比较小有图片操作瑞士军刀之称。源码的研究还是具有一定的价值的,便于以后开发类似系统总结经验和实践。

jeecms 基本架构研究的更多相关文章

  1. mysql 主从同步出问题,重新修复从库 - web架构研究

    mysql 主从同步出问题,重新修复从库 - web架构研究     mysql 主从同步出问题,重新修复从库    0     昨天由于操作失误,在从库上执行一堆sql之后,导致主从同步错误,并且已 ...

  2. 企业架构研究总结(41)——企业架构与建模之ArchiMate的由来和详述(上)

    终于完成了关于企业架构框架理论的总结,谢谢各位看官的支持,能挺过之前过于理论化的叙述而坚持到现在着实不易,笔者也自愧没有实践经验可以分享,希望日后有兴趣的看官能够不吝赐教.在本系列后面的也是最后一个大 ...

  3. 企业架构研究总结(39)——TOGAF架构能力框架之架构委员会和架构合规性

    3. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要干系人的需求,并且通常还需要对整个架构的审查及维 ...

  4. 企业架构研究总结(38)——TOGAF架构能力框架之架构能力建设和架构治理

    为了确保架构功能在企业中能够被成功地运用,企业需要通过建立适当的组织结构.流程.角色.责任和技能来实现其自身的企业架构能力,而这也正是TOGAF的架构能力框架(Architecture Capabil ...

  5. 企业架构研究总结(36)——TOGAF企业连续体和工具之企业连续体构成及架构划分

    又回头看了之前文章的评论,本人也同样感慨这些文章的确像政治课本般的虚无缥缈,所以对费力看完却觉得无从下手的看官致以诚挚的歉意和理解,因为这个问题也同样困扰着笔者本人,而我能做的也只能是纸上谈兵.之前也 ...

  6. 企业架构研究总结(45)——企业架构与建模之使用ArchiMate进行分析(全系列完)

    4. 使用ArchiMate进行分析 正如前面所说的那样,一个企业整体效率的提升有时并不是通过某一个领域内的优化就能达到的,而且这种忽视全局的做法往往还会造成不必要的浪费.由此可见,一个能够跨越各个领 ...

  7. 企业架构研究总结(44)——企业架构与建模之Archimate视图和视角

    3. ArchiMate的视角与视图 创建.维护一个企业架构是一件非常复杂繁琐的事情,因为这项工作需要面对许多背景.利益各异的干系人,对他们所关注的问题进行解答,并能够在他们之间形成无障碍的沟通流.为 ...

  8. 企业架构研究总结(43)——企业架构与建模之ArchiMate详述(下)

    2.7 关系模型元素 企业架构模型包括了各种概念元素以及他们之间的关系,这其中的概念元素已经在前面几节中进行了阐述,而这些概念元素之间的关系则是本节的叙述重点.虽然ArchiMate中具有种类繁多的概 ...

  9. 企业架构研究总结(42)——企业架构与建模之ArchiMate详述(中)

    2.4 技术层模型元素 技术层模型元素包括了企业在信息基础设施方面(企业中基本的软硬件环境,包括物理设备.系统软件等为信息化提供基本支持的设施)的各种概念元素,以及他们之间的关系.与应用层模型元素相类 ...

随机推荐

  1. [JZOJ2702] 【GDKOI2012模拟02.01】探险

    题目 题目大意 给你一个每条边正反权值不一定相同的无向图,求起点为111点的最小环. 思考历程 一看到这题,就觉得是一个经典模型. 然后思考先前做过最小环的经历,发现没个卵用. 我突然想到,既然这一个 ...

  2. RabbitMQ 五种工作模式

    官网介绍:https://www.rabbitmq.com/getstarted.html 五种工作模式的主要特点 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获 ...

  3. thinkPHP 字段映射功能

    thinkPHP的字段映射功能可以让你在表单中隐藏真正的数据表字段,而不用担心放弃自动创建表单对象的功能,假设我们的User表里面有username和email字段,我们需要映射成另外的字段,定义方式 ...

  4. vue爬坑之input组件

    本篇写给第一次用VUE写输入框组件的朋友们 正常情况我们vue2.0是怎么样取到input框的值的呢? 很简单只需要给input框设置v-model="val" 我们就能从data ...

  5. 使用Native API 创建进程

    使用 Native API 创建进程 最近几个星期一直在研究这个题目.因为关于方面的资料比较多(可以看下面的参考文章),所以开始时以为很快就结束了.谁知道真正动起手来才发现有很多要考虑的地方,不过还好 ...

  6. js时间操作getTime(),ios移动端真机上返回显示NAN

    ios移动端,js时间操作getTime(),getFullYear()等返回显示NaN的解决办法及原因 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间 ...

  7. 工业派-配置Intel神经计算棒二代(NCS2)

    最近两天在工业派ubuntu16.04上配置了Intel神经计算棒二代——Intel Neural Compute Stick,配置过程之艰辛我都不想说了,实在是太折磨人.不过历尽千辛万苦,总算让计算 ...

  8. C++【stack/queue】用法和例子

    Stack的常用基本操作: s.push() // 压栈 s.emplace() // 插入,相当于push(目前掌握的唯一区别是emplace可以自行调用构造函数,push不行) s.empty() ...

  9. VS2017装了西红柿插件之后,启动很多次才能启动成功,进程有很多devenv.exe但是就是无法启动成功

    VS2017装了西红柿插件之后,启动很多次才能启动成功,进程有很多devenv.exe但是就是无法启动成功,这个可能是西红柿插件visual assist的问题 启动vs命令行 输入: devenv ...

  10. LUOGU P1965 转圈游戏 (Noip 2013)

    传送门 解题思路 比较简单的模拟题,转圈一定有一个循环节,而且循环节长度一定小于m,因为循环节是一个%m的剩余系,然后一遍模拟记录下来循环节,快速幂即可. #include<iostream&g ...