本篇文章为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(控制器),作用于视图和模型上。控制数据流向模型对象,并在数据变化时更新视图
post:暗送
Get:明送
Restful风格(认为post和get太过单调而提出的):
restful=有意义的URL+合适的http动词
书写风格:驼峰法则,如getById(类名)
int和integer的区别,integer是一个对象,可以为空,int是一个整数。
@Data:自动生成getter和setter
@AllArgsConstructor:自动生成全参构造函数
@NoArgsConstructor:自动生成无参构造函数
课堂代码
项目结构
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显示截图
小结
之前学过SSM框架,所以在刚学SpringBoot时没有感到很吃力,很多注解和项目的框架比较熟悉。但这次学习让自己对各个知识点都理解更深刻,更能把握。也解锁了很多IEDEA里的快捷方式。继续努力!