手写实现springmvc,揭开springmvc神秘的面纱

首先来看一下springmvc的整体流程:

手写实现springmvc,揭开springmvc神秘的面纱_第1张图片

⑴ 用户发送请求至前端控制器DispatcherServlet

⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。

⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

 ⑷ DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

 ⑸ 执行处理器(Controller,也叫后端控制器)。

 ⑹ Controller执行完成返回ModelAndView

 ⑺ HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

⑻ DispatcherServlet将ModelAndView传给ViewReslover视图解析器

⑼ ViewReslover解析后返回具体View

⑽ DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

⑾ DispatcherServlet响应用户。

废话不多说,代码撸起来

目录结构如下:

手写实现springmvc,揭开springmvc神秘的面纱_第2张图片

web.xml如下:

手写实现springmvc,揭开springmvc神秘的面纱_第3张图片

既然时简单实现,咱的配置文件也是从简

手写实现springmvc,揭开springmvc神秘的面纱_第4张图片

 

web.xml和配置文件都配好了以后,咱们kai'shi撸代码

通常咱们写一个Controller如下:

手写实现springmvc,揭开springmvc神秘的面纱_第5张图片

 

spring提供很多注解比如:

@Controller
@Autowirted
@RequestMapping("/demo")

相信大家把ioc已经倒背如流,这些注解的使用也是炉火纯青了,在此不再废话,不过,在此咱们得声明一下,这些注解都是咱自己的,并非spring的,何以见得呢?请看看咱们的pom.xml:

手写实现springmvc,揭开springmvc神秘的面纱_第6张图片

 

整个项目中就引了一个HttpServlet,并没有spring的任何身影。

下面看看咱们的注解:

手写实现springmvc,揭开springmvc神秘的面纱_第7张图片

手写实现springmvc,揭开springmvc神秘的面纱_第8张图片

手写实现springmvc,揭开springmvc神秘的面纱_第9张图片

手写实现springmvc,揭开springmvc神秘的面纱_第10张图片

手写实现springmvc,揭开springmvc神秘的面纱_第11张图片

做了那么多准备工作,接下来进行真正的核心操作:

手写实现springmvc,揭开springmvc神秘的面纱_第12张图片

以上为继承HttpServlet,并实现doGet,doPost,init等方法

手写实现springmvc,揭开springmvc神秘的面纱_第13张图片

手写实现springmvc,揭开springmvc神秘的面纱_第14张图片

手写实现springmvc,揭开springmvc神秘的面纱_第15张图片

手写实现springmvc,揭开springmvc神秘的面纱_第16张图片

手写实现springmvc,揭开springmvc神秘的面纱_第17张图片

 

field.setAccessible(true);设置允许访问私有属性

手写实现springmvc,揭开springmvc神秘的面纱_第18张图片

 

手写实现springmvc,揭开springmvc神秘的面纱_第19张图片

 

 

手写实现springmvc,揭开springmvc神秘的面纱_第20张图片

 

手写实现springmvc,揭开springmvc神秘的面纱_第21张图片

手写实现springmvc,揭开springmvc神秘的面纱_第22张图片

手写实现springmvc,揭开springmvc神秘的面纱_第23张图片

手写实现springmvc,揭开springmvc神秘的面纱_第24张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(后端)