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

Spring之我见 - Spring MVC重要组件和基本流程

核心组件详解

前端控制器 - DispatcherServlet

  • 作用:所有请求的入口,负责请求分发和协调组件。

public class DispatcherServlet extends HttpServlet {// 核心服务方法protected void doService(HttpServletRequest request, HttpServletResponse response) {// 请求处理主流程}
}

处理器映射 - HandlerMapping

  • 作用:根据请求 URL 匹配对应的处理器(Controller 方法)。

  • 实现类

    • RequestMappingHandlerMapping:处理 @RequestMapping 注解。

    • BeanNameUrlHandlerMapping:根据 Bean 名称匹配 URL。

处理器适配器 - HandlerAdapter

  • 作用:调用具体的处理器方法,并处理参数绑定和返回值。

public interface HandlerAdapter {boolean supports(Object handler);ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception;
}
  • 关键实现

    • RequestMappingHandlerAdapter(处理@Controller)

    • HttpRequestHandlerAdapter(处理Servlet API)

  • 参数解析:通过 HandlerMethodArgumentResolver 解析方法参数(如 @RequestParam, @PathVariable)。

视图解析器 - ViewResolver

  • 作用:将逻辑视图名(如 "home")解析为实际视图(如 JSP、Thymeleaf)。

  • 典型实现:InternalResourceViewResolver(JSP)

  • 配置示例

    @Bean
    public InternalResourceViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");return resolver;
    }

JSON响应处理机制

大部分时候我们使用的是JSON作为数据返回,这时候就不是ViewResolver作为返回解析,JSON 返回和视图返回在结果处理阶段完全分离,前者走消息转换器HttpMessageConverter,后者走视图解析器ViewResolver。

核心组件 - HttpMessageConverter

public interface HttpMessageConverter<T> {boolean canRead/Write(Class<?> clazz, MediaType mediaType);T read(Class<? extends T> clazz, HttpInputMessage inputMessage);void write(T t, MediaType contentType, HttpOutputMessage outputMessage);
}
  • 常用实现

    • MappingJackson2HttpMessageConverter(JSON)

    • Jaxb2RootElementHttpMessageConverter(XML)

http://www.xdnf.cn/news/79741.html

相关文章:

  • N8N 官方 MCP 节点实战指南:AI 驱动下的多工具协同应用场景全解析
  • 多台电脑切换解决方案:KVM 切换器
  • 小技巧1,在vue3中利用自定义ref实现防抖(customRef)
  • 晨控CK-FR12与欧姆龙NX系列PLC配置EtherNet/IP通讯连接操作手册
  • C++_并发编程_thread_01_基本应用
  • LoRA微调技术全景解析:大模型高效适配的革新之道
  • 【RuleUtil】适用于全业务场景的规则匹配快速开发工具
  • ffmpeg 硬解码相关知识
  • spark-SQL实验
  • 川翔云电脑32G大显存集群机器上线!
  • 进阶篇 第 6 篇:时间序列遇见机器学习与深度学习
  • 考研单词笔记 2025.04.22
  • 安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
  • 企业战略到数字化落地 —— 第三章 数字化架构
  • 快速定位达梦缓存的执行计划并清理
  • 基于大疆行业无人机的特色解决方案-无线通信篇:基于蜂窝以及自组网MESH的无线通信C2链路
  • Web3实战:从零开发你的ERC20代币合约
  • 在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改
  • 使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
  • WebRTC服务器Coturn服务器中的通信协议
  • 进阶篇 第 2 篇:自相关性深度解析 - ACF 与 PACF 图完全指南
  • 云原生--基础篇-3--云原生概述(云、原生、云计算、核心组成、核心特点)
  • 2025.04.22【Sankey】流图分析技巧与应用
  • 设备制造行业如何避免项目管理混乱?
  • 【人脸识别】百度人脸识别H5方案对接
  • 表格识别版面还原分析-GO语言集成-表格文字识别接口
  • AutoJs相关学习
  • 国家自然科学基金答辩ppt制作案例模板下载
  • jsconfig.json文件的作用
  • 优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论