SpringMVC 知识梳理 一文速查全览

Spring MVC 是一个用于创建web应用程序的框架,它是Spring的一部分,提供了MVC(模型-视图-控制器)架构和用于开发web应用程序的组件。

一文速查全览:

Spring MVC 核心组件

  • DispatcherServlet:前端控制器,用于处理所有请求和响应。
  • HandlerMapping:用于查找处理请求的Controller。
  • HandlerAdapter:用于支持多种类型的Controller。
  • Controller:处理用户请求,返回ModelAndView对象。
  • View Resolver:解析视图,将逻辑视图名转换为具体View实现。
  • View:渲染结果,将模型数据渲染成HTML响应。

配置示例




<!-- 配置Spring MVC DispatcherServlet -->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

注解示例




// 使用@Controller注解标识一个类为Controller
@Controller
public class MyController {
    // 使用@RequestMapping注解映射URL到具体方法
    @RequestMapping("/greeting")
    public String greeting() {
        return "greeting"; // 返回逻辑视图名
    }
}

Spring MVC 工作流程

  1. 用户发送请求到前端控制器(DispatcherServlet)。
  2. DispatcherServlet收到请求,通过HandlerMapping找到对应的Controller。
  3. HandlerMapping将Controller信息返回给DispatcherServlet。
  4. DispatcherServlet将请求交给HandlerAdapter。
  5. HandlerAdapter调用Controller的方法处理请求,得到ModelAndView对象。
  6. HandlerAdapter将ModelAndView返回给DispatcherServlet。
  7. DispatcherServlet将ModelAndView传递给View Resolver解析视图。
  8. View Resolver解析后返回真正的视图对象。
  9. DispatcherServlet对视图进行渲染,将响应返回给用户。

Spring MVC 优势

  • 简化了web开发,使用注解和少量配置即可快速搭建应用。
  • 灵活的URL映射和灵活的Controller组件支持。
  • 支持REST风格的URL。
  • 支持强大的表单绑定、验证等功能。
  • 支持国际化和主题等。
  • 支持静态资源服务。

Spring MVC 常用注解

  • @Controller:标识一个类为Controller。
  • @RequestMapping:映射HTTP请求到具体方法。
  • @RequestParam:绑定请求参数到方法参数。
  • @PathVariable:绑定URL模板变量到方法参数。
  • @ModelAttribute:绑定请求参数到命令对象。
  • @RequestBody:绑定请求体到方法参数。
  • @ResponseBody:将返回值放入响应体。

Spring MVC 学习资源

Spring MVC 框架选择

最后修改于:2024年09月04日 12:51

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日