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 () 方法的返回值作为响应体返回给请求方

相关推荐
super_lzb13 分钟前
mybatis拦截器ResultSetHandler详解
java·spring·mybatis·springboot
while(1){yan}26 分钟前
拦截器(详解)
数据库·spring boot·spring·java-ee·拦截器
自在极意功。39 分钟前
简单介绍SpringAOP
java·spring·aop思想
梵得儿SHI43 分钟前
(第七篇)Spring AI 核心技术攻坚:国内模型深度集成与国产化 AI 应用实战指南
java·人工智能·spring·springai框架·国产化it生态·主流大模型的集成方案·麒麟系统部署调优
qq_12498707531 小时前
基于Spring Boot的电影票网上购票系统的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·spring·毕业设计·计算机毕业设计
廋到被风吹走1 小时前
【Spring 】Spring Security深度解析:过滤器链、认证授权架构与现代集成方案
java·spring·架构
码农小卡拉1 小时前
Springboot “钩子”:@PostConstruct注解
java·spring boot·后端·spring·spring cloud
小徐敲java2 小时前
使用aop切面springmvc后抛出异常一直捕捉不到异常(抛出异常UndeclaredThrowableException类)
spring·aop
u0104058362 小时前
企业微信自建应用权限模型与 RBAC 在 Spring Security 中的映射
java·spring·企业微信