• JAVA之Spring MVC 请求与响应 REST风格 SSM整合(注解版)


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

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

    灵活性强

    入门案例

    1.导入依赖SpringMVC坐标

    
        org.springframework
        spring-webmvc
        5.1.38  //不要使用6及以上,javaxservlet不支持
    

    2.创建配置类文件夹,创建核心配置类

    @Configuration
    @ComponentScan("com.study.controller") //加载对应文件夹下的bean
    public class SpringMvcConfig {
    }
    

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

    设定请求方法的返回值为字符串类型,并返回自定义json数据

    @Controller //注解为可供Spring调用的bean
    public class UserController {
        @RequestMapping("/save")//定义映射路径
        @ResponseBody  //定义为响应体,告诉系统我不是页面
        public String save(){
            System.out.println("user save ....");
            return "{'info':'springmvc'}"; //将json类型返回
        }
    }

    在配置文件夹下新建初始化servlet容器文件,加载SpringMVC环境,并设置SpringMVC请求拦截的路径

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

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

    public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
        @Override
        //Servlet容器初始化,加载Spring的配置类
    创建Servlet容器时,加载SpringMVC对应的bean并放入WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext范围,即整个web容器范围
        protected WebApplicationContext createServletApplicationContext() {
            AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
            ctx.register(SpringMvcConfig.class);
            return ctx;
        }
    
        @Override
    设定SpringMVC对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到SpringMVC进行处理
        protected String[] getServletMappings() {
            //表示所有的请求都交给SpringMVC处理
            return new String[]{"/"};
        }
    
        @Override
    如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式同createServletApplicationContext()
        protected WebApplicationContext createRootApplicationContext() {
            return null;
        }
    }

    使用Tomcat运行时,如果其他都没有问题,但是运行不出来,可能是tomcat版本太低,

    用高一个版本的tomcat就可以解决了

    入门案例工作流程分析

     因为我们SpringMVC只控制表现层的Bean,其他类型的 bean都交给Spring来处理,我们要避免表现层打的bean也被Spring扫到

     

     也就是排除了注解类别为Controller的bean

     换一下继承的东西,可以简化开发

    postman

    postman这款软件可以很好的处理请求与响应,很适合用来测试

    请求与响应 

    因为我们主要是异步调用,所以主要是json

    请求映射路径

    映射路径这一块,不同模块可能会有同名的方法,为了区分,我们需要在模块类上加一个映射路径,这样映射路径就成了/user/save 就不会跟/book/save冲突了 

    get请求和post请求发送普通参数

    Post请求中文乱码处理

     

    5种类型参数参数传递 

     

     Json数据传递参数

    1.添加json数据转换相关坐标

    
    
        
          com.fasterxml.jackson.core
          jackson-databind
          2.9.0
        

    2.设置发送json数据(请求body中添加json数据)

    3.开启自动转换json数据的支持

     @EnableWebMvc注解功能强大,该注解整合了多个功能,此处仅使用其中一部分功能,即json数据进行自动类型转换

     4.设置接收json数据

    json数据

     Json数据在请求体中,所以我们的注解换成@RequestBody

    json对象

    json数组

     日期类型参数传递

     用@DateTimeFormat来设置读取日期格式

    响应

    响应页面

    响应数据

      文本数据

      json数据 

     响应数据的时候,要用@ResponseBody告诉服务器这个不是页面

    数据我们要什么数据 就返回什么类型的数据

    REST风格 

     因为有些资源路径我们是一样的,所以我们通过行为动作来区分相同的访问地址

     {id} 为得到输入的id,这样下面的参数则为传过来的id值

     @PathVariable 意思id从路径上取

    简化REST开发

    可以将RequestMapping提取出来到类上

     直接把原本要写的RequstMapping换成对应的方法Maping 这样我们就可以不写method了

    但是有些需要传参数的,还是要把参数带上

    这样我们就简化完成啦:

    基于RESTFUL页面数据交互

     因为我们的路径都会被SpringMVC所以我们要设置放行

  • 相关阅读:
    【零基础入门MyBatis系列】第三篇——使用MyBatis完成CRUD
    文心一言 VS 讯飞星火 VS chatgpt (110)-- 算法导论10.2 1题
    Angular 应用开发里使用 ForRoot 解决 Lazy Loaded Module 里单例行为丢失的问题
    软件工程毕业设计课题(60)微信小程序毕业设计JAVA共享充电桩小程序系统设计与实现
    BEV-YOLO 论文学习
    MyBatis-Plus——查询和删除(逻辑删除)
    仿写Timi记账
    linux上 more 和 cat 区别
    【MQTT】阿里云MQTT C++ 版本 登录三元组计算获取username、password
    AD2021软件原理图方面介绍,一些参数设置和使用
  • 原文地址:https://blog.csdn.net/m0_73859807/article/details/128060965