SpringMVC

133 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

SpringMVC

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

优点:使用简单,开发便捷(相比于Servlet)灵活性强

入门案例

image.png 1.

image.png 2.创建SpringMVC控制器类

@Controller
public class UserController {
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return  "{'module'+我成功了}";
    }

3.创建springmvc的配置文件,加载controller对应的bean

@Configuration
@ComponentScan("xiaokasidi.controller")
public class SpringMvcConfig {

}

4.定义一个servlet容器启动的配置类,在里面加载spring的配置

public class ServletContainerslnitConfig extends AbstractDispatcherServletInitializer {

    protected WebApplicationContext createServletApplicationContext() {
        //加载springMVC容器配置
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }
        //设置哪些请求归属springMVC处理
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
        //加载spring容器配置
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

在此过程中,用到了几个新注解

image.png

image.png

image.png 在上述操作中的第四步中三个重写方法的含义如下

SpringMVC入门程序开发总结(1+N)一次性工作

  • 创建工程,设置服务器,加载工程
  • 导入坐标
  • 创建web容器启动类,加载SpringMVc配置,并设置SpringMVC请求拦截路径
  • SpringMVc核心配置类(设置配置类,扫描controller包,加载Controller控制器bean)

多次工作

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

image.png

入门案例工作流程分析

启动服务器初始化过程

1.服务器启动,执行ServletContainersInitconfig类,初始化web容器

2.执行createServlgtApplicationContext方法,创建了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()方法的返回值作为响应求体返回给请求方

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

1.因为功能不同,如何避免Spring错误的加载到SpringMVC的bean——加载spring控制的bean的时候排除掉SpringMVC控制的bean

2种方法解决

SpringMVC相关bean加载控制

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

Spring相关bean加载控制

方式一:

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

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

上面代码的意思是扫的是com.itheima包下,但排除了有@Controller注解的类

方式二:

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

image.png

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<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

两者的区别在于继承的类不同

明显,上面那种较为繁琐,下面这种较为简便。因此,日常中使用下面这种作为主要使用对象

PostMan简介

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

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

●特征:简单 实用 美观 大方

基本使用

  • 注册登录
  • 创建工作空间/进入工作空间
  • 发起请求测试结果

作用:可以不用每次都通过调取网页来查看自己制作的web。特别是在不同工程下,想要查看之前做的web页面还得返回之前的包下找到启动类并通过输入网址进行web查看,较为繁琐。而这款软件可以保存任一时候的web页面,可以在不启动启动类而且不输入网址的情况下进行web页面查看。