0
点赞
收藏
分享

微信扫一扫

流量录制与回放:jvm-sandbox-repeater工具详解

勇敢乌龟 2024-07-31 阅读 23

简介

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

在这里插入图片描述

学习Spring MVC, 重点是学习如何通过浏览器和用户程序进行交互
交互主要体现在以下三方面:


建立连接

@RequestMapping 注解

在 Spring MVC 中我们使用注解 @RequestMapping 来实现浏览器与程序的连接

在这里插入图片描述
这个注解既可以修饰类,也可以修饰方法
修饰类时,访问路径为:类路径 + 方法路径
开发时建议路径前面加上 /,并且类路径和方法路径一起使用(虽然类路径可有可无,但为了可读性,最好还是加上)

@RequestMapping 支持 GET 和 POST 请求。同理也支持其他请求方式


参数传递

传递单个参数

@RestController
@RequestMapping("/request")
public class requestDemo1 {
    @RequestMapping("/req2")
    public String say1(int age) {
        return "收到参数,age:"+age;
    }
}

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


传递多个参数&对象

和单个参数同理,注意参数匹配时是按参数名进行匹配的,参数的位置不影响后端获取参数的结果
如果参数比较多时,方法中就有很多形参,并且后续每次新增⼀个参数,也需要修改方法声明。所以不妨把这些参数封装为⼀个对象
Spring MVC 可以自动实现对象参数的赋值,举个例子:

public class Student {
    private int id;
    private String name;
    private int age;
    //中间是各个参数的 get 和 set 方法,此处省略
    //...
   
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

@RestController
@RequestMapping("/request")
public class requestDemo1 {
    @RequestMapping("/req3")
    public String classStudent(Student student) {
        return "收到参数,student:"+student;
    }
}

在这里插入图片描述


后端参数重命名

后端接收的参数名可以和前端的不一样,使用 @RequestParam 来重命名前后端的参数值

@RestController
@RequestMapping("/request")
public class requestDemo1 {
    @RequestMapping("/req4")
    public String req4(@RequestParam("name") String studentName) {
        return "收到前端参数 name:" + studentName;
    }
}

在这里插入图片描述

@RequestParam 修饰的参数默认是必传的,不过可以将 @RequestParam 中的 required 设置为 false,这样就可以不传了。但是注意原先重命名的参数前面要加上 value,之前没加是因为没写 required = false 时,注解属性赋值默认赋给 value,如果有多个属性进行赋值,需要写上 key

@RequestMapping("/req5")
public String req4(@RequestParam(value = "age",required = false) int studentAge) {
    return "收到前端参数 age:" + studentAge;
}

传递数组&集合

数组元素用逗号分隔

@RequestMapping("/req6")
public String req6(String[] array) {
    return "数组内容为:" + Arrays.toString(array);
}

在这里插入图片描述
传递集合和数组类似,只不过需要用 @RequestParam 绑定参数关系,除此之外和数组基本没啥区别了

在这里插入图片描述


传递 JSON 数据

JSON 其实就是用字符串来表示 Key-Value 键值对(除了整型和布尔类型),比如下面这些都是合法的 JSON 数据:

{"name":"Sugar","age":20}
["hello", 1234, "json"] [{"name":"lisi","age":18},{"name":"root","age":16},{"name":"张三","age":24}]  

Spring MVC 框架也集成了 JSON 的转换工具,我们可以直接使用,来完成 JSON 字符串和 Java 对象的互转。其实并不复杂,说白了就是,前文传递对象时,我们在前端是 id,name,age 这些成员变量一个一个填,现在使用 JSON 则是一起填,整合到一块(一个 JSON 对象)这样子

在这里插入图片描述

通过 Fiddler 观察一下请求参数:

在这里插入图片描述


获取 URL 中的参数

我们除了可以把参数写在 body 中,还可以写在 URL

@RequestMapping("/req9/{id}/{name}")
public String req9(@PathVariable int id,@PathVariable("name") String studentName) {
    return "解析参数:id:" + id + " name:" + studentName;
}

在这里插入图片描述

如果方法参数名称和需要绑定的URL中的变量名称⼀致, 那就可以简写, 不用给 @PathVariable 的属性赋值, 如上面例子中的 id 变量;反之如果不一致,那就要给 @PathVariable 中的 value 赋值


上传文件

使用 @RequestPart 注解

//上传文件
@RequestMapping("/req10")
public String req10(@RequestPart("file") MultipartFile file) throws IOException {
    String fileName = file.getOriginalFilename(); //获取文件名
    file.transferTo(new File("C:/Users/27196/" + fileName)); //将文件上传至指定路径
    return "接收到的文件名为:" + fileName;
}

在这里插入图片描述

举报

相关推荐

0 条评论