【Spring Web MVC】(什么是 Spring Web MVC? MVC 建立连接(客户端和服务器) 请求 传递单个参数 传递多个参数 传递对象 传递数组 传递集合)
创始人
2024-12-01 21:32:56
0

文章目录

    • 什么是 Spring Web MVC?
    • MVC
      • 建立连接(客户端和服务器)
      • 请求
        • 传递单个参数
        • 传递多个参数
        • 传递对象
        • 传递数组
        • 传递集合


什么是 Spring Web MVC?

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring MVC”,comes from the name of its source module (spring-webmvc)

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring MVC”

MVC

MVC是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分

MVC就是把一个项目分成了三部分

在这里插入图片描述
MVC是一种思想,Spring进行了实现,称为Spring MVC

在这里插入图片描述
SpringBoot是创建SpringMVC项目的一种方式。

当前阶段,MVC的概念又发生了一些变化,后端开发人员不涉及前端页面的开发,所以也就没有view层,所以view又有了一层解释,之前返回的是视图,现在返回的是视图所需要的数据。

在这里插入图片描述

建立连接(客户端和服务器)

@RequestMapping就是建立了路由映射

@RequestMapping可以修饰方法也可以修饰类

访问地址:类的路径+方法路径

在这里插入图片描述

http://127.0.0.1:8080/hello/sayhello
在这里插入图片描述
@RequestMapping支持get和post

注解如果没有写属性名,默认是value,如下源码:

在这里插入图片描述
如果多了属性,比如我们设置必须使用get请求(限制请求方式):

@RequestMapping(value = "/sayhi",method = RequestMethod.GET) public String sayHi(){     return "hi,SpringBoot!!!"; } 

在这里插入图片描述

在这里插入图片描述
使用postman查看post请求:
在这里插入图片描述

请求

请求就是学习如何传参(下命令)

传递单个参数
@RequestMapping("/param") @RestController public class ParamController {     @RequestMapping("/m1")     public String m1(String name){         return "接收到参数name:" + name;     } }  

没有传参数
在这里插入图片描述
传了参数

在这里插入图片描述

spring就接收到参数。

只需要保持名称一样,底层逻辑:从请求的参数中,获取参数名为name的值,并给name赋值

传递多个参数
@RequestMapping("/param") @RestController public class ParamController {     @RequestMapping("/m2")     public String m2(String name,Integer age){         return "接收到参数name:" + name + "age: " + age;     } } 

在这里插入图片描述
传递多个参数的时候也是直接发送,参数的顺序可以调换。
此时将Integer换成int,正常赋值,请求是正常的。
在这里插入图片描述

如果将不传int这个参数,就出问题了
在这里插入图片描述

查看日志:age是一个int类型的,不能转化成null值,因为我们没有传值,我们只传了个name,基本类型int不能转成null值,日志建议我们使用基本类型的包装类型。
在这里插入图片描述

如果使用基本类型必须要传参。

传递对象

传递一个对象:

public class Person {     Integer id;     String name;     Integer age;      @Override     public String toString() {         return "Person{" +                 "id=" + id +                 ", name='" + name + '\'' +                 ", age=" + age +                 '}';     }      public Integer getId() {         return id;     }      public void setId(Integer id) {         this.id = id;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public Integer getAge() {         return age;     }      public void setAge(Integer age) {         this.age = age;     } } 

在这里插入图片描述
在这里插入图片描述

http://127.0.0.1:8080/param/m4?name=zhangsan&age=19&id=5
传递对象Spring会帮我们进行关系的映射,开发中接口的参数通常定义为对象。

修改后端参数:

@RequestMapping("/m5")     public String m4(@RequestParam("name")String username){         return "接收到参数name:" + username;     } 

在这里插入图片描述
如果把参数改成username就没有拿到数据了

在这里插入图片描述

在这里插入图片描述
日志信息告诉我们下面的参数是必传参数;
在这里插入图片描述
若不想是必须传入的参数,只需要后面加上参数required,并且值为false。
在这里插入图片描述
再次测试发现值为null,
在这里插入图片描述

所以,如果进行了重命名,就必须要使用@RequestMapping注解里的名字。

传递数组
@RequestMapping("/m6")     public String m6(String[] arrayParam){         return "接收到参数name:" + Arrays.toString(arrayParam);     } 

传递数组,当我们请求中,同一个参数有多个时,浏览器就会帮我们给封装成一个数组。
http://127.0.0.1:8080/param/m6?arrayParam=zhangsan&arrayParam=lisi&arrayParam=wangwu

在这里插入图片描述

还可以用逗号分割:
http://127.0.0.1:8080/param/m6?arrayParam=zhangsan,lisi,wangwu
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

传递集合
@RequestMapping("/m7")     public String m7(List listParam){         return "接收到参数name:" + listParam + "长度:" + listParam.size();     } 

我们进行传递集合发现报了个服务器错误500
在这里插入图片描述

查看日志:意思是默认给封装成了数组而不是list接口,如果我们想用list需要使用注解。
在这里插入图片描述

@RequestMapping("/m7")     public String m7(@RequestParam List listParam){         return "接收到参数name:" + listParam + "长度:" + listParam.size();     } 

此时就可以了

在这里插入图片描述

相关内容

热门资讯

据报道!正宗牛总管辅助,微信游... 据报道!正宗牛总管辅助,微信游戏决胜游戏辅助,黑科技教程(好像有挂)-哔哩哔哩1、微信游戏决胜游戏辅...
现场直击!蛮王大厅辅助教程,越... 现场直击!蛮王大厅辅助教程,越乡游义乌辅助器微信免费,玩家教你(切实是有挂)-哔哩哔哩1、越乡游义乌...
据文件显示!上饶中至脚本,人海... 据文件显示!上饶中至脚本,人海大厅脚本,曝光教程(竟然是有挂)-哔哩哔哩人海大厅脚本辅助器中分为三种...
据相关数据显示!微信小程序多功... 据相关数据显示!微信小程序多功能修改器,天天飞小鸡辅助,解说技巧(都是真的是有挂)-哔哩哔哩1、实时...
有玩家发现!三哥玩辅助,钱塘十... 有玩家发现!三哥玩辅助,钱塘十水三攻略,wepoke教程(切实真的有挂)-哔哩哔哩1、用户打开应用后...
现有说明如下!海贝之城辅助,上... 现有说明如下!海贝之城辅助,上品游戏辅助器,力荐教程(好像有挂)-哔哩哔哩1、上品游戏辅助器ai辅助...
截至发稿!天天川南辅助,小程序... 截至发稿!天天川南辅助,小程序牵手跑得辅助,必赢方法(确实是真的挂)-哔哩哔哩1、小程序牵手跑得辅助...
目前!丽水都莱智能辅助神器,正... 目前!丽水都莱智能辅助神器,正宗牛总管辅助,透明教程(总是是有挂)-哔哩哔哩1、玩家可以在丽水都莱智...
截至目前!快乐碰胡辅助,四川游... 截至目前!快乐碰胡辅助,四川游戏家园破解版,详细教程(切实有挂)-哔哩哔哩四川游戏家园破解版软件透明...
最新消息!开心泉州辅助,欢乐茶... 最新消息!开心泉州辅助,欢乐茶馆免费辅助设置,细节揭秘(一直存在有挂)-哔哩哔哩1)欢乐茶馆免费辅助...