说一下 spring mvc 运行流程?

说一下 spring mvc 运行流程?

Spring MVC 是一个基于 Java 的 Web 框架,用于构建 Web 应用程序。它基于 MVC(Model-View-Controller)设计模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个主要组件。以下是 Spring MVC 的运行流程:

  1. 客户端发起请求: 客户端(浏览器)通过 URL 发起请求,请求到达服务器。

  2. DispatcherServlet 接收请求: 请求首先被 DispatcherServlet 接收,DispatcherServlet 是 Spring MVC 的核心控制器,它负责协调整个请求处理过程。

  3. HandlerMapping 查找处理器: DispatcherServlet 通过 HandlerMapping 查找合适的处理器(Controller),HandlerMapping 将请求映射到对应的处理器。

  4. HandlerAdapter 调用处理器: DispatcherServlet 调用 HandlerAdapter,HandlerAdapter 负责调用实际的处理器方法(Controller 方法)来处理请求。

  5. ModelAndView 处理数据和视图: 处理器方法处理请求后,返回一个 ModelAndView 对象,其中包含处理结果的数据和要显示的视图。

  6. ViewResolver 解析视图: DispatcherServlet 通过 ViewResolver 解析视图,找到具体的视图实现。

  7. 视图渲染: 视图渲染将模型数据填充到视图中,生成最终的响应内容。

  8. 响应返回给客户端: DispatcherServlet 将最终的响应返回给客户端,完成请求处理。

以下是一个简单的 Spring MVC 的代码示例:

// 控制器类
@Controller
@RequestMapping("/hello")
public class HelloController {
   

    @RequestMapping("/greet")
    public ModelAndView greet() {
   
        // 处理请求,返回数据和视图
        String message = "Hello, Spring MVC!";
        ModelAndView modelAndView = new ModelAndView("greetView");
        modelAndView.addObject("message", message);
        return modelAndView;
    }
}

// Spring MVC 配置类
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {
   

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

// 视图定义(/WEB-INF/views/greetView.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Greet Page</title>
</head>
<body>
    <h1>${
   message}</h1>
</body>
</html>

在上述示例中,HelloController 类是一个简单的控制器,处理 /hello/greet 请求,并返回一个包含消息的 ModelAndView 对象。配置类 WebConfig 配置了视图解析器,并指定了视图文件的位置。最终,greetView.jsp 视图文件渲染了模型数据,生成最终的响应内容。

相关推荐

  1. 一下 spring mvc 运行流程

    2023-12-28 18:02:05       30 阅读
  2. SpringMVC运行流程

    2023-12-28 18:02:05       15 阅读
  3. SpringMVC运行流程

    2023-12-28 18:02:05       14 阅读
  4. 【前端工程化面试题】一下 webpack 的构建流程

    2023-12-28 18:02:05       32 阅读
  5. SpringMVC运行原理

    2023-12-28 18:02:05       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 18:02:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 18:02:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 18:02:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 18:02:05       18 阅读

热门阅读

  1. Cnas认证路上你关心的那些个问题

    2023-12-28 18:02:05       34 阅读
  2. 2024 Python开发者转型Go开发

    2023-12-28 18:02:05       29 阅读
  3. linux使用内核编译其中一个模块

    2023-12-28 18:02:05       33 阅读
  4. 国产银河麒麟服务器开放防火墙命令

    2023-12-28 18:02:05       32 阅读
  5. Android 电话拨打界面按back键不结束通话活动

    2023-12-28 18:02:05       31 阅读
  6. 少年chen-zhe (关于洛谷)

    2023-12-28 18:02:05       37 阅读
  7. 安卓逆向笔记之AndroidManifest.xml篇

    2023-12-28 18:02:05       35 阅读
  8. shell脚本调试技巧

    2023-12-28 18:02:05       36 阅读
  9. 群晖Nas Docker镜像自动部署

    2023-12-28 18:02:05       35 阅读