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

SpringMVC原理及核心组件

一、SpringMVC原理及核心组件

1、 Spring MVC的工作原理

Spring MVC 是一个对javaWeb中Servlet 简化和封装,

1.首先SpringMVC 配置DispatcherServlet 来接受所有的请求,我们通过DispatcherServlet 响应的所有数据,DispatcherServlet 是HttpServlet的子类,他的所有方法(Get,Post…)最终都会执行doDispatch方法

protected void doDispatch(HttpServletRequest request, HttpServletResponse response)  {}

2.根据用户的输入url通过SpringMVC handlerMapping组件 找到对应的 HandlerExecutionChain 执行链

mappedHandler = this.getHandler(processedRequest);

3.找到handler 适配的HandlerAdapter

HandlerAdapter ha = this.getHandlerAdapter(mappedHandler.getHandler());

4.执行所有注册拦截器的preHandler方法

if (!mappedHandler.applyPreHandle(processedRequest, response)) {
    return;
}
  1. 通过HandlerAdapter 的适配方法来调用handler,返回ModelAndView
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

6.倒序执行所有注册拦截器的postHandler方法

mappedHandler.applyPostHandle(processedRequest, response, mv);

7.请求视图解析和视图渲染,如果是jsp就返回jsp页面,如果是 被@ResponseBody就返回JSON数据

this.processDispatchResult(processedRequest, response, mappedHandler, mv, (Exception)dispatchException);

2.Spring MVC的主要组件?

  • 前端控制器(DispatcherServlet):接收用户请求,给用户返回结果。
  • 处理器映射器(HandlerMapping):根据请求的url路径,通过注解或者xml配置,寻找匹配的Handler。
  • 处理器适配器(HandlerAdapter):Handler 的适配器,调用 handler 的方法处理请求。
  • 处理器(Handler):执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装到ModelAndView对象中。
  • 视图解析器(ViewResolver):将逻辑视图名解析成真正的视图View。
  • 视图(View):接口类,实现类可支持不同的View类型(JSP、FreeMarker、Excel等)。

http://www.kler.cn/a/106388.html

相关文章:

  • 网络学习第四篇
  • 超全超详细使用SAM进行高效图像分割标注(GPU加速推理)
  • 摘要与登记
  • 使用 Web Search 插件扩展 GitHub Copilot 问答
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • 字节青训-小M的多任务下载器挑战、版本号比较
  • 【大数据 - Doris 实践】数据表的基本使用(五):ROLLUP
  • MODBUS-TCP通信客户端如何访问服务器端RS485总线上的从站(SMART PLC梯形图程序)
  • 服务网络基础
  • 构造类型详解及热门题型结构体大小的计算
  • [Pytorch] 保存模型与加载模型
  • Leetcode 49. 字母异位词分组
  • 我是如何走上测试管理岗的
  • nu1l-死亡ping命令攻略
  • postman接收后端返回的文件流并自动下载
  • bug:Chrome插件SwitchyOmega安装时程序包无效:“CRX_HEADER_INVALID“问题
  • 最优秀的完整的数字音频工作站水果音乐FL Studio21.1.1.3750中文解锁版
  • python+unittest+requests+HTMLRunner编写接口自动化测试集
  • 时间、空间复杂度的例题详解
  • LVS集群-DR模式
  • es之null_value
  • esp8266固件烧录用户手册
  • mac系统u盘启动盘制作教程,更新至macOS Sonoma 14
  • Xilinx的FIR滤波器IP的设计与仿真
  • Django 注册及创建订单商品
  • fl studio21水果新手要不要购买?