Spring框架基本内容
首先从SpringMVC框架的基本流程剖析:
1、 用户发送请求至前端控制器DispatcherServlet(无需开发,框架提供。流程控制中心,控制其他组件执行,提高每个组件的扩展性,降低组件间耦合性。作用:接收请求,响应结果,相当于转发器,中央处理器。这里作为接收请求执行)。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器(无需开发,框架提供。根据请求的url查找handler,通过扩展处理器映射器实现不同的映射方式,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等)。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器(通过扩展处理器适配器,去支持更多类型的适配器,作用:按照特定规则去执行Handler(也叫做controller)(由于Handler(controller)涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler(controller)。Handler(controller) 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler(controller)对具体的用户请求进行处理。))。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器,作用:接收请求—>调用模型—>根据结果派发页面)。
6、 Controller执行完成返回ModelAndView(包含Model,dao,service,entity,view)。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet前端控制器。
8、 前端控制器DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
其中以下两项需要自行开发
Handler(又叫作controller):处理器,即后端控制器用controller表示。
View:视图,即展示给用户的界面,视图中通常需要前端通过标签语言展示模型数据。
想必到这里,还是有一点混乱的,简易梳理版:
- 第一步: 用户发起请求到前端控制器(DispatcherServlet)
- 第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(controller):通过xml配置或者注解进行查找
- 第三步:找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)
- 第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(controller)
- 第五步:controller执行完给处理器适配器返回ModelAndView
- 第六步:处理器适配器向前端控制器返回ModelAndView
- 第七步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
- 第八步:视图解析器像前端控制器返回View
- 第九步:前端控制器对视图进行渲染
- 第十步:前端控制器向用户响应结果
更深刻理解springMVC中的所有组件:
- 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
- 处理器映射器(HandlerMapping):根据URL去查找处理器
- 处理器(Handler):(需要程序员去写代码处理逻辑的)
- 处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)
- 视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面
SpringMVC框架下接口的开发流程
大白话版基本流程为:进行MyBatis的配置--》调整module文件中的内容--》通过mybatis生成的Mapper包调整--》修改dao文件内容--》在serviceImpl中添加业务逻辑--》在service中添加公共方法--》在控制器controller中增加类。完成这个流程即可调用相应接口内容
一、mybatis的配置
在项目中右键目录选择Generate MyBatis/iBatis Artifacts方式进行mapper.xml的创建。
1、在mybatis的配置文件中对<jdbc connection></jdbc>中diver
class设置为"org.postgresql.Driver",数据库的类型选择要从resource下的jdbc.properties中进行选取,选取内容为当前开发环境的数据库类型。
url设置为jdbc:postgresql://192.0.0.1:3000/(数据库名称)
userId='';//选取数据库的用户名
password='';//选取数据库的密码
2、生成模型的包名与位置
<javamoudleGenerator targetpackage="XXX.XXX.model">
3、生成映射文件的包名与位置
<sqlmapGenerator targetpackage="XXX.XXX.Mapper">
4、生成dao文件的包名与位置
<Java client Generator targetPackage为XXX.XXX.dao>
<java client Generator targetProject为项目名称>
二、model文件的修改
注意public class 函数名要与dao文件中的List<*>中**的内容相一致
保证数据库内字段有多少,就要存在多少个private私有变量。
三、MAPPER.xml文件
通过生成的Mapper包,复制后导入main/resource中的mapper文件中
需要在resultMap方法外添加select方法,其中写入相应的类sql的支持mybatis表示方法的语句,目的是进行数据内容的获取。同时select中的id要与dao文件下的对应方法名相同
四、DAO文件
无重点内容,需要注意的是数据库内部数据的提取流程
1、jdbc中数据格式的修改
需要添加时:
jdbc_driveClassName=org.postgresql(数据库类型名).Driver
jdbc_url = jdbc:postgresql://localhost:0000/postgres(库名)
jdbc_username = postgres;(用户名)
jdbc_password = postgres;(密码)
2、Spring-context-mybatis.xml
编写<bean name="" class="" id="">
再在动态数据源中加入<entry value=""></entry>
3、在main/java中找到util包
在MybatisJdbcutil.java文件中添加一种新的DBtype;至此数据就可以获取到了。
五、serviceIMP,service,controller等文件
脱离mvc框架已经一年左右了,近期整理了一下基本思路和开发原理,理解与领悟都不可同日而语。记录完毕
Happy Hacking!!