SpringBoot课堂笔记20230913

本篇文章为SpringBoot学习笔记,方便自己再复习。

Maven:jar包管理工具
注解:
@Controller:处理http请求,返回的视图
@RestController: 相当于@ResponseBody和@Controller一起用,返回的是json

@ResponseBody:返回响应内容
@RequestMapping:配置url映射
例子:

@RestController
@RequestMapping("/users") //表示是下面每一个控制器方法请求路径的前缀
public class UserController{
	@GetMapping("/{id}")
	public String getById(@PathVariable Integer id){
		return "getById";
	}
	
}

@PathVariable:用于接收路径参数,使用参数名描述路径参数。例如:

@RequestMapping(value="users/{id}",method=RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id)
//PathVariable路径参数id对应路径中的id
{
	System.out.println("delete user");
	return "'{'module':'user delete'}'";	
}

@RequestParam:用于接收URL地址传参或表单传参
如:@RequestParam(“name”) String name1
表示这里定义的name1与传来的参数name是一个东西。
方法注解:@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
用于设置当前控制器方法请求访问路径与请求动作

软件设计的基本原则:单一责任原则

服务器最基本的三层系统结构:

功能和HTTP Method URL
获取一组数据列表(GET) /base-path/records
根据ID获取某个数据(GET) /base-path/records/{recordID}
新建数据(POST) /base-path/records
完整的更新数据(PUT) /base-path/records/{recordID}
部分更新数据(PATCH) /base-path/records/{recordID}
删除(DELETE) /base-path/records/{recordID}
跨域访问预请求(OPTION) /base-path/records/{recordID}

MVC:
M:model(模型),对应数据和逻辑
V:view(视图),代表模型包含的数据的可视化
C:controller(控制器),作用于视图和模型上。控制数据流向模型对象,并在数据变化时更新视图
SpringBoot课堂笔记20230913_第1张图片

post:暗送
Get:明送
Restful风格(认为post和get太过单调而提出的):
restful=有意义的URL+合适的http动词

书写风格:驼峰法则,如getById(类名)

int和integer的区别,integer是一个对象,可以为空,int是一个整数。

@Data:自动生成getter和setter
@AllArgsConstructor:自动生成全参构造函数
@NoArgsConstructor:自动生成无参构造函数

课堂代码

项目结构

SpringBoot课堂笔记20230913_第2张图片

StudentVO

package cn.edu.ctbu.demo1.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 这是用于显示学生信息的值对象
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentVo {

    private Integer sno;
    private String name;
    private Integer age;

}

StudentController

package cn.edu.ctbu.demo1.api;

import cn.edu.ctbu.demo1.vo.StudentVo;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@RestController  //返回json数据
@RequestMapping("/api/student")  //路径映射
public class StudentController {
    private static final List<StudentVo> students =new ArrayList<>(Arrays.asList(
            new StudentVo(1,"A",20),
            new StudentVo(2,"B",20),
            new StudentVo(3,"C",20)
    ));

    //get all students
    @GetMapping("")
    public List<StudentVo> getAllStudents(){
        return students;
    }
    //get student by id
    @GetMapping("/{sno}")
    public StudentVo getStudentBySno(@PathVariable Integer sno){
        for(StudentVo s:students){
            if(s.getSno() == sno){
                return s;
            }
        }
        return null;
    }

    //create a new student
    @PostMapping("")
    public String createStudent(StudentVo student){
        students.add(student);
        return "Success";
    }

    //update an existing student
    @PutMapping("/{sno}")
    public String updateStudent(@PathVariable Integer sno,StudentVo updateStudent){
        for(int i=0;i< students.size();i++){
            if(students.get(i).getSno() == sno){
                students.set(i,updateStudent);
                return "Success";
            }
        }
        return "Error";
    }

    //delete a student by id
    @DeleteMapping("/{sno}")
    public String deleteStudentById(@PathVariable Integer sno){
        for(int i=0;i<students.size();i++){
            if(students.get(i).getSno() == sno){
                students.remove(i);
                return "Success";
            }
        }
        return "Error";
    }


}

postman显示截图

SpringBoot课堂笔记20230913_第3张图片

小结

之前学过SSM框架,所以在刚学SpringBoot时没有感到很吃力,很多注解和项目的框架比较熟悉。但这次学习让自己对各个知识点都理解更深刻,更能把握。也解锁了很多IEDEA里的快捷方式。继续努力!

你可能感兴趣的:(SpringBoot,spring,boot,笔记,后端)