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 {
}
相关推荐
weixin_376934632 小时前
JDK Version Manager (JVMS)
java·开发语言
月月大王2 小时前
easyexcel导出动态写入标题和数据
java·服务器·前端
大G哥3 小时前
Kotlin Lambda语法错误修复
android·java·开发语言·kotlin
行走__Wz4 小时前
计算机学习路线与编程语言选择(信息差)
java·开发语言·javascript·学习·编程语言选择·计算机学习路线
Micro麦可乐4 小时前
最新Spring Security实战教程(十四)OAuth2.0精讲 - 四种授权模式与资源服务器搭建
java·服务器·spring boot·spring·spring security·oauth2·oauth2授权
进击的小白菜4 小时前
如何高效实现「LeetCode25. K 个一组翻转链表」?Java 详细解决方案
java·数据结构·leetcode·链表
悟能不能悟5 小时前
java实现一个操作日志模块功能,怎么设计
java·开发语言
caihuayuan55 小时前
[数据库之十四] 数据库索引之位图索引
java·大数据·spring boot·后端·课程设计
blammmp6 小时前
算法专题四:前缀和
java·开发语言·算法
饕餮争锋6 小时前
Spring普通配置类 vs 自动配置类-笔记
java·笔记·spring