e3mall商城的归纳总结1之项目的架构
首先来谈谈e3mall商城,e3mall商城是黑马推出一个学习的项目,前身是淘淘商城.两个用的技术差不多.,但由于后期加了一些新技术,更名为e3mall商城.本商城为分布式商城,主要用到的技术使maven、ssm框架、redis缓存,redis实现单点登录、zookeeper、dubbo、solr、activemq、nginx、freemarker等技术。
一、谈谈项目的架构
该项目由于是一个商城,因此需要考虑到很多因素,比如项目的抗压能力等因素,因此该项目使用了分布式架构,分布式架构在这几年基本上很流行了。所以现在又出现了Spring Boot、Spring Clound 等框架出现。因为该项目很大,复杂度很高,属于一个经典的项目。因此该项目使用了ssm框架+maven管理。
maven管理该项目,该项目包含一个parent(pom),用于管理该项目的jar包版本号。然后parent文件下面再创建每一个模块的maven文件,每一个模块包含两大类文件,一类是使用了聚合工程(pom),里面包含Dao(jar)、pojo(jar)、interface(jar)和service(war)。然后另一个是Web模块(war),Web模块通过dubbo、zookeeper技术调用service模块的服务(利用interface层)。
(0)父亲
(1)儿子
(2)孙子
e3-parent:父工程,打包方式pom,管理jar包的版本号。(0)
— | 项目中所有工程都应该继承父工程。
—— |–e3-common:通用的工具类通用的pojo。打包方式jar(1)
—— |–e3-manager:服务层工程。聚合工程。Pom工程(1)
—— ——|–e3-manager-dao:打包方式jar(2)
—— ——|–e3-manager-pojo:打包方式jar(2)
—— ——|–e3-manager-interface:打包方式jar(2)
—— ——|–e3-manager-service:打包方式:jar(2)
—— |–e3-manager-web:表现层工程。打包方式war(1)
然后通过maven的依赖传递来把所有的maven都联系在一起。
web中依赖interface(通过接口调用)
service依赖interface(因为要实现interface的接口,因此也需要依赖interface)
service依赖dao(因为service调用dao层查询数据库)
interface调用pojo(因为interface中需要用到pojo,比如public updateUser(User user);)
同时我也画了图方便大家查看.

二、dao层
dao层是操作数据库的一层,由于使用的是ssm框架,因此这里使用mybatis的逆向工程,然后把mapper包中的文件复制到dao层中。然后配置pom文件,引入jar包,比如mysql、druid以及mybatis等的jar包。同时也需要依赖注入pojo。否则mapper接口会报错。注意,为了避免运行后xml文件漏掉,需要在pom最后配置包含xml文件。
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
三、pojo层
pojo层也是通过mybatis的逆向工程生成得到的,同理。
四、interface层
interface配置主要在pom文件中引入pojo的jar包
五、service层(* )
service层是一个war工程。因此它的配置比较繁琐,除了pom文件中引入jar包(Spring interface、dao、dubbo。zookerper、activemq、redis等),还需要对spring进行配置,存放在resource中(把配置文件分开,分为dao、service和trans),还有web.xml的配置。让工程运行后自动加载Spring容器。因配置为ssm的简单配置。故不详细说。
六、web层( *)
web层主要是controller层,用来拦截前端的请求,然后拦截到方法中再进行下一步详细操作。配置也是简单的ssm配置(扫描包、静态文件放行、)web.xml(springmvc前端控制器,解决post乱码)。故不再叙述。
基本上该项目的架构大概就是这样,如果还有其他的遗漏的,欢迎评论区留言,小锋会尽快更新第二节
e3mall商城的归纳总结1之项目的架构的更多相关文章
- e3mall商城的归纳总结9之activemq整合spring、redis的缓存
敬给读者 本节主要给大家说一下activemq整合spring,该如何进行配置,上一节我们说了activemq的搭建和测试(单独测试),想看的可以点击时空隧道前去查看.讲完了之后我们还说一说在项目中使 ...
- e3mall商城的归纳总结10之freemarker的使用和sso单点登录系统的简介
敬给读者的话 本节主要讲解freemarker的使用以及sso单点登录系统,两种技术都是比较先进的技术,freemarker是一个模板,主要生成一个静态静态,能更快的响应给用户,提高用户体验. 而ss ...
- e3mall商城的归纳总结6之redis
一.说在前面的话 前面几节我们主要对该项目的后端进行了增删改查,但是所有的数据都是存放在数据库中,这样的话数据库的压力显而易见是很大的,因此本节学习nosql的缓存,也就是redis的使用,在使用之前 ...
- e3mall商城的归纳总结4之图片服务器以及文本编辑器
一.图片服务器 --1.认识图片服务器 大家可能都知道在分布式架构中使用图片上传可能会导致文件存放在某一个项目,而我们的项目基本上都采用集群的方式 ,因此这样会导致图片的问题比较难以存放,在这里我们有 ...
- e3mall商城的归纳总结2之认识dubbo、zookeeper
由于本项目用的是soa架构,因此必须需要两个系统之间进行通信,目前的解决办法有三种(本人认为) Webservice:效率不高基于soap协议.项目中不推荐使用. 使用restful形式的服务:htt ...
- e3mall商城的归纳总结7之solr搭建和应用
敬给读者的话 本文主要应用的技术是solr技术的搭建和应用,本文小编尽量写的更详细一些,让读者在不考虑项目的情况下也能正常完成solr的搭建,说完搭建之后,再说明运行solrj在项目中如何应用solr ...
- e3mall商城的归纳总结3之后台商品节点、认识nginx
一 后台商品节点 大家都知道后台创建商品的时候需要选择商品的分类,而这个商品的分类就就像一棵树一样,一层包含一层又包含一层.因此这里用的框架是easyUiTree.该分类前端使用的是异步加载模式(指 ...
- e3mall商城的归纳总结8之solr集群、activemq的搭建和使用
由于本节内容比较分散,因此专门为这两个技术进行开展了帖子. solr集群的搭建 solr集群solrJ的测试 activemq的搭建 activemq的使用 引入activemq.jar包 我们先来说 ...
- e3mall商城的归纳总结5之修改商品分类、e3mall—content的搭建
说在前面的话 本节基本上没有用到新的知识点.主要还是对数据库的增删改查以及创建了一个新的内容模块. 新增商品分类 由于easyUI的Tree需要三个字段(Id.state.text), [{ &quo ...
随机推荐
- P5488 差分与前缀和 NTT Lucas定理 多项式
LINK:差分与前缀和 这道题和loj的一个人的高三楼相似. 也略有不同 先考虑前缀和:设G(x)为原式的普通型生成函数 \(F(x)=1+x+x^2+...\) 那么其实求的是 \(G(x)*(F( ...
- CPU监控 线段树裸题
LINK:bzoj3064 此题甚好码了20min停下来思考的时候才发现不对的地方有点坑... 还真不好写来着 可这的确是线段树的裸题...我觉得我写应该没有什么大问题 不过思路非常的紊乱 如果是自己 ...
- mysql8.0以上版本修改密码问题记录
参考链接: https://blog.csdn.net/qq_27820551/article/details/101488430 https://blog.csdn.net/mukouping82/ ...
- electron开发 - mac关闭和隐藏窗口
针对mac平台的app let willQuitApp = false; // 控制退出方式 mainWindow.on('close', (e) => { if (willQuitApp) { ...
- 【原创】xenomai与VxWorks实时性对比(Jitter对比)
版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ (下面数据,仅供个人参考) 可能大部分人一直好奇Vx ...
- squid正向代理访问外网
目录 一.前言 二.Squid安装 三.客户端设置 四.验证 五.Python请求 六.写在最后 一.前言 1)我们可能会碰到这样的需求,客户端Client-1需要访问Server-1,但由于各种各样 ...
- 7月13日考试 题解(DFS序+期望+线段树优化建图)
T1 sign 题目大意:给出一棵 N 个节点的树,求所有起点为叶节点的有向路径,其 上每一条边权值和的和.N<=10000 水题.考试的时候毒瘤出题人(学长orz)把读入顺序改了一下,于是很多 ...
- 异步文件通道Java NIO你需要了解多少,来看看这篇文章
在Java 7,AsynchronousFileChannel 被添加到了Java NIO中.使用AsynchronousFileChannel可以实现异步地读取和写入文件数据. 创建一个Asynch ...
- Unity 入门
- 《Java核心技术(卷1)》笔记:第12章 并发
线程 (P 552)多进程和多线程的本质区别:每一个进程都拥有自己的一整套变量,而线程共享数据 (P 555)线程具有6种状态: New(新建):使用new操作符创建线程时 Runnable(可运行) ...