Spring MVC基本认识与操作

SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。

先来介绍三个概念:

  • SpringMVC是处于Web层的框架,所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前端。
  • REST是一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性。
  • SSM整合是把SpringMVC+Spring+Mybatis整合在一起来完成业务开发,是对这三个框架的一个综合应用。

SpringMVC介绍

SpringMVC:表现层框架技术,主要实现表现层的功能开发

  • SpringMVC主要功能:
  1. controller如何接收请求和数据
  2. 如何将请求和数据转发给业务层
  3. 如何将响应数据转换成json发回到前端
  • SpringMVC是一个Web框架,是要替换Servlet,那我们先来回顾下Servlet开发过程

1.创建web工程(Maven结构)
2.设置tomcat服务器,加载web工程(tomcat插件)
3.导入坐标(Servlet)
4.定义处理请求的功能类(UserServlet)
5.设置请求映射(配置映射关系)

SpringMVC操作步骤

  • SpringMVC的制作过程和上述流程几乎是一致的,操作步骤如下

1.创建web工程(Maven结构)
2.设置tomcat服务器,加载web工程(tomcat插件)
3.导入坐标(SpringMVC+Servlet)

<!--1. 导入SpringMVC与servlet的坐标-->
 <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>

4.定义处理请求的功能类(UserController)
5.设置请求映射(配置映射关系)

//springmvc配置类,本质上还是一个spring配置类
@Configuration
@ComponentScan("com.taro.controller")
public class SpringMvcConfig {}
//定义表现层控制器bean
@Controller
public class UserController {

   //设置映射路径为/save,即外部访问路径
   @RequestMapping("/save")
   //设置当前操作返回结果为指定json数据(本质上是一个字符串信息)
   @ResponseBody
   public String save(){
       System.out.println("user save ...");
       return "{'info':'springmvc'}";
   }

   //设置映射路径为/delete,即外部访问路径
   @RequestMapping("/delete")
   @ResponseBody
   public String delete(){
       System.out.println("user save ...");
      return "{'info':'springmvc'}";
   }
}

6.将SpringMVC设定加载到Tomcat容器中

//web容器配置类
public class ServletContainersInitConfig extends > > >AbstractDispatcherServletInitializer {
   //加载springmvc配置类,产生springmvc容器(本质还是spring容器)
   protected WebApplicationContext createServletApplicationContext() {
       //初始化WebApplicationContext对象
      AnnotationConfigWebApplicationContext ctx = new >AnnotationConfigWebApplicationContext();
       //加载指定配置类
       ctx.register(SpringMvcConfig.class);
       return ctx;
   }

  //设置由springmvc控制器处理的请求映射路径
   protected String[] getServletMappings() {
       return new String[]{"/"};
   }

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

Spring web开发必须要导入这个包,哪怕不是Spring MVC也要只要是web就要。
web开发必须要

注意事项

  • SpringMVC是基于Spring的,在pom.xml只导入了spring-webmvcjar包的原因是它会自动依赖spring相关坐标
  • AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类
    • AbstractDispatcherServletInitializer提供了三个接口方法供用户实现
  • createServletApplicationContext方法,创建Servlet容器时,加载SpringMVC对应的bean并放入WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext范围,即整个web容器范围
  • getServletMappings方法,设定SpringMVC对应的请求映射路径,即SpringMVC拦截哪些请求
  • createRootApplicationContext方法,如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式和createServletApplicationContext相同。
  • createServletApplicationContext用来加载SpringMVC环境
  • createRootApplicationContext用来加载Spring环境
//web容器配置类
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    //加载springmvc配置类,产生springmvc容器(本质还是spring容器)
    protected WebApplicationContext createServletApplicationContext() {
        //初始化WebApplicationContext对象
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        //加载指定配置类
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    //设置由springmvc控制器处理的请求映射路径
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

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

注解

注解1:@Controller
名称@Controller
类型类注解
位置SpringMVC控制器类定义上方
作用设定SpringMVC的核心控制器bean
注解2:@RequestMapping
名称@RequestMapping
类型类注解或方法注解
位置SpringMVC控制器类或方法定义上方
作用设置当前控制器方法请求访问路径
相关属性value(默认),请求访问路径
注解3:@ResponseBody
名称@ResponseBody
类型类注解或方法注解
位置SpringMVC控制器类或方法定义上方
作用设置当前控制器方法响应内容为当前返回值,无需解析

SpringMVC入门程序开发总结(1+N)

  • 一次性工作
    • 创建工程,设置服务器,加载工程
    • 导入坐标
    • 创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径
    • SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean)
  • 多次工作
    • 定义处理请求的控制器类
    • 定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)

Spring MVC工作流程

启动服务器初始化

初始化

在这里插入图片描述

  • 服务器启动,执行ServletContainersInitConfig类,初始化web容器功能类似于以前的web.xml
  • 执行createServletApplicationContext方法,创建了WebApplicationContext对象
    • 该方法加载SpringMVC的配置类SpringMvcConfig来初始化SpringMVC的容器
  • 加载SpringMvcConfig配置类

在这里插入图片描述

  • 执行@ComponentScan加载对应的bean
  • 扫描指定包及其子包下所有类上的注解,如Controller类上的@Controller注解
  • 加载UserController,每个@RequestMapping的名称对应一个具体的方法
    • 此时就建立了 /save 和 save方法的对应关系

在这里插入图片描述

  • 执行getServletMappings方法,设定SpringMVC拦截请求的路径规则
    • /代表所拦截请求的路径规则,只有被拦截后才能交给SpringMVC来处理请求

在这里插入图片描述

单次请求过程
  1. 发送请求http://localhost/save
  2. web容器发现该请求满足SpringMVC拦截规则,将请求交给SpringMVC处理
  3. 解析请求路径/save
  4. 由/save匹配执行对应的方法save()
    • 上面的第五步已经将请求路径和方法建立了对应关系,通过/save就能找到对应的save方法
  5. 执行save()
  6. 检测到有@ResponseBody直接将save()方法的返回值作为响应体返回给请求方
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一哑7

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

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

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

打赏作者

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

抵扣说明:

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

余额充值