1、什么是MVC(一种思想)
Model View Controller : Model---模型 View---视图 Controller---控制器
![](https://file.jishuzhan.net/article/1767553453132877826/475ca274c8b0c752d449b979520939e3.webp)
2、Spring MVC是一种实现(我们现在学的是Spring web,Spring mvc过时了)
View属于前端问题我们后端人员不必太过于关注
![](https://file.jishuzhan.net/article/1767553453132877826/8bd911e07d92dfb61b3cc9a7e9ac423b.webp)
3、学习Spring web MVC
(1)建立连接(当一个类上有多个注解时没有先后顺序)
使用@RequestMapping注解(浏览器和程序进行映射)可以作用在类上和方法上
@RestController负责检查程序有无@RequestMapping注解
修改任何代码都需要重新运行(路径的/可加可不加,最好加上):
(1.1)方法路径
java
@RestController
public class user {
@RequestMapping("/good")
public String good(){
return "good";
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/cea281878489c603bb10d2d6576a2343.webp)
(1.2)类路径(我们需要加类路径在加方法路径)
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/good")
public String good(){
return "good";
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/c8a0ad170ef6682402b35b9891906b29.webp)
(1.3)路径也可以写多层
java
@RequestMapping("/good/goo")
(2)请求和响应(利用psotman来发送请求测试,可以切换post和get等方式)
![](https://file.jishuzhan.net/article/1767553453132877826/3801aece8232b7efc1fca8497c0ee6c3.webp)
![](https://file.jishuzhan.net/article/1767553453132877826/ae32a1a07855dbb88fe0f8af271eafda.webp)
(2.1)上传一些二进制的文件,图片等
![](https://file.jishuzhan.net/article/1767553453132877826/ffb7fbe764b0084de0aaa16364be5b92.webp)
(2.2)指定请求方式(get,post等)
![](https://file.jishuzhan.net/article/1767553453132877826/002779a6cae5587859cf391cdb71b00c.webp)
(2.3)传递参数
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(String name){
return "接收到的参数 name:"+name;
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/d8f1b40194364cc05b30e2c895772ff8.webp)
![](https://file.jishuzhan.net/article/1767553453132877826/a88719453ef7dab6499dc8ac1db90947.webp)
(2.4)要用包装类型,int不行
![](https://file.jishuzhan.net/article/1767553453132877826/0df44a65e9582df03bff7b214fe763c7.webp)
(2.5)传递多个参数(参数请求不分先后顺序)
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(String name,Integer age){
return "接收到的参数 name:"+name+",age:"+age;
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/e83f3930dda30f15bcd00171921ecfb7.webp)
(2.6)参数太多我们可以封装成一个对象
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(userinfo user){
return user.toString();
}
}
java
package com.example.demo;
public class userinfo {
private String name;
private Integer id;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "userinfo{" +
"name='" + name + '\'' +
", id=" + id +
", age=" + age +
'}';
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/20313aca7d220b8803fbcb50fed82fd7.webp)
![](https://file.jishuzhan.net/article/1767553453132877826/975d5fd83cb3037002c4d4694645317e.webp)
我们封装成对象时可以用基本类型
(2.7)参数重命名(利用@RequestParam)
前端传入name我们后端可以用自己定义的名字username
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(@RequestParam("name") String username){
return username;
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/e1e7c4697c91b9943ffd97de0ac9a9db.webp)
(2.8)利用@RequestParam之后我们的参数成必传参数了,不传就会报错,我么可以用一个代码来解决
![](https://file.jishuzhan.net/article/1767553453132877826/0440b7fa85127f9b7208f107fb9fd436.webp)
(2.9)传数组(两种传递方式)
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(String [] arr){
return Arrays.toString(arr);
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/28dbf4a84b211ba3e486bca5c65953ff.webp)
![](https://file.jishuzhan.net/article/1767553453132877826/fd87372395c7cc1389010c486c882843.webp)
(2.10)传递集合(需要利用@RequestParam注解)此时必传参数,可以利用上述方法解决这个必传参数问题
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(@RequestParam("list") List<String> list){
return list.toString();
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/6e2d56b5c6adc64e161658e845d55242.webp)
此时必传参数,可以利用上述方法解决这个问题
![](https://file.jishuzhan.net/article/1767553453132877826/0440b7fa85127f9b7208f107fb9fd436.webp)
但是此时还会报空指针问题,我们此时需要在我们的代码上继续解决问题
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(@RequestParam(value = "list",required = false) List<String> list){
if(list!=null) {
return list.toString();
}
return "list为空";
}
}
![](https://file.jishuzhan.net/article/1767553453132877826/f68ee33a1af04f087eb81ec8fdc228c8.webp)