SSM概述

2023-11-03

SSM概述

基本概念

SSM = Spring + SpringMVC + MyBatis

Spring

简单来说,就是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。其中IOC可以说是SSM的核心之一。

SpringMVC

分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

MyBatis

消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。它使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects)映射成数据库里的记录。

MVC模式

MVC是一种分层开发的模式,其中:

  • M:Model,业务模型,处理业务
  • V:View,视图,界面展示
  • C:Controller,控制器,处理请求,调用模型和视图

在这里插入图片描述

三层架构

在这里插入图片描述

持久层 / 数据访问层

属于MyBatis模块,也就是Dao层(Mapper层)。主要负责与数据库进行交互设计,用来处理数据的持久化工作,简单来说就是进行CRUD操作。

Dao层设计首先是设计Dao的接口,然后在Spring的xml配置文件中定义此接口的实现类即可,Dao层的jdbc.properties数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

业务逻辑层

属于Spring模块,也就是Service层。主要负责业务模块的逻辑应用设计。

首先是设计Service的接口,再设计其实现的类,最后impl实现类通过调用DAO层已定义的接口,去实现Service的接口类。当然在搭建SSM框架时已在Spring的xml配置文件中配置好其实现的关联。

控制层 & 表现层

属于SpringMVC模块,也就是Controller层(Handler层)和View层。

Controller层主要负责具体的业务模块流程控制,通过要调用Service层的接口来控制业务流程,其配置也同样在Spring的xml配置文件中,针对具体的业务流程会有不同的控制器。

View层则负责前端页面展示,需要和Controller层结合起来开发,即前端页面发送请求,控制层接收请求并处理,最后返回数据到前端。

MVC模式与三层架构

在这里插入图片描述

层级间的联系

为了能更快速的理解SSM框架中各层之前的关系,直接用一个实例来说明。如:前端页面需要展示一个地区列表的模块实现

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSM概述 的相关文章

  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List
  • Java byte[] 与 String 之间的转换

    为什么这个junit测试失败了 import org junit Assert import org junit Test import java io UnsupportedEncodingException public class T
  • 获取TextView的高度

    我有一些文字将被放入TextView 我这样做是使用setText 现在我需要找到文本在文本中占据的行数或高度TextView 我尝试使用getHeight 但它总是返回 0 无论如何 有没有办法获得文本中存在的文本的高度TextView
  • DateTimeFormatter.parseLocalDate 抛出 UnsupportedOperationException

    该API用于解析本地日期 http joda time sourceforge net apidocs org joda time format DateTimeFormatter html parseLocalDate 28java la
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • MongoDB:尝试从 JSON 读取 Long 导致 java.lang.Integer 无法转换为 java.lang.Long

    我有一个代码可以从 MongoDB 读取特定格式的数据 我需要测试一下 为此 我使用要测试的数据创建一个 JSON id ObjectId 57552e32e4b0839ede67e0af serial 574000690 startDat
  • 在java.util中获取错误ArrayList不带参数[重复]

    这个问题在这里已经有答案了 我已经创建了一个类 Student 现在我尝试将我的 Student 对象存储在 ArrayList 中 但在编译 ArrayList 不接受参数时出现错误 我已经检查了我的代码很多次 但找不到问题所在 我的学生
  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • 在Java中使用BufferedWriter写入文件时监视文件大小?

    我正在将一个可能很长的项目列表写入文件 我正在写的项目的长度是可变的 如果生成的文件大小大于10M 则应将其分成多个文件 为了提高性能 我目前使用 BufferedWriter 如下所示 final FileOutputStream fos
  • 使用 CrudRepository 进行自定义查询

    我想使用 CrudRepository 自定义查询 这是我的代码 Repository public interface CustomerRepository extends CrudRepository
  • perl 和 java 正则表达式功能之间有什么区别?

    perl 和 java 在支持哪些正则表达式术语方面有什么区别 这个问题仅涉及正则表达式 并且特别排除了how可以使用正则表达式 即使用正则表达式的可用函数 方法 以及语言之间的语法差异 例如java要求转义反斜杠等 特别令人感兴趣的是 j
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • wsdl 没有服务元素

    我必须使用 WCF Web 服务并获得 WSDL 外部的 因此无法控制 WSDL 在 WSDL 定义中 我没有找到包含服务 端口和地址元素的服务元素 WSDL 中不存在这种情况正常吗 这对于 WCF WSDL 来说很常见吗 我正在尝试使用轴
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • 计算移动的球与移动的线/多边形碰撞的时间(2D)

    我有一个多边形 里面有一个移动的球 如果球撞到边界 它应该反弹回来 My current solution I split the polygon in lines and calculate when the ball hits the
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • spring data jpa 过滤 @OneToMany 中的子项

    我有一个员工测试实体是父实体并且FunGroup信息子实体 这两个实体都是通过employeeId映射 我需要一种方法来过滤掉与搜索条件匹配的子实体 以便结果仅包含父实体和子实体 满足要求 员工测试类 Entity name Employe

随机推荐

  • webrtc中peerconnection_client生成vs工程文件

    下面是将peerconnection client从整个webrtc工程文件中分离出来的过程记录 一 webrtc项目的本地编译 生成Ninja配置文件 gn gen target x64 args is clang false use l
  • Matplotlib绘制动图以及绘制平滑曲线

    文章目录 绘制动图 FuncAnimation 方法 ArtistAnimation 方法 绘制平滑曲线 使用 scipy ndimage gaussian filter1d 高斯核类绘制平滑曲线 使用 scipy interpolate
  • python怎么做多个矩阵_用Python程序添加两个矩阵

    用Python程序添加两个矩阵 在此程序中 您将学习使用嵌套循环和Next列表理解来添加两个矩阵 并显示它们 要理解此示例 您应该了解以下Python编程主题 在Python中 我们可以将矩阵实现为嵌套列表 列表内的列表 我们可以将每个元素
  • openmpi编译安装

    概念原理 OpenMPI是一个免费的 开源的MPI实现 兼容MPI 1和MPI 2标准 OpenMPI由开源社区开发维护 支持大多数类型的HPC平台 并具有很高的性能 功能描述 OpenMPI借助TCP IP网络连接的多台计算机 以此分发数
  • 经典多模态模型

    整点传统多模态学习 下游任务 在讲模型之前 我们先说说 传统多模态任务是下游任务 图文检索 Image Text Retrieval 里面包含图像到文本检索 文本到图像检索 给定一个数据库 搜索到ground truth的图像文本对 因为是
  • NDIS网络数据监控程序NDISMonitor(2)-----驱动与应用的中间层NdisHook

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 本工程是驱动vpcknt的一个封闭层而已 比较简单 一 导出的API接口分析 1 Start 1 加载驱动vpcknt sys vpckn
  • List转换String,String转List的几种方法

    一 List转String的方法 将一个Java集合List转换为String方法比较多 可以使用String join StringBuilder Stream流等方法 下面举几个常用的示例 1 使用String join 方法 impo
  • c51语言的指针分几类,- 第五课 C51变量

    sfr P1 0x90 这里没有使用预定义文件 sbit P1 0 P1 0 而是自己定义特殊寄存器 sbit P1 7 0x90 7 之前我们使用的预定义文件其实就是这个作用 sbit P1 1 0x91 这里分别定义P1端口和P10 P
  • react-router-dom v6的变化

    react router dom v6 原文地址 1 useNavigate替代useHistory 在v6版本useHistory被新hookuseNavigate代替 用法也发生的很大的变化 v5 import useHistory f
  • 如何画出频谱图 matlab

    如何画出频谱图 matlab matlab 代码 绘制出的图片 matlab 代码 fs 100 sample frequency Hz t 0 1 fs 10 1 fs 10 second span time vector x 1 3 s
  • R中prophet包说明文档(一)

    名称 自动预测过程 版本 0 2 1 日期 2017 11 08 描述 实现了一个时间序列的预测过程 基于能够拟合年度 周等周期以及假期等因素的非线性趋势的加法模型 模型要求至少一年以上的周期性历史数据 prophet模型对于缺失值 趋势突
  • PHP实现网站访问量计数器 两种方法

    1 原生 简单的网站访问量计数器实现 具体如下 首先说明思路 1 用户向服务器发出访问请求 2 服务器读取访问次数文件 1 向客户端返回 3 服务器保存新的浏览次数 4 新用户访问 重复123即可 解决方案 主要算法 1 数据文件 coun
  • 使用Clion 阅读/修改/注释 Linux 内核源码

    前言 其实 bootlin就是一个听不错的阅读源码的工具了 可以非常方便的帮我们查阅函数 宏的定义 引用等等 而且是基于浏览器 对我们本机的配置没有什么过高的要求 但是如果想要做一些注释 修改 那我们就要将源码下载到本地了 这个时候我们可能
  • 数据仓库灵魂30问之传统数仓和大数据数仓的异同?有哪些大的变化?

    不同点 特性 传统数仓 大数据数仓 数据存储位置 关系型数据库 HDFS 数据集市位置 MPP平台 HDFS 数据多样性 结构化数据 结构化数据 非结构化数据 半结构化数据 节点数量 几千 几千 几万 数据量 TB级别 PB级别 商业价值
  • 【转载】【NLP】使用 PyTorch 通过 Hugging Face 使用 BERT 和 Transformers 进行情感分析

    参考 https blog csdn net sikh 0529 article details 127950840 目的 用transformers加载自己的数据进行训练 然后做预测 知识点补充 什么是BERT BERT 在本文中介绍 代
  • Golang heap源码简单走读

    golang heap小根堆源码走读 heap概览 在golang中 通过heap给出了一个实现小根堆的接口 type Interface interface sort Interface Push x interface Pop inte
  • PCB结构和谐振(一)

    本文构建了包括不同的旋转角度 不同的叠层和两种不同布线方法 W 形和蛇形线 的测试手段 对应于这些设计的谐振是通过 VNA 测量获得的 然后 使用仿真方法来帮助我们理解这些实验结果 为了消除仿真与实验之间的差异 研究了由加工技术引起的一些实
  • git、KDiff3、Git Extensions

    Git git概念 Git 是一个开源的分布式版本控制系统 用于敏捷高效地处理任何或小或大的项目 1 下载git软件路径 https git scm com download win 2 点击安装 一直下一步直到finish git下载后的
  • 为什么sql里面not in后面的子查询如果有记录为NULL的,主查询就查不到记录

    为什么sql里面not in后面的子查询如果有记录为NULL的 主查询就查不到记录 原因很简单 SELECT FROM dbo TableA AS a WHERE a id NOT IN 2 NULL 等同于 SELECT FROM Tab
  • SSM概述

    SSM概述 基本概念 SSM Spring SpringMVC MyBatis Spring 简单来说 就是一个轻量级的控制反转 IOC 和面向切面 AOP 的容器框架 其中IOC可以说是SSM的核心之一 SpringMVC 分离了控制器