SpringMVC入门案例及其工作流程

目录

  • 入门案例
    • [1 导入SpringMVC坐标与Servlet坐标](#1 导入SpringMVC坐标与Servlet坐标)
    • [2 创建SpringMVC控制器类](#2 创建SpringMVC控制器类)
    • [3 初始化SpringMVC环境](#3 初始化SpringMVC环境)
    • [4 初始化servlet容器,加载springmvc环境,并设置springmvc技术处理的请求](#4 初始化servlet容器,加载springmvc环境,并设置springmvc技术处理的请求)
  • 工作流程

入门案例

创建模块

1 导入SpringMVC坐标与Servlet坐标

dart 复制代码
 <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

  </dependencies>

2 创建SpringMVC控制器类

等同于Servlet功能

3 初始化SpringMVC环境

(同Spring环境),设定SpringMVC加载对应的bean

4 初始化servlet容器,加载springmvc环境,并设置springmvc技术处理的请求

dart 复制代码
package com.baidu.config;
// 4 定义一个servlet容器启动的配置类,在里面加载spring的配置
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {

//  加载springmvc容器配置
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();

        ctx.register(SpringMvcConfig.class);

        return ctx;
    }

//    设置哪些请求归属springmvc处理
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }



//    加载spring容器配置
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

添加tomcat插件

dart 复制代码
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

启动

访问

注意:

@RequestMapping注解用来设置当前控制器方法请求访问路径

@ResponseBody用于设置当前控制器方法响应内容为当前返回值,无需解析

工作流程

启动服务器初始化过程

  1. 服务器启动,执行ServletContainersInitConfig类,初始化web容器
  2. 执行createServletApplicationContext方法,创建了WebApplicationContext对象
    3.加载SpringMvcConfig
    4.执行@ComponentScan加载对应的bean
    5.加载UserController,每个@RequestMapping的名称对应一个具体的方法
    6.执行getServletMappings方法,定义所有的请求都通过SpringMVC

单次请求过程

1.发送请求localhost/save

2.web容器发现所有请求都经过springMVC,将请求交给SpringMVC处理

3.解析请求路径/save

4.由/save匹配执行对应的方法save()

5.执行save()

6.检测到有 @ResponseBody 直接将 save () 方法的返回值作为响应体返回给请求方

相关推荐
代码丰1 小时前
SpringAI+RAG向量库+知识图谱+多模型路由+Docker打造SmartHR智能招聘助手
人工智能·spring·知识图谱
wr2005142 小时前
第二次作业,渗透
java·后端·spring
短剑重铸之日4 小时前
《SpringCloud实用版》 Seata 分布式事务实战:AT / TCC / Saga /XA
后端·spring·spring cloud·seata·分布式事务
短剑重铸之日6 小时前
《SpringCloud实用版》统一认证授权:Spring Authorization Server + OAuth2 + JWT 生产级方案
java·后端·spring·jwt·oauth2
cookqq7 小时前
基于Spring AI+本地大模型+MongoDB实现私密化与记忆能力-企业级免费大模型应用
人工智能·mongodb·spring
哪里不会点哪里.8 小时前
什么是 Spring Cloud?
后端·spring·spring cloud
山上三树8 小时前
详细介绍读写锁
开发语言·c++·spring
树码小子8 小时前
Spring框架:Spring程序快速上手
java·后端·spring
老毛肚9 小时前
uniapp-ruoyi-spring部署宝塔
java·spring·uni-app
手握风云-9 小时前
JavaEE 进阶第十三期:Spring Ioc & DI,从会用容器到成为容器(下)
java·spring·java-ee