我们知道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文件开始执行的,然后就会打开如下页面
点击“点击进入管理页面”
点击之后,他就会执行如下代码中的内容,就是会执行/findAll.do路径下面的内容,也就是UserController类里的findAll()方法
这个方法执行完后,会跳转到allUser.jsp页面
也就是下面这个页面
这时候如果我们想更改“王五”的信息,点击更改按钮
它就会执行allUser.jsp中的如下代码
这时候它就会跳转到toUpdate.do,也就是跳到UserController类里的toUpdate()方法去执行
执行完后,就跳到updateUser.jsp页面
也就是如下页面
我们把名字和密码都修改,点击提交
然后就跳到这里来了
在update()方法中然后调用IUserService接口的updateUserInfo方法
这个方法在IUserService接口实现类UserServiceImpl中具体实现
在updateUserInfo方法中,调用了userDao接口中的updateUserInfo方法(这两个方法当时命名的时候特地命名成一样的)
这个方法在UserMapper.xml中实现
上面是SQL语句,封装在MyBatis中
要注意的是,id中的值,必须和IUserDao接口中的方法名相同;resultType:查询结果返回的类型
如果前面已经添加了命名空间,那么后面可以直接用UserInfo
这时候就会执行SQL语句,返回的结果为UserInfo类型
于是从这时候开始,结果开始回传
首先它的结果会返回到调用updateUserInfo方法的地方,也就是UserServiceImpl类中的updateUserInfo方法(这里我们就忽略不谈接口了,直接说这些接口的实现类)
我们可以看到UserServiceImpl类中updateUserInfo方法的返回值类型就是UserInfo,对应到了之前提到的返回类型:parameterType=“UserInfo”
这个方法返回的是int类型,其实也可以定义为boolean类型,因为我们只需要知道是否更新成功,也就是之需要知道userDao. updateUserInfo()方法是否正确执行。如果执行了,也就意味着更新操作正确执行了,就会返回真。反之就会返回假
接着它会返回调用处,也就是UserController类中的update方法中继续执行下面的代码
它会跳转到findAll.do,也就是findAll()方法去执行
于是他又回到了allUser.jsp界面,我们可以看到用户的信息已经更新
以上就是更改操作的所有执行过程