1、什么是MVC(一种思想)
Model View Controller : Model---模型 View---视图 Controller---控制器
2、Spring MVC是一种实现(我们现在学的是Spring web,Spring mvc过时了)
View属于前端问题我们后端人员不必太过于关注
3、学习Spring web MVC
(1)建立连接(当一个类上有多个注解时没有先后顺序)
使用@RequestMapping注解(浏览器和程序进行映射)可以作用在类上和方法上
@RestController负责检查程序有无@RequestMapping注解
修改任何代码都需要重新运行(路径的/可加可不加,最好加上):
(1.1)方法路径
java
@RestController
public class user {
@RequestMapping("/good")
public String good(){
return "good";
}
}
(1.2)类路径(我们需要加类路径在加方法路径)
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/good")
public String good(){
return "good";
}
}
(1.3)路径也可以写多层
java
@RequestMapping("/good/goo")
(2)请求和响应(利用psotman来发送请求测试,可以切换post和get等方式)
(2.1)上传一些二进制的文件,图片等
(2.2)指定请求方式(get,post等)
(2.3)传递参数
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(String name){
return "接收到的参数 name:"+name;
}
}
(2.4)要用包装类型,int不行
(2.5)传递多个参数(参数请求不分先后顺序)
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(String name,Integer age){
return "接收到的参数 name:"+name+",age:"+age;
}
}
(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 +
'}';
}
}
我们封装成对象时可以用基本类型
(2.7)参数重命名(利用@RequestParam)
前端传入name我们后端可以用自己定义的名字username
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(@RequestParam("name") String username){
return username;
}
}
(2.8)利用@RequestParam之后我们的参数成必传参数了,不传就会报错,我么可以用一个代码来解决
(2.9)传数组(两种传递方式)
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(String [] arr){
return Arrays.toString(arr);
}
}
(2.10)传递集合(需要利用@RequestParam注解)此时必传参数,可以利用上述方法解决这个必传参数问题
java
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String r1(@RequestParam("list") List<String> list){
return list.toString();
}
}
此时必传参数,可以利用上述方法解决这个问题
但是此时还会报空指针问题,我们此时需要在我们的代码上继续解决问题
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为空";
}
}