核心组件

  1. DispatcherServlet:前端控制器 —— 负责拦截前端所有的请求,另外负责整个任务的调度和分发
  2. Controller:具体处理请求的控制器
  3. HandlerMapping:映射处理器,根据url查找Handler
  4. ModelAndView:服务层返回的数据和视图层的封装类
  5. ViewResolver:视图解析器 —— 解析具体的视图
  6. Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作
  7. handle:配置映射的对象(内含请求具体指向是哪个方法)

大白话讲 SpringMVC 工作原理

用户发送请求 --> 前端控制器拦截 --> 交给映射器 --> 根据URL --> 寻找相关配置信息(寻找到对应的是控制器中哪个方法)–> 生成handle对象 --> 返回给前端控制器 --> 交给适配器 --> 寻找处理器(Controller)–> 将业务逻辑的返回数据封装到 ModelAndView 对象中 --> 交给前端控制器 --> 将任务交给视图解析器 --> 根据返回的请求结果响应渲染页面

  • 用户发送请求,被前端控制器拦截,并将请求任务交给映射器;映射器根据前端请求的URL地址 来寻找请求的相关配置信息(说白了就是在映射器里寻找的就是 Controller 的类和方法,这样才知道前端请求的时候最终是通过哪个方法来处理请求;而我们在 Controller 层中会一些方法会涉及到复杂的业务逻辑,这个时候一般会调用 Service 层具体的业务逻辑);
  • 在映射器中生成 handle 对象并返回给前端控制器;前端控制器接收 handle,将handle 对象交给适配器;适配器会寻找具体的处理器(也就是具体的 Controller 层);
  • 得到业务逻辑后会将数据封装到 ModelAndView 对象中,再交给前端控制器;
  • 这个时候,前端控制器接收对象,又把这个任务调度分发给视图解析器;
  • 视图解析器再去寻找当初的请求是从哪个页面过来,这个页面是JSP还是HTML 的,再把数据响应到前端,把具体的内容渲染给具体的页面

相关文章: