学习记录——手写SpringMVC(SpringMVC工作流程)

学习记录——手写SpringMVC(SpringMVC工作流程)_第1张图片

手写SpringMVC

1.建立注解

@Controller(类注解)

学习记录——手写SpringMVC(SpringMVC工作流程)_第2张图片

@Service(类注解)

学习记录——手写SpringMVC(SpringMVC工作流程)_第3张图片

@Autowired(属性注解)

学习记录——手写SpringMVC(SpringMVC工作流程)_第4张图片

@RequestMapping(类注解+属性注解)

学习记录——手写SpringMVC(SpringMVC工作流程)_第5张图片

@RequestParam(参数注解)

学习记录——手写SpringMVC(SpringMVC工作流程)_第6张图片

pom.xml

学习记录——手写SpringMVC(SpringMVC工作流程)_第7张图片

2.创建业务SpringMVC业务代码(Controller层、Service层)

Service

学习记录——手写SpringMVC(SpringMVC工作流程)_第8张图片
学习记录——手写SpringMVC(SpringMVC工作流程)_第9张图片

Controller

学习记录——手写SpringMVC(SpringMVC工作流程)_第10张图片
在这里插入图片描述

3.DispatcherServlet //SpringMVC中主要执行类

web.xml

设置拦截器
学习记录——手写SpringMVC(SpringMVC工作流程)_第11张图片

Servlet

学习记录——手写SpringMVC(SpringMVC工作流程)_第12张图片

Init() //初始化工作

学习记录——手写SpringMVC(SpringMVC工作流程)_第13张图片

doScan() //扫描包,并取到class文件

学习记录——手写SpringMVC(SpringMVC工作流程)_第14张图片

doInstance() //将扫描到的类进行实例化

学习记录——手写SpringMVC(SpringMVC工作流程)_第15张图片

doAutowired() //根据实例化的类将有@autowired注解的属性进行反射(相当于new)

学习记录——手写SpringMVC(SpringMVC工作流程)_第16张图片
学习记录——手写SpringMVC(SpringMVC工作流程)_第17张图片

urlMapping() //判断路径以及对应的方法

在这里插入图片描述
学习记录——手写SpringMVC(SpringMVC工作流程)_第18张图片
学习记录——手写SpringMVC(SpringMVC工作流程)_第19张图片

doGet()

在这里插入图片描述

doPost() //取得请求url里的类编号、方法编号、参数编号与值

学习记录——手写SpringMVC(SpringMVC工作流程)_第20张图片

hand() //取得参数列表并注入

学习记录——手写SpringMVC(SpringMVC工作流程)_第21张图片

为什么当http请求过来时,SpringMVC能快速找到对应的方法并执行?

SpringMVC初始化时会扫描所有的包里的注解,然后将方法与url一一对应存储到map对象中,当http请求过来时,就根据这个url查找这个map,并执行相应的方法

SpringMVC:(自己理解)
1、系统初始化阶段:加载所有的类注解、方法注解、属性注解以及参数注解,然后将这些注解内容和对应的信息(或是类对象)以及方法和对应的url根据key-value的形式存储进Map中,系统初始化时,根据注解将将实例化对象反射进对象属性中(Spring IOC)。
2、请求阶段:当用户请求过来时,根据请求的url在map(存储url以及其对应的方法的map)中查找对应的方法,然后执行这个方法,并把参数列表对应映射进去。
3、返回阶段:执行完方法后将得到的内容渲染页面后返回给用户

对应下图就是:
1、用户发送url请求,拦截器拦截后
2-3、Dispatcher Servlet(核心控制器)将url发送给Handler Mapping(处理器映射器)根据url提取出对应的controller(类别名等一系列信息)并返回给.Dispatcher Servlet
4、Dispatcher Servlet将获取到的controller交给Handler Adapter(处理器适配器)
5-7、根据传输过来的信息,Handler Adapter将会执行对应的方法、接口,然后将结果返回给Dispatcher Service
8-9、Dispatcher Servlet将得到的结果交给View Resolver(视图解析器)进行视图渲染后得到结果
10、Dispatcher Servlet将渲染结果返回给页面
在这里插入图片描述

你可能感兴趣的:(SpringMVC,SpringMVC)