柒晓白的gravatar头像
柒晓白 2018-02-12 18:32:49
SSM框架下web项目运行流程

SSM框架下web项目的运行流程

1. 前言

笔者在做java web项目时,使用SSM+maven+easyui/bootstarp技术,为了强化学习,顺便先梳理一下SSM框架下每层的作用及它们之间的关系。在这里记录一下,希望有疑惑的人能找到答案。

2.SSM中各层作用及关系

1.持久层:DAO层(mapper层)(属于mybatis模块)

  • DAO层:主要负责与数据库进行交互设计,用来处理数据的持久化工作。

  • DAO层的设计首先是设计DAO的接口,也就是项目中你看到的Dao包。

  • 然后在Spring的xml配置文件中定义此接口的实现类,就可在其他模块中调用此接口来进行数据业务的处理,而不用关心接口的具体实现类是哪个类,这里往往用到的就是反射机制,DAO层的jdbc.properties数据源配置,以及有 关数据库连接的参数都在Spring的配置文件中进行配置。

  • ps:(有的项目里面Dao层,写成mapper,当成一个意思理解。)

2.业务层:Service层(属于spring模块)

  • Service层:主要负责业务模块的逻辑应用设计。也就是项目中你看到的Service包。

  • Service层的设计首先是设计接口,再设计其实现的类。也就是项目中你看到的service+impl包。

  • 接着再在Spring的xml配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。

  • 最后通过调用DAO层已定义的接口,去实现Service具体的实现类。

  • ps:(Service层的业务实现,具体要调用到已定义的DAO层的接口.)

3.控制层/表现层:Controller层(Handler层) (属于springMVC模块)

  • Controller层:主要负责具体的业务模块流程控制,也就是你看到的controller包。

  • Controller层通过要调用Service层的接口来控制业务流程,控制的配置也同样是在Spring的xml配置文件里面,针对具体的业务流程,会有不同的控制器。

4.View层 (属于springMVC模块)

  • 负责前台jsp页面的展示,此层需要与Controller层结合起来开发。

  • Jsp发送请求,controller接收请求,处理,返回,jsp回显数据。

3.三层架构运行流程

SSM框架下web项目运行流程

4.各层之间的联系

  • DAO层,Service层这两个层次可以单独开发,互相的耦合度很低。

  • Controller,View层耦合度比较高,因而要结合在一起开发。也可以听当做两层来开发,这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,项目会显得清晰简单。

  • 值得注意的是,Service逻辑层设计: 
    • Service层是建立在DAO层之上的,在Controller层之下。因而Service层应该既调用DAO层的接口,又提供接口给Controller层的类来进行调用,它处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。 
      • SSM框架下web项目运行流程

4.SSM框架实现一个web程序主要使用到如下三个技术:

  1. Spring:用到注解和自动装配,就是Spring的两个精髓IOC(反向控制)和 AOP(面向切面编程)。

  2. SpringMVC:用到了MVC模型,将流程控制代码放到Controller层处理,将业务逻辑代码放到Service层处理。

  3. Mybatis:用到了与数据库打交道的层面,dao(mapper)层,放在所有的逻辑之后,处理与数据库的CRUD相关的操作。

比如你开发项目的时候,需要完成一个功能模块:

  1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

  2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。

  3. 写Mapper.java/Dao.java,将Mapper.xml中的操作按照id映射成Java函数。实际上就是Dao接口,二者选一即可。

  4. 写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。

  5. 写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。

  6. 写JSP页面调用,请求哪些参数,需要获取什么数据。

好了,到这里就结束了,基本上,SSM框架下web项目运行流程,各个层次之间的作用,代码定义和实现的东西基本上都说明了。

You got a dream, you gotta protect it. 
如果你有梦想的话,就要去捍卫它 。 ——《当幸福来敲门》


打赏

已有4人打赏

sinuodeng123的gravatar头像 ice163的gravatar头像 richelieu42的gravatar头像 最代码官方的gravatar头像
最近浏览
z-h-r- 2022年3月25日
暂无贡献等级
luyc99128 2021年12月6日
暂无贡献等级
gengen 2021年12月1日
暂无贡献等级
18200201713  LV2 2021年10月25日
久相伴ii 2021年9月29日
暂无贡献等级
李叨叨  LV3 2021年7月2日
hahahaha9999ngt  LV1 2021年6月22日
207207  LV1 2021年6月12日
normcore  LV1 2021年5月13日
adminn123456  LV1 2021年5月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友