图书管理系统

注:结构:①Controller(与前端交互)  ② Service (业务) ③Mapper(数据库)

一.用户

   1.在数据库中建用户表(存放用户的信息(用户名和密码))

43452d66352841c29c55ac026ae4025d.png

       

 2.用户登陆操作

  (1)前后端交互

          ① 接口定义:url:User/login

          ②参数:前端向后端传数据 (userName, password)

          ③ 返回结果是 Boolean

    (2)后端:

         ①验证前端传过来的密码是否在数据库中(1.判断userName和password是否为空(注意:传过来的userName和password和前端写的字符是一样的),若为空则就返回false 

if (!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)) {
    log.error("传来的数据为空");
    return false;
}

        ②判断前端传过来的用是否在数据库(从数据库中查找用户信息4d5bd7c54baa46399c16780efd121c6a.png

)中  若没有就返回空

UserInfo userInfo=userInfoService.selectUserInfoByName(userName);
if (userInfo==null||userInfo.getId()<=0){
    log.info("没有给用户的信息");
    return false;
}

        ③密码也正确就创建对话

if(password.equals(userInfo.getPassword())){
    //密码正确
    userInfo.setPassword("");
    session.setAttribute(Constant.SESSION_USER_KEY,userInfo);
    return true;
}

二.图书

1.在数据库中创建图书信息表

20e61bd4e7024bd38e392a71e26fdaf3.png

2.(1)获取图书列表页(完成翻页功能:

①可以由前端完成,也能是后端(推荐:因为请求了多次)完成

②确定当前页currentPage和每页的数据条数pageSize

③在数据库中查找数据时确定开始记录数offSet=(currentPage-1)*pageSize和限制条数limit=pageSize

④最后把返回的数据包装成PageResult(total,record,PageRequest)):

1.前后端交互

     ①接口定义url:book/getBookListByPage

     ②从前端获取当前页和每页数据条数(这个可以封装成PageRequest类31eab1b19ed54fc5bfeb46246a7d3d39.png

     ③返回参数  Result  

2.后端

     ①判断从前端拿到的数据是否小于0

if(pageRequest.getPageSize()<0||pageRequest.getCurrentPage()<1){
    return  null;
}

     ②从数据库中拿数据70903ce9693a474388bcbde6b221a83f.png

     ③把数据返回到页面上:返回的结果有总条数+记录数据 

15e88ff9e3d34bd5a27ced5351c4f43f.png

 

  Result是返回的最后结果,PageResult是返回的数据

940daec34d95446ca8c40f9b8980129c.png

(2)添加图书:

     1.  前后端交互:

        ①接口定义url:book/addBook

        ②参数:BookInfo

        ③返回:告述前端是否添加成功

               1)Boolean   true添加成功  false添加失败

               2)String     “”添加成功   不为空添加失败

               3)对象      不为空返回数据添加成功

    2.后端

      ①这里用的返回参数是String  因为String传到前端的数据是文本所以 要修改类型

dfbc91a89d3b48d3a17b9f9c2ef31778.png

      ②接收前端传过来的数据bookInfo

      ③检验传到后端的数据

58eb08aefa6f4ba29fcd1b9e68476f69.png

      ④插入数据库中

6831baaed7d94b5e9837b16bbad8b44b.png

 

⑤添加成功  返回“”

  (3)通过bookId来查找数据

  1.前后端交互:

       ①接口定义url:book/querySelectBookInfo

       ②参数bookId

       ③返回对象

2.后端

   ①直接根据bookId到数据库中查找

05873f7664aa4930a04f2b7f0d0f431f.png

8c5eb25c0de948ff94592641486171a1.png

前后端写的bookId要相同

(4)修改图书

     1.前后端交互:

       ①接口定义:book/updateBook

       ②参数:bookInfo

       ③返回:String类型  若返回“”则修改成功  否则返回错误信息

    2.后端

       ①根据前端传的书的信息 来修改图书的信息

6f81a47d7c864b18b4b3b532e65bfaaa.png

2d346a48260d47d190203f92d38908b9.png

eaba12ca821146b39f8079ad12a4f929.png

(5)分批删除图书

     1.前后端接口:

       ①接口定义url:book/batchDeleteBook

       ②参数:List<Integer > ids (因为传输前端的事集合类型,所以用@RequestParam)

       ③返回:String类型  若返回“”则修改成功  否则返回错误信息

    2.后端:

       ①根据前端传到后端的 ids来批量删除(就是把status改为0)

baa878c3b27a41e1b6ba6b4dc157af17.png

   1fafbd96f35949d09c4db849548c7101.png

(6)登陆拦截(每个用户登上后创建一个对话(这里是创建了一个常量类Constant  表示常量,把用户的信息放到常量里)

115f6c03930c454ebee32d2188f2795f.pngaa0455dd0e2342049ae4cdd5452a12b6.png

①创建一个登陆拦截类,preHandle是执行方法前处理  向前端请求获取会话,如果获取到登陆的用户信息就返回true放行成功  否则就设置状态401

②注册配置拦截器(让通过web拦截)

(7)结果统一返回

①设置一个统一返回类Result  分别是成功   未登陆  和各种方法操作失败

②统一返回  (1.请求返回类型为Result就不需要在做处理了 2.请求返回类型为字符串时要进行转换

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值