SpringMVC入门学习总结(2025.04.16)

目录

一、SpringMVC框架核心流程。

(1)SpringMVC框架处理客户端请求流程。(简要)

1、接收请求

2、请求映射。

3、处理请求。

(2)SpringMVC框架的核心工作流程。(详细)

[1、请求到达(Incoming request)。](#1、请求到达(Incoming request)。)

2、接收请求(前端控制器:DispatcherServlet)。

[3、委托请求(Delegate request) 。](#3、委托请求(Delegate request) 。)

[4、业务处理与模型创建(Handle request、Create model)。](#4、业务处理与模型创建(Handle request、Create model)。)

[5、视图渲染(Delegate rendering of response、Render response)。](#5、视图渲染(Delegate rendering of response、Render response)。)

[6、返回响应(Return control、Return response)。](#6、返回响应(Return control、Return response)。)

7、运行环境。

二、SpringMVC快速入门项目小结。

(1)pom文件Maven依赖项。

spring-webmvc。

javax.servlet-api。(非必需)

(2)Tomcat(版本:9.0.68)运行环境、打包与部署。

tomcat本地部署打包与打包。

[控制台乱码问题。(VM options)](#控制台乱码问题。(VM options))

Tomcat服务启动日志乱码问题。(conf->logging.properties)

(3)Web容器初始化配置类。

(4)SpringMVC配置类。

(5)Spring配置类。

注解扫描。排除controller层注解扫描。


一、SpringMVC框架核心流程。

(1)SpringMVC框架处理客户端请求流程。(简要)
1、接收请求
  • 客户端发送请求,该请求首先被SpringMVC框架接收。
  • SpringMVC中的DispatcherServlet作为前端控制器,会拦截所有进入的HTTP请求,它是整个请求处理流程的入口。

2、请求映射。
  • SpringMVC框架根据请求的URL等信息,将请求映射到对应的Controller。
  • Controller在SpringMVC中以JavaBean的形式存在 。框架通过配置(如:注解@RequestMapping等 )来确定哪个Controller处理该请求。

3、处理请求。
  • 被映射到的Controller接收请求后,会进行具体的业务逻辑处理。如调用服务层方法、操作数据库等,然后返回处理结果(通常会携带视图信息和模型数据 )。后续再由框架进行视图渲染等操作,最终将响应返回给客户端。

(2)SpringMVC框架的核心工作流程。(详细)
1、请求到达(Incoming request)。
  • 客户端发起请求。该请求首先抵达DispatcherServlet(前端控制器 )。

2、接收请求(前端控制器:DispatcherServlet)。
  • 所有客户端请求首先到达 DispatcherServlet。它是SpringMVC的入口,类似于一个交通枢纽,负责接收和初步处理所有请求。

3、委托请求(Delegate request) 。
  • DispatcherServlet根据请求的URL等信息,将请求委托给合适的Controller(如:图中的HelloController)。它通过查找配置信息(如注解或配置文件)来确定哪个Controller能处理该请求。

4、业务处理与模型创建(Handle request、Create model)。
  • 被委托的Controller处理具体业务逻辑(如调用服务层方法、操作数据库等)。
  • 在处理请求过程中,Controller会创建一个Model对象,用于封装处理业务逻辑过程中产生的数据,这些数据后续会传递到视图层展示给用户。

5、视图渲染(Delegate rendering of response、Render response)。
  • 委托渲染响应:Controller处理完业务逻辑后,将Model和视图相关信息返回给 DispatcherServlet。提示可以进行响应的渲染工作了。
  • 渲染响应 :DispatcherServlet根据返回的视图信息,找到对应的视图模板(View template。如图中提到的JSP)。然后将Model中的数据填充到视图模板中进行渲染,生成最终要返回给客户端的HTML或其他格式内容。

6、返回响应(Return control、Return response)。
  • 渲染完成后,控制权返回给DispatcherServlet。(Return control)
  • 最后DispatcherServlet将响应结果返回给客户端。(Return response)

7、运行环境。
  • 整个流程是在Servlet引擎(如:Tomcat )提供的环境中运行的 。

二、SpringMVC快速入门项目小结。

(1)pom文件Maven依赖项。
spring-webmvc。
XML 复制代码
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.18</version>
</dependency>
javax.servlet-api。(非必需)
XML 复制代码
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

(2)Tomcat(版本:9.0.68)运行环境、打包与部署。
tomcat本地部署打包与打包。

控制台乱码问题。(VM options)
XML 复制代码
-Dfile.encoding=utf-8

Tomcat服务启动日志乱码问题。(conf->logging.properties)



(3)Web容器初始化配置类。
java 复制代码
package com.hyl.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class InitServletContainerConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

(4)SpringMVC配置类。
java 复制代码
package com.hyl.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan("com.hyl.controller")
@EnableWebMvc  //开启json接收
public class SpringMvcConfig {
}

(5)Spring配置类。
注解扫描。排除controller层注解扫描。
java 复制代码
package com.hyl.config;

import org.springframework.context.annotation.*;
import org.springframework.web.bind.annotation.RestController;

@Configuration
@ComponentScan(
        value = "com.hyl",
        excludeFilters = @ComponentScan.Filter(
                type = FilterType.ANNOTATION,
                classes = {RestController.class}
        )
)
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class, MyBatisConfig.class})
public class SpringConfig {
}
相关推荐
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚8 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司11 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地12 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415912 小时前
TCP超时重传机制是为了解决什么问题?
java
莫逸风14 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898615 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112315 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
做个文艺程序员16 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus