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)方法路径
- @RestController
- public class user {
- @RequestMapping("/good")
- public String good(){
- return "good";
- }
- }

(1.2)类路径(我们需要加类路径在加方法路径)
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/good")
- public String good(){
- return "good";
- }
- }

(1.3)路径也可以写多层
@RequestMapping("/good/goo")
(2)请求和响应(利用psotman来发送请求测试,可以切换post和get等方式)


(2.1)上传一些二进制的文件,图片等

(2.2)指定请求方式(get,post等)

(2.3)传递参数
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(String name){
- return "接收到的参数 name:"+name;
- }
- }


(2.4)要用包装类型,int不行

(2.5)传递多个参数(参数请求不分先后顺序)
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(String name,Integer age){
- return "接收到的参数 name:"+name+",age:"+age;
- }
- }

(2.6)参数太多我们可以封装成一个对象
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(userinfo user){
- return user.toString();
- }
- }
- 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
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(@RequestParam("name") String username){
- return username;
- }
- }

(2.8)利用@RequestParam之后我们的参数成必传参数了,不传就会报错,我么可以用一个代码来解决

(2.9)传数组(两种传递方式)
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(String [] arr){
- return Arrays.toString(arr);
- }
- }


(2.10)传递集合(需要利用@RequestParam注解)此时必传参数,可以利用上述方法解决这个必传参数问题
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(@RequestParam("list") List
list) { - return list.toString();
- }
- }

此时必传参数,可以利用上述方法解决这个问题

但是此时还会报空指针问题,我们此时需要在我们的代码上继续解决问题
- @RestController
- @RequestMapping("/user")
- public class user {
- @RequestMapping("/r1")
- public String r1(@RequestParam(value = "list",required = false) List
list) { - if(list!=null) {
- return list.toString();
- }
- return "list为空";
- }
- }
