SpringMVC入门学习总结(2025.04.16)

发布于:2025-04-18 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一、SpringMVC框架核心流程。

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

1、接收请求

2、请求映射。

3、处理请求。

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

1、请求到达(Incoming request)。

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

3、委托请求(Delegate request) 。

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

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

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

7、运行环境。

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

(1)pom文件Maven依赖项。

spring-webmvc。

javax.servlet-api。(非必需)

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

tomcat本地部署打包与打包。

控制台乱码问题。(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。
<!-- 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。(非必需)
<!-- 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)
-Dfile.encoding=utf-8


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




(3)Web容器初始化配置类。
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配置类。
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层注解扫描。
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 {
}


网站公告

今日签到

点亮在社区的每一天
去签到