SpringMVC(一、基础介绍、快速入门、工作流程

一、概述

SpringMvc与Servlet一样,都属于web层的开发。在Web应用程序设计中,MVC模式已经被广泛使用。SpringMVC以DispatcherServlet为核心,负责协调和组织不同组件以完成请求处理并返回响应的工作,实现了MVC模式。

这时候有人会说,既然SpringMvc与servlet一样,那我们为啥还要学习SpringMvc嘞 

咱们看一个最基础的servlet的例子 

在这个servlet中,我们重写了doGet和doPost两个方法,同时让doPost转调doGet对请求进行统一的处理,但是我们通常会编写一个方法对应一个servlet,那么这时候问题就出现了,一个业务最基础都离不开增删改查吧,如果我们每一个方法都写一个servlet去实现业务,代码就显得太过冗余了

比如这样:

 为了简化我们的开发,SpringMvc就诞生了

让我们看看SpringMvc的简洁性

我们只需要新建一个controller类使用

@RequestMapping为每个方法都添加上对应的 访问路径

@ResponseBody声明请求体

 就极大程度的简略了代码了

二、快速入门 

1,导入依赖

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

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

2,编写SpringMvc配置类和servlet总配置类

SpringMvcConfig:

package config;


import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("controller")
public class springMvcConfig {

}

servletConfig:

package config;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

//servlet启动配置类,加载SpringMvcConfig
public class servletConfig extends AbstractDispatcherServletInitializer {

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

    //设置SpringMvc管理哪些请求
    @Override
    protected String[] getServletMappings() {
        //所有请求都由SpringMvc处理
        return new String[]{"/"};
    }

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

 3,新建Controller层编写测试

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/user")

public class userController {
    @ResponseBody
    @RequestMapping("/select")
    public String select(){
        System.out.println("user Test....");
        return "{'model':'springMvc'}";
    }

    @ResponseBody
    @RequestMapping("/delete")
    public String delete(){
        System.out.println("user Test....");
        return "{'model':'springMvc'}";
    }

    @ResponseBody
    @RequestMapping("/update")
    public String update(){
        System.out.println("user Test....");
        return "{'model':'springMvc'}";
    }

    @ResponseBody
    @RequestMapping("/add")
    public String add(){
        System.out.println("user Test....");
        return "{'model':'springMvc'}";
    }


}

项目最终路径 

测试:

直接访问目标网址

观察输出结果
 

 到此结束~

三、工作流程 

启动服务器初始化流程

  1. 服务器启动,执行serlvetConfig类,初始化web容器
  2. 执行createServletApplicatonContext方法,创建webApplicationContext对象
  3. 调用webApplicationContext对象的register方法注册SpringMvc配置类的信息
  4. 执行SpringMvc内的@componentScan扫描对应的bean
  5. 加载Controller层每一个对应的@RequestMapping的每一个方法
  6. 执行servlerConfig类中的getServletMappings()方法定义哪些请求需要控制

单次请求流程 

  1. 发送请求localhost+对应的@RequestMapping的value值
  2. web容器判断当前是否被springMvc管理
  3. 解析请求路径
  4. 通过@RequestMapping对应具体的方法
  5. 执行当前方法
  6. 通过@ResponseBody把对应的方法体作为返回数据返回给请求方
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值