当前位置: 首页 > news >正文

Spring MVC组件

1.DispatcherServlet前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。

2.HandlerMapping处理器映射器

HandlerMapping负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

3.Handler处理器

它就是我们开发中要编写的具体业务控制器。由DispatcherServlet 把用户请求转发到 Handler。由Handler对具体的用户请求进行处理。

4.HandlAdapter处理器适配器

 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

适配器对应的处理器以及这些处理器的作用:

  1. AnnotationMethodHandlerAdapter 主要是适配注解类处理器,注解类处理器就是我们经常使用的 @Controller 的这类处理器

  2. HttpRequestHandlerAdapter 主要是适配静态资源处理器,静态资源处理器就是实现了 HttpRequestHandler 接口的处理器,这类处理器的作用是处理通过 SpringMVC 来访问的静态资源的请求

  3. SimpleControllerHandlerAdapter 是 Controller 处理适配器,适配实现了 Controller 接口或 Controller 接口子类的处理器,比如我们经常自己写的 Controller 来继承 MultiActionController.

  4. SimpleServletHandlerAdapter 是 Servlet 处理适配器, 适配实现了 Servlet 接口Servlet 的子类的处理器,我们不仅可以在 web.xml 里面配置 Servlet,其实也可以用 SpringMVC 来配置 Servlet,不过这个适配器很少用到,而且 SpringMVC 默认的适配器没有他,默认的是前面的三种

 5.View Resolver视图解析器

ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象返回给DispatcherServlet 

6.View视图渲染器

 view对象会调用render将model中的数据全部存放到request中完成了请求的处理,源码如下:

public interface View {String RESPONSE_STATUS_ATTRIBUTE = View.class.getName() + ".responseStatus";String PATH_VARIABLES = View.class.getName() + ".pathVariables";String SELECTED_CONTENT_TYPE = View.class.getName() + ".selectedContentType";@Nullabledefault String getContentType() {return null;}//把model里的数据存放到request,request和response负载跳转	void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception;
}

7.SpringMVC执行流程

  • 具体步骤

    Ø 第一步:发起请求到前端控制器(DispatcherServlet)

    Ø 第二步:前端控制器请求HandlerMapping查找 Handler

    Ø 第三步:处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略

    Ø 第四步:前端控制器调用处理器适配器去执行Handler

    Ø 第五步:处理器适配器HandlerAdapter将会根据适配的结果去执行Handler

    Ø 第六步:Handler执行完成给适配器返回ModelAndView

    Ø 第七步:处理器适配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)

    Ø 第八步:前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可

    Ø 第九步:视图解析器向前端控制器返回View

    Ø 第十步:前端控制器进行视图渲染 (将数据(在ModelAndView对象中)填充到request域)

    Ø 第十一步:前端控制器向用户响应结果

 总结:  springmvc的核心组件
    DispatcherServlet(前端控制器):扫描controller、接受请求
    HandlerMapping(处理器映射器):查找handler
    HandlerAdaptor(处理器适配器):调用handler
    ViewResolver(视图解析器):解析具体的页面路径
    view(视图渲染器):把数据填充到request,并跳转页面

http://www.lryc.cn/news/279884.html

相关文章:

  • vue文件在<template>中使用多个<el-main>报错(已解决)
  • 【PlantUML】- 时序图
  • openai自定义API操作 API (openai.custom):OpenAI API 实现电商平台的智能库存管理
  • 宠物服务新篇章:预约小程序带来的变革
  • 谷歌最新医学领域LLM大模型:AMIE
  • 路由器02_静态路由DHCP
  • Mysql 递归查询所有子节点,hutool树形结构封装
  • 【代码随想录04】24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 142. 环形链表 II
  • Pandas实战100例 | 案例 25: 计算相关系数
  • vue文本识别“\n“换行问题的解决方式
  • 【QT-UI】
  • MyBatisPlus逆向工程
  • 创建ESP32开源WiFi MAC(介质访问控制)层
  • LeetCode 2723. 两个 Promise 对象相加
  • Flutter--常用技术文档
  • 行分类问题
  • java常见面试题:如何使用Java进行XML解析和生成?
  • 【LabVIEW FPGA入门】LabVIEW FPGA实现I2S解码器
  • linux 安装sipp
  • c++最值查找
  • xtu-c语言考试复习-2
  • MySQL决战:MySQL数据导入导出
  • Unity 面试篇|(二)Unity基础篇 【全面总结 | 持续更新】
  • TIDB的忘了root用户密码和数据库密码解决办法
  • QT基础篇(4)QT5基本对话框
  • Springboot项目Nacos做配置中心
  • SpringSecurity入门demo(三)多用户身份认证
  • 【设计模式-02】Strategy策略模式及应用场景
  • ssh远程登陆
  • go如何终止多个for select循环嵌套