ssm学习之ssm框架详解
此文章转载:https://blog.csdn.net/khxu666/article/details/79913151
Java Web常见的三层结构
- 表现层:也就是Web层,常见的框架有Spring MVC、Struts2 ,并包括用于展示的界面,如JSP界面;
- 业务层:Service层,专注于业务逻辑的实现;
- 持久层:也叫Dao层,常见的框架是Hibernate、MyBatis。负责与数据库的交互,封装数据库的访问细节;从数据库表中读取加载数据并实例化领域对象(Domian Object)也就是从数据库中读取数据,或者返过来将领域对象实例化到数据库中,也就是将数据写入到数据库中。
当服务器接受到来时浏览器的请求后,web层首先开始工作,根据不同的请求创建相应的servlet对请求进行处理转发,业务层在收到来自web层的信息之后,调用持久层,持久层访问数据库后得到返回结果,经过业务层将返回结果填充到显示界面中(JSP中),web层将Jsp界面作为浏览器请求的响应结果返回到浏览器。
三层结构在SSM框架中的体现
在用Java开发互联网应用时,SSM框架(Spring + Spring MVC + MyBatis)成为了越来越主流的选择。在轻量级的开发中,常对Web应用分成以下几层:
- POJO层: 由一组POJO组成,是对系统各种对象的抽象表达。
- DAO层(mapper): 负责数据库的访问,增、删、改、查等,在MyBatis框架中也常被定义为Mapper层。
- Service层:由业务逻辑对象组成,是不同系统的业务逻辑的具体实现。
- Controller层:由控制器组成,对来自浏览器的用户请求进行拦截,并调用Service层的响应的业务逻辑组件处理用户请求,并转发返回结果到View层。
- View层:由JSP界面,PDF文档等组件组成,用于显示系统对用户请求的处理结果
其中SSM框架经常把dao包命名为mapper包,并将mybatis框架的xxxMapper.java和xxxMapper.xml文件放到此包中
Java 代码源文件中几个包的作用
包名 | 名称 | 作用 |
DAO | 数据访问层(接口) | 封装对数据库的操作,与数据操作有关的都放在这里 |
DTO | 数据传输层 | 用于 service 层与 web 层之间传输,是Entity的一部分或组合 |
Entity | 实体类 | 一般与数据库的表相对应,封装 dao 层取出来的数据为一个对象 |
Service | 业务逻辑(接口) | 写我们的业务逻辑 |
Service-Impl | 业务逻辑具体实现 | 实现我们业务接口,一般事务控制是写在这里 |
Controller | MVC控制器 | Spring MVC 就是在这里发挥作用的 |
Mapper | 数据库具体操作 | 包含 xxxMapper.xml(和xxxMapper.java 二者互相对应 |
DAO: 里面可以是数据库操作,也可以是文件读写操作,甚至是redis缓存操作。也有人叫做数据持久层。因为Mybatis可以直接在配置文件中实现接口的每个方法,所以不需要DAOImpl。
DTO:刚学框架的人可能不明白这个有什么用,其实就是用于service层与web层之间传输,为什么不直接用entity(pojo)?其实在实际开发中发现,很多时间一个entity并不能满足我们的业务需求,可能呈现给用户的信息十分之多;或者一个 Entity 包含的信息过多,我们需要的信息仅仅是Entity的一部分,为了减少网络传输,这时候就有了dto。 一般我们使用DTO类来继承entity实体类,在DTO类里放一些业务字段,并提供get、set方法。当我们在业务逻辑层或者交互层用到一些数据库中不存在的字段时,我们就需要在DTO类里放这些字段,这些字段的意义就相当于一些经处理过的数据库字段,实质意义就是方便数据交互,提高效率。
Entity:一般与数据库的表相对应,封装dao层取出来的数据为一个对象,也就是我们常说的pojo,一般只在dao层与service层之间传输
可选的额外包:
Exception:自定义异常。
Utils,即utility,工具辅助层,一组通用的代码集合,比如处理多语言功能,网站非法信息过滤等等功能的代码集;
resource:存放后端配置文件
配置文件 | 名称 | 内容 |
spring-dao.xml | spring数据连接配置 | 配置数据库连接池、sqlSessionFactory对象,扫描DAO接口 |
spring-service.xml | spring 服务配置 | 扫描service包下注解、配置事务管理器、基于注解的事务 |
spring-mvc.xml | spring MVC 配置 | 开启框架注解模式、处理静态资源、配置jsp、扫描Controller |
jdbc.properties | 数据库连接参数 | 配置 JDBC、数据库url、用户名、密码等 |
mybatis-config.xml | mybatis 配置文件 | 开启自增主键、使用列别名、驼峰转换 |
log4j.properties | web 日志输出参数 | web 日志输出参数 |
applicationContext.xml | Spring与mybatis整合配置 | 配置数据库连接池、sqlSessionFactory对象,扫描DAO接口 |
webapp:前端页面与配置文件
存放jsp、css等静态文件,web.xml 配置文件主要包含:
配置 Spring 需要加载的配置文件、启用 disapatcher 转发处理所有的请求、指定编码格式
关于几个包之间的关系
controller 包是 Spring MVC 的主要文件,其中对来自浏览器的各种请求进行转发和处理。在 controller 中会内置各种 Service 包中的对象,当接收到新的请求的时候,解析 url ,根据注解调用相应的服务来完成请求。
entity 包常常与数据库中的表一一对应,dao 包中定义了数据库的基本操作,并在 mapper 包中的 xml 配置文件中完成数据操作的具体实现(也就是增、删、改、查)。Mybatis 可以实现 dao 与 .xml 的自动匹配,这时候就需要把 xxxMapper.xml 和 xxxMapper.java 放在同一个包内。
在 Service 包中定义了各种服务的接口,然后在 Service-Impl 包中对接口进行实现,在实现接口的时候会内置一个 DAO 包中的对象(因为 web 服务的实现肯定是涉及到数据访问的,而数据访问被抽象成了 DAO 包中的对象,所以服务的实现必须借助 DAO 包),然后我们借助 DAO 中的对象所实现的各种数据访问处理方法来实现具体的服务。
SSM框架中各框架的作用
- MyBatis:持久层框架,负责数据库访问。
- Spring MVC:表现层框架,把模型、视图、控制器分离,组合成一个灵活的系统。
- Spring: 整合项目的所有框架,管理各种Java Bean(mapper、service、controller),事务控制。
转载于:https://www.cnblogs.com/lindaiyu/p/10928250.html
ssm学习之ssm框架详解相关推荐
- CVPR 2020 | 元学习人脸识别框架详解
2020-05-15 23:07:48 本文介绍的是CVPR2020 oral论文<Learning Meta FaceRecognition in Unseen Domains(MFG[1]) ...
- cvpr2020 人脸检测与识别_CVPR 2020 | 元学习人脸识别框架详解
本文介绍的是CVPR2020 oral论文<Learning Meta FaceRecognition in Unseen Domains(MFG[1])>,作者来自明略科技集团明略科学院 ...
- springboot2整合mysql5_SpringBoot2整合SSM框架详解
SpringBoot2整合SSM框架详解 发布时间:2019-01-15 21:33, 浏览次数:1218 , 标签: SpringBoot SSM <>开发环境 * 开发工具:Eclip ...
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- (转) shiro权限框架详解06-shiro与web项目整合(上)
http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...
- ELK学习笔记之Logstash详解
0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...
- java编译器源码详解_已更新至第8章 | LLVM 编译框架详解
LLVM是什么? 我又不做编译器研究,干嘛要管它? 这是一些朋友想要对LLVM发起的提问,那么今天我们就来看看那款据说很酷炫的编译器--LLVM. LLVM是什么? LLVM是一个自由软件项目,它是一 ...
- Qt图形视图框架详解-安晓辉-专题视频课程
Qt图形视图框架详解-12227人已学习 课程介绍 介绍Qt中的Graphics View Framework,涉及View.Scene.Item的关系,如何自定义QGraphicsI ...
- 双目视觉集合框架详解
双目视觉几何框架详解 一.图像坐标:我想和世界坐标谈谈(A) 玉米竭力用轻松具体的描述来讲述双目三维重建中的一些数学问题.希望这样的方式让大家以一个轻松的心态阅读玉米的<计算机视觉学习笔记> ...
- Android 动画框架详解
Android 动画框架详解 基本原理 朱 韦伟, 软件工程师, IBM 李 浩, 软件工程师, 爱格码 简介: Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果.A ...
最新文章
- 【牛腩新闻发布系统】开发前的准备01
- python语言基础汇总
- VS2013中使用git发布解决方案master分支的时候出现错误
- C#托管代码是什么?非托管代码是什么?
- Java synchronized 与 lock (Reetrantlock)锁性能比较
- Python 字典初始化dict()和{}
- Vue中怎样获取json文件中的数据
- 【slighttpd】基于lighttpd架构的Server项目实战(3)—MasterWorker模式
- java压缩成.tar_java压缩tar.gz | 学步园
- C++ Map简单介绍 ,比如添加元素、删除元素和打印元素
- NIO中Selector分析
- 你需要知道的基础算法知识——STL和基础数据结构(五)
- Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
- MySQL千万级访问量架构(转)
- ThreadLocal类的实现用法
- CW3 Clarifications
- ORACLE忘记用户名密码
- ROS中记录数据与回放
- html中背景图片等比例缩放,CSS实现响应式全屏背景图+用CSS3实现全屏按比例缩放背景图片...
- 计算机类毕业设计评语导师评语,本科生毕业设计导师评语参考
热门文章
- python reduce函数 day16
- struts2 常用标签的一般用法
- silverlight textblock 自动换行
- malloc,free,new,delete解析(原)
- iptables 添加,删除,查看,修改
- 怎么用vnc访问自己电脑,并且同时又是同一个会话?
- 10.21 crond定时任务练习
- python心理学实验程序_psychopy coder模式编写心理试验程序 字符程序和记录反应时...
- python 数据分析班_Python数据分析班
- kali如何制作php字典_Kali Linux安装搜狗输入法