SpringMVC概述以及入门案例

目录

SpringMVC概述

[为什么需要Spring MVC?](#为什么需要Spring MVC?)

SpringMVC入门

工作流程分析


SpringMVC概述

SpringMVC技术与Servlet技术功能等同,均属于Web层开发技术。SpringMVC是一种基于java实现MVC模型的轻量级Web框架。

为什么需要Spring MVC?

在传统Java Web开发中,Servlet直接处理请求会导致代码臃肿(一个功能对应一个Servlet)。Spring MVC通过分层设计组件解耦,让开发者更专注于业务逻辑。

SpringMVC入门

新建项目,模版选择org.apache.maven.archetypes:maven-archetype-webapp

添加完后没有java源项目,选择项目结构,在main下面新建名为java的目录并标记为源代码。

接下来导入springmvc和servlet依赖:

XML 复制代码
   <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.3.20</version>
    </dependency>

然后新建一个控制器类UserController:这个类里面有处理请求的方法,同时这个类要交给spring管理

java 复制代码
@Controller
public class UserController {

    //定义处理请求操作,设置访问路径
    @RequestMapping("/save")
    //设置当前操作的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("save 正在执行");
        return "{'module':'springmvc'}";
    }
}
java 复制代码
//创建springmvc的配置文件
@Configuration
@ComponentScan("com.cc.controller")
public class SpringMvcConfig {
}

接下来定义servlet容器启动 的配置类,在里面加载spring的配置。配置类要继承AbstractDispatcherServletInitializer类并重写3个方法,分别是:

  • WebApplicationContext createServletApplicationContext:加载springMVC容器配置。加载时使用AnnotationConfigWebApplicationContext
  • String[] getServletMappings:设置哪些请求归属springMVC处理
  • WebApplicationContext createRootApplicationContext:加载spring容器配置。
java 复制代码
public class ServletConfig extends AbstractDispatcherServletInitializer {

    //加载springmvc容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext app = new AnnotationConfigWebApplicationContext();
        app.register(SpringMvcConfig.class);
        return app;
    }

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

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

接下来就要配置Tomcat,详细请看:IDEA2024如何创建Web项目以及配置Tomcat_idea社区版怎么配置tomcat-CSDN博客

启动后打开浏览器,输入localhost/save或者127.0.0.1/save

工作流程分析

启动服务器初始化过程:

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

单次请求过程:

  1. 发送请求localhost/save
  2. web容器发现所有的请求都经过SpringMVC,将请求交给SpringMVC处理
  3. 解析请求路径/save
  4. 由/save匹配执行对应的方法save()
  5. 执行save()
  6. 检测到有ResponseBody直接将save()方法的返回值作为响应求体返回给请求方
相关推荐
CoderYanger14 分钟前
优选算法-字符串:63.二进制求和
java·开发语言·算法·leetcode·职场和发展·1024程序员节
3***312114 分钟前
java进阶1——JVM
java·开发语言·jvm
FeiHuo5651527 分钟前
微信个人号开发中如何高效实现API二次开发
java·开发语言·python·微信
源码技术栈34 分钟前
什么是云门诊系统、云诊所系统?
java·vue.js·spring boot·源码·门诊·云门诊
Coder-coco44 分钟前
游戏助手|游戏攻略|基于SprinBoot+vue的游戏攻略系统小程序(源码+数据库+文档)
java·vue.js·spring boot·游戏·小程序·论文·游戏助手
Qiuner1 小时前
Spring Boot 机制二:配置属性绑定 Binder 源码解析(ConfigurationProperties 全链路)
java·spring boot·后端·spring·binder
D***77652 小时前
适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程
java·tomcat·intellij-idea
20岁30年经验的码农2 小时前
Spring Security 6.x 安全实践指南
java
胖咕噜的稞达鸭3 小时前
自定义shell命令行解释器自制
java·开发语言
q***33376 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle