SpringMVC概述(二)

简介: SpringMVC概述(二)

3. 入门案例工作流程分析


3.1 启动服务器初始化过程


服务器启动,执行ServletContainersInitConfig类,初始化web容器

执行createServletApplicationContext方法,创建了WebApplicationContext对象

加载SpringMvcConfig配置类

执行@ComponentScan加载对应的bean

加载UserController,每个@RequestMapping的名称对应一个具体的方法

执行getServletMappings方法,定义所有的请求都通过SpringMVC


e8ca117e7d1c95a20535cabbcf51df91_aef5cf76b554e24f1d89b468a75b541a.png


3.2 单次请求过程


发送请求localhost/save

web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理

解析请求路径/save

由/save匹配执行对应的方法save()

执行save()

检测到有@ResponseBody直接将save()方法的返回值作为响应求体返回给请求方


82912b43269d4270fd2046e8a10d2e02_d8c7922908cdb5b849ab7bcaa38f0494.png


4. Controller加载控制


问题导入


因为功能不同,如何避免Spring错误的加载到SpringMVC的bean?


4.1 Controller加载控制与业务bean加载控制


SpringMVC相关bean(表现层bean)


Spring控制的bean


业务bean(Service)


功能bean(DataSource等)


SpringMVC相关bean加载控制


SpringMVC加载的bean对应的包均在com.itheima.controller包内

Spring相关bean加载控制


方式一:Spring加载的bean设定扫描范围为com.itheima,排除掉controller包内的bean

方式二:Spring加载的bean设定扫描范围为精准范围,例如service包、dao包等

方式三:不区分Spring与SpringMVC的环境,加载到同一个环境中


4.2 Spring相关bean加载控制


方式一代码实现


名称:@ComponentScan

类型:类注解

范例


@Configuration
@ComponentScan(value = "com.itheima",
               excludeFilters = @ComponentScan.Filter(
                   type = FilterType.ANNOTATION,
                   classes = Controller.class
               )
              )
public class SpringConfig {
}


属性


excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)与具体项(classes)

includeFilters:加载指定的bean,需要指定类别(type)与具体项(classes)


4.3 Bean的加载格式


public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer { 
    protected WebApplicationContext createServletApplicationContext() { 
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;  
    }   
    protected WebApplicationContext createRootApplicationContext() {  
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();      
        ctx.register(SpringConfig.class);        
        return ctx;  
    }   
    protected String[] getServletMappings() { 
        return new String[]{"/"}; 
    }
}


简化格式


public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class}
    };
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }
}


5. PostMan【工具】


02921edcac384c2def5b20b98b762983_image-20210804194708518.png


5.1 PostMan介绍


Postman是一款功能强大的网页调试与发送网页HTTP请求的软件。

作用:常用于进行接口测试

特征

简单

实用

美观

大方


5.2 PostMan安装


双击官网下载的“Postman-win64-8.3.1-Setup.exe”即可自动按照,打开之后需要注册,如果底部有如下链接,可以点击跳过注册



5.3 PostMan的使用


5.3.1 创建WorkSpace工作空间


0f233bf781d37bd8d41c639a24a8c6f6_05989b377fa6d0d5b481aa6567ece7ce.png


5.3.2 发送请求获取json数据


c343b2f8bf83f6adf7e98463e841934e_59c0a540c85f667e137a479d25ef1065.png


5.3.3 保存当前请求


07b5e811a1d89c2a78c78661956f9daa_32d55e0e7cc43738127a889e91d14846.png


注意:第一次请求需要创建一个新的目录,后面就不需要创建新目录,直接保存到已经创建好的目录即可。

相关文章
|
前端开发 Java Spring
37SpringMVC - 简介
37SpringMVC - 简介
74 0
|
2月前
|
JSON Java 应用服务中间件
SpringMVC基础
SpringMVC基础
|
7月前
|
JSON 前端开发 Java
SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目
SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目
47 2
|
存储 JSON 前端开发
SpringMVC基础(下)
SpringMVC基础(下)
|
JSON 前端开发 Java
SpringMVC基础(上)
SpringMVC基础(上)
|
存储 前端开发 Java
SpringMVC简介
SpringMVC简介
87 0
|
JSON 前端开发 Java
SpringMVC概述(一)
SpringMVC概述(一)
|
小程序 Java 应用服务中间件
Servlet概述
一.Servlet概念 servlet:server applet(运行在服务器端的小程序) 浏览器请求动态资源找我们写的Java类,这些Java类没有main方法,依赖于服务器(如tomcat)才能运行,因此这些类需要遵守一定的规则,才能被服务器(tomcat)识别 1.servlet就是一个接口,定义了Java类可以被浏览器访问到(tomcat识别)的规则 2.将来我们自定义一个类,实现Servlet接口,复写方法
101 0
Servlet概述
|
存储 前端开发 Java
springMvc简要总结
springMvc简要总结
127 0
|
前端开发 Java Spring
SpringMVC概述
SpringMVC概述