我们知道SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架

那么SSM框架的执行流程是什么,我们今天来简单说一下

首先要知道SSM框架可以分为以下几层:

视图层:View层 → 表现层(springMVC):Controller层(Handler层):→ 业务层(Spring):Service层 → 持久层(Mybatis):Dao层(Mapper层)

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据

由于我上一篇博文具体讲了如何利用IEDA+Maven整合SSM框架,所以我今天讲到内容,包括框架和代码,都是基于上一篇博文

ps:博文地址↓↓↓↓↓


那我就直接开始讲了,我们来跟踪一下程序的执行过程,以更改操作为例

首先运行程序,程序是从index.jsp文件开始执行的,然后就会打开如下页面

点击“点击进入管理页面”

SSM框架项目功能架构图_SSM


点击之后,他就会执行如下代码中的内容,就是会执行/findAll.do路径下面的内容,也就是UserController类里的findAll()方法

SSM框架项目功能架构图_java_02


SSM框架项目功能架构图_java_03


这个方法执行完后,会跳转到allUser.jsp页面

SSM框架项目功能架构图_业务层_04


也就是下面这个页面

SSM框架项目功能架构图_SSM框架项目功能架构图_05


这时候如果我们想更改“王五”的信息,点击更改按钮

SSM框架项目功能架构图_业务层_06


它就会执行allUser.jsp中的如下代码

SSM框架项目功能架构图_SSM框架项目功能架构图_07


这时候它就会跳转到toUpdate.do,也就是跳到UserController类里的toUpdate()方法去执行

SSM框架项目功能架构图_持久层_08


执行完后,就跳到updateUser.jsp页面

SSM框架项目功能架构图_业务层_09


也就是如下页面

SSM框架项目功能架构图_SSM框架项目功能架构图_10


我们把名字和密码都修改,点击提交

SSM框架项目功能架构图_SSM_11


SSM框架项目功能架构图_SSM_12


然后就跳到这里来了

SSM框架项目功能架构图_java_13


在update()方法中然后调用IUserService接口的updateUserInfo方法

SSM框架项目功能架构图_SSM框架项目功能架构图_14


SSM框架项目功能架构图_SSM框架项目功能架构图_15


这个方法在IUserService接口实现类UserServiceImpl中具体实现

SSM框架项目功能架构图_持久层_16


在updateUserInfo方法中,调用了userDao接口中的updateUserInfo方法(这两个方法当时命名的时候特地命名成一样的)

SSM框架项目功能架构图_持久层_17


SSM框架项目功能架构图_业务层_18


这个方法在UserMapper.xml中实现

SSM框架项目功能架构图_业务层_19


上面是SQL语句,封装在MyBatis中

要注意的是,id中的值,必须和IUserDao接口中的方法名相同;resultType:查询结果返回的类型

如果前面已经添加了命名空间,那么后面可以直接用UserInfo

SSM框架项目功能架构图_业务层_20


这时候就会执行SQL语句,返回的结果为UserInfo类型

SSM框架项目功能架构图_持久层_21

于是从这时候开始,结果开始回传

首先它的结果会返回到调用updateUserInfo方法的地方,也就是UserServiceImpl类中的updateUserInfo方法(这里我们就忽略不谈接口了,直接说这些接口的实现类)

我们可以看到UserServiceImpl类中updateUserInfo方法的返回值类型就是UserInfo,对应到了之前提到的返回类型:parameterType=“UserInfo”

SSM框架项目功能架构图_SSM框架项目功能架构图_22


这个方法返回的是int类型,其实也可以定义为boolean类型,因为我们只需要知道是否更新成功,也就是之需要知道userDao. updateUserInfo()方法是否正确执行。如果执行了,也就意味着更新操作正确执行了,就会返回真。反之就会返回假

接着它会返回调用处,也就是UserController类中的update方法中继续执行下面的代码

SSM框架项目功能架构图_SSM框架项目功能架构图_23


它会跳转到findAll.do,也就是findAll()方法去执行

SSM框架项目功能架构图_持久层_24


于是他又回到了allUser.jsp界面,我们可以看到用户的信息已经更新

SSM框架项目功能架构图_SSM框架项目功能架构图_25


以上就是更改操作的所有执行过程