SpringMVC处理请求核心流程

一、前言

SpringMVC是一个基于Java的Web框架,它使用MVC(Model-View-Controller)设计模式来处理Web请求。在SpringMVC中,请求处理的核心流程主要包括以下几个步骤:

1、用户发送请求到前端控制器(DispatcherServlet)。

2、前端控制器接收到请求后,根据请求信息找到相应的处理器映射器(Handler Mapping)。

3、处理器映射器根据请求URL找到具体的处理器(Controller)。

4、前端控制器调用处理器适配器(Handler Adapter)来执行处理器。

5、处理器执行完成后,返回一个ModelAndView对象给前端控制器。

6、前端控制器根据ModelAndView对象中的视图名称,找到相应的视图解析器(View Resolver)。

7、视图解析器将视图名称解析为具体的视图页面。

8、前端控制器将ModelAndView对象传递给视图页面,视图页面使用Model中的数据渲染页面。

9、视图页面渲染完成后,返回给用户。

二、例子

java 复制代码
// 1. 用户发送请求到前端控制器(DispatcherServlet)  
// 请求URL:/hello  
  
// 2. 前端控制器接收到请求后,根据请求信息找到相应的处理器映射器(Handler Mapping)  
// 处理器映射器根据请求URL找到具体的处理器(Controller)  
@Controller  
public class HelloController {  
      
    // 3. 处理器(Controller)处理请求  
    @RequestMapping("/hello")  
    public String hello(Model model) {  
        String message = "Hello, SpringMVC!";  
        model.addAttribute("message", message);  
        return "hello"; // 返回视图名称  
    }  
}  
  
// 4. 前端控制器调用处理器适配器(Handler Adapter)来执行处理器  
// 5. 处理器执行完成后,返回一个ModelAndView对象给前端控制器  
// ModelAndView对象包含视图名称和Model数据  
  
// 6. 前端控制器根据ModelAndView对象中的视图名称,找到相应的视图解析器(View Resolver)  
// 视图解析器将视图名称解析为具体的视图页面  
// 在SpringMVC的配置文件中配置视图解析器:  
<!-- 视图解析器 -->  
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <property name="prefix" value="/WEB-INF/views/" />  
    <property name="suffix" value=".jsp" />  
</bean>  
  
// 7. 视图解析器将视图名称解析为具体的视图页面:/WEB-INF/views/hello.jsp  
// 8. 前端控制器将ModelAndView对象传递给视图页面,视图页面使用Model中的数据渲染页面  
// 在hello.jsp页面中使用EL表达式获取Model中的数据:  
<html>  
<head>  
    <title>Hello SpringMVC</title>  
</head>  
<body>  
    <h1>${message}</h1> <!-- 显示Model中的数据 -->  
</body>  
</html>  
  
// 9. 视图页面渲染完成后,返回给用户
相关推荐
dayceng1 分钟前
一则复杂 SQL 改写后有感
java·数据库·mysql
海风极客10 分钟前
《Go小技巧&易错点100例》第三十五篇
开发语言·后端·golang
武子康17 分钟前
大数据-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带PO
大数据·后端
周某某~18 分钟前
五.建造者模式
java·设计模式·建造者模式
YuTaoShao21 分钟前
Java八股文——Spring「SpringMVC 篇」
java·开发语言·spring
罗迪尼亚的熔岩22 分钟前
在C# 中使用建造者模式
java·c#·建造者模式
我是哪吒23 分钟前
分布式微服务系统架构第147集:JavaPlus技术文档平台日更
后端·面试·github
vortex528 分钟前
Yakit 热加载入门学习指南
java·服务器·前端
程序员岳焱38 分钟前
深入解析Spring AI:Java生态中的AI集成利器
java·人工智能·openai
北京_宏哥44 分钟前
🔥《刚刚问世》系列初窥篇-Java+Playwright自动化测试-19- 操作鼠标悬停(详细教程)
java·前端·测试