SpringMVC概述、入门案例及工作流程

目录

一、SpringMVC概述

二、SpringMVC入门案例

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

四、Spring入门案例工作流程分析


一、SpringMVC概述

SpringMVC技术与Servlet技术功能等同,均属于web层开发技术

SpringMVC是一种基于Java实现MVC模型的轻量级Web框架

优点:

1、使用简单,开发便捷(相比于Servlet)

2、灵活性强

二、SpringMVC入门案例

1、使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标

  
    
      javax.servlet
      javax.servlet-api
      3.1.0
      provided
    
    
      org.springframework
      spring-webmvc
      5.2.10.RELEASE
    
  

2、创建SpringMVC控制器类(等同于Servlet功能)

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

//定义表现层控制器bean
@Controller
public class UserController {

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

3、初始化SpringMVC环境(同Spring环境),设定SpringMVC加载对应的bean

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

//springmvc配置类,本质上还是一个spring配置类
@Configuration
@ComponentScan("com.itheima.controller")
public class SpringMvcConfig {
}

4、初始化Servlet容器,加载SpringMVC环境,并加载SpringMVC技术处理的请求

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

//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;
    }
}

名称:@Controller

类型:类注解

位置:SpringMVC控制器类定义上方

作用:设定SpringMVC的核心控制器bean

范例:

@Controller
public class UserController {
}

名称:@RequestMapping

类型:方法注解

位置:SpringMVC控制器方法定义上方

作用:设置当前控制器方法请求访问路径

范例:

@RequestMapping("/save")
public String save(){
    System.out.println("user save ...");
}

相关属性:value(默认):默认访问路径

名称:@ResponseBody

类型:方法注解

位置:SpringMVC控制器方法定义上方

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

范例:

@RequestMapping("/save")
@ResponseBody
public String save(){
    System.out.println("user save ...");
    return "{'info':'springmvc'}";
}

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

一次性工作

创建工程,设置服务器,加载工程

导入坐标

创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径

SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean)

多次工作

定义处理请求的控制器类

定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)

AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类

AbstractDispatcherServletInitializer提供三个接口方法提供用户实现

1、createServletApplicationContext()方法,创建Servlet容器时,加载SpringMVC对应的bean并放入,WebApplicationContext对象范围中,而WebApplicationContext作用范围为ServletContext范围,即整个Web容器范围

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

2、getServletMappings()方法,设定SpringMVC对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到SpringMVC处理

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

3、createRootApplicationContext()方法,如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式同createRootApplicationContext()

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

四、Spring入门案例工作流程分析

启动服务器初始化过程

SpringMVC概述、入门案例及工作流程_第1张图片

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

你可能感兴趣的