• 前后端交互案例,图书管理系统


    先引入前端代码运行看看是否有问题

    图书管理系统

    定义前后端交互接口

    1.登录

    URL : /user/login

    参数 : userName=?&password=?

    响应 : true/false

    2.图书列表展示 :

    URL : /book/getBookList

    参数 : 无

    响应 : List

    后端代码如下:

    1. package com.example.book;
    2. import lombok.Data;
    3. import java.math.BigDecimal;
    4. @Data
    5. public class BookInfo {
    6. private Integer id;
    7. private String bookName;
    8. private String author;
    9. private Integer count;
    10. private BigDecimal price;
    11. private String publish;
    12. private Integer status;//0表示可借阅,1表示不可借阅
    13. private String statusCN;
    14. }
    1. package com.example.book;
    2. import org.springframework.util.StringUtils;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RestController;
    5. import javax.servlet.http.HttpSession;
    6. @RequestMapping("/user")
    7. @RestController
    8. public class UserController {
    9. @RequestMapping("/login")
    10. public Boolean login(String userName, String password, HttpSession session){
    11. //校验参数
    12. if (!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)){
    13. return false;
    14. }
    15. //验证账号密码是否正确
    16. if ("aaa".equals(userName)&&"aaa".equals(password)){
    17. //这里不要写成 if(userName.equals("aaa")){}这种写法,因为如果userName为null,会报空指针异常
    18. //这是开发习惯,需要养成
    19. //存Session
    20. session.setAttribute("userName",userName);
    21. //账号密码正确
    22. return true;
    23. }
    24. return false;
    25. }
    26. }
    1. package com.example.book;
    2. import org.springframework.web.bind.annotation.RequestMapping;
    3. import org.springframework.web.bind.annotation.RestController;
    4. import java.awt.print.Book;
    5. import java.math.BigDecimal;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. import java.util.Random;
    9. @RequestMapping("/book")
    10. @RestController
    11. public class BookController {
    12. @RequestMapping("/getBookList")
    13. public List getBookList(){
    14. //1.获取图书的数据
    15. //2.对图书的数据进行一些处理
    16. //3.返回数据
    17. //4.mock 表示虚拟的假数据,专业术语
    18. List bookInfos = mockData();
    19. for (BookInfo bookInfo:bookInfos){
    20. if (bookInfo.getStatus()==1){
    21. bookInfo.setStatusCN("可借阅");
    22. }else{
    23. bookInfo.setStatusCN("不可借阅");
    24. }
    25. }
    26. return bookInfos;
    27. }
    28. private List mockData() {
    29. //优化小tip:对于已知的数据量,或者大概知道这个集合的数据量时,创建List时,建议指定初始化容量
    30. List bookInfos = new ArrayList<>(15);
    31. for (int i = 0;i<15;i++){
    32. BookInfo bookInfo = new BookInfo();
    33. bookInfo.setId(i);
    34. bookInfo.setBookName("图书"+i);
    35. bookInfo.setAuthor(("作者"+i));
    36. bookInfo.setCount(new Random().nextInt(200));
    37. bookInfo.setPrice(new BigDecimal(new Random().nextInt(100)));
    38. bookInfo.setPublish("出版社"+1);
    39. bookInfo.setStatus(i%5==0?2:1);
    40. bookInfos.add(bookInfo);
    41. }
    42. return bookInfos;
    43. }
    44. }

    然后我们在postman 先进行测试看看有没有问题,返回 true 那就是没问题了

    另一个也没问题

    然后对前端的代码进行补充,这样就做完了

  • 相关阅读:
    容器环境下php进程与bash进程树关系
    Vue2速成手册(原创不易,转载请注明出处)
    nginx配置IP白名单
    【代码源每日一题】饿饿 饭饭「二分答案」
    c# sqlsugar,hisql,freesql orm框架全方位性能测试对比 sqlserver 性能测试
    【无标题】软件测试自动化“领导者”SmartBear举办首场中国线上研讨会:洞悉全球自动化测试走向,探讨降本增效之策
    Kotlin 协程 - 多路复用 select()
    CANoe的数据回放(Replay Block),还是要结合CAPL脚本才能说的明白
    浅谈分布式任务调度系统Celery的设计与实现
    RC4算法:流密码算法的经典之作
  • 原文地址:https://blog.csdn.net/qq_40841463/article/details/134373230