信息小管家

信息小管家之学生管理系统

在学习了数据库和Servlet的知识之后,想着写一个项目来练习一下这部分,于是通过学生信息管理系统来完成这个任务
项目的主要业务是进行学生信息的管理,包括学生信息的增加,删除,查询,更新
通过前端的请求,后端进行响应,返回JSON格式的数据,然后前端进行解析,显示到页面上.
数据库设计
在这里插入图片描述
班级和学生信息表为一对多关系
数据字典表和数据字典标签表为一对多关系

字典表说明

数据字典表和数据字典标签表主要用在一些通用的下拉菜单选项。

如班级表中的字段:学生是哪一届的,学生专业

  • 如果单独设计需要单独一张表,实际存放的数据也不会太多,可以考虑设计在整体的一张表。
  • 页面上展示时,这些字段也是下拉选项。
  • 一般在设计上考虑为两张表:数据字典表和数据字典标签表(一对多关系)来保存。两张表都是key、value的形式,字典表是父节点,字典标签表是子节点,下拉菜单通过父节点的key查询出所有关联的子节点,再使用子节点的key、value进行下拉菜单选项的初始化

接口的的设计:
查询专业字典

GET dict/tag/query?dictionaryKey=000002

查询毕业年份字典

GET dict/tag/query?dictionaryKey=000001

查询学生信息

GET student/query?searchText=&sortOrder=asc&pageSize=7&pageNumber=1&_=1594089188797

查询班级(数据字典)

使用在下拉菜单中,要求按照数据字典响应格式返回

GET classes/queryAsDict

新增学生信息

GET classes/queryAsDict

新增学生信息

POST student/add
Content-Type: application/json

{"studentName":"啊sir","studentNo":"1111","idCard":"32432423","classesId":"2","studentEmail":""}

删除学生信息

GET student/delete?ids=2&ids=3

查询学生详情

GET student/queryById?id=4

修改学生信息

POST student/update
Content-Type: application/json

{"id":"4","studentName":"小小的梦想A4","studentNo":"s00004","idCard":"222222222222222225","classesId":"3","studentEmail":"123@qq.com"}

根据前端的接口来定义后端的Servlet,在实现每个Servlet的doGet方法时候都要设置编码格式,状态码等等一些重复的操作,所以实现一个模板类,减少后面的工作量.根据前端的响应格式,来确定我们后端的响应要发送什么样的.
开发环境配置
通过Maven来构架项目,先完成项目的pom.xml的配置,然后在IDEA中配置数据库
代码设计
设计工具类
设计数据库实体类
设计HTTP请求基类
主要针对前端表格中,可以输入文本搜索,并根据页码显示列表数据

import javax.servlet.http.HttpServletRequest;

/**
 * @author PineappleSnow
 * @version 1.0
 * @date 2020/8/7 20:00
 */

@Getter
@Setter
@ToString
public class Page {
    private String searchText;//条件查询的的字段
    private String sortOrder;//排序的条件
    private Integer pageSize;//每页的数据
    private Integer pageNumber;//当前的页码

    public static Page parse(HttpServletRequest req) {
        Page p = new Page();
        p.searchText = req.getParameter("searchText");
        p.sortOrder = req.getParameter("sortOrder");
        p.pageSize = Integer.parseInt(req.getParameter("pageSize"));
        p.pageNumber = Integer.parseInt(req.getParameter("pageNumber"));
        return p;
    }
}

设计统一响应类


import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * @author PineappleSnow
 * @version 1.0
 * @date 2020/7/26 12:16
 */

@Getter
@Setter
@ToString
public class Response {
    private boolean success;//业务是否处理成功
    private Integer total;//分页操作时需要的总数量
    private String code;//错误码
    private String message;//错误消息
    private Object data;//业务字段
    private String stackTrance;//出现异常时,堆栈信息
}

流程:

  1. 定义服务路径,请求方法等
  2. 解析请求数据 通过request.getParameter()和request.getInputStream()来获取数据
  3. 进行JDBC的操作
  4. 响应数据的返回,和定义的Java对象的结构要一致

分页功能的实现:
通过给前端返回分页后的数据总的数量,前端完成处理
过滤器的配置:
通过对session的判断,如果当前没有登录,就重定向到登陆界面,如果当前请求后端非登录接口,在未登录不允许访问的情况下,返回401状态码

项目完整代码:项目代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值