最近在学习JavaWeb,整理一下。写了个很简单的学生信息管理系统。系统只包括简单的对学生信息进行增删改查。系统采用三层设计模式。
先展示一下系统的业务处理逻辑图:
逻辑如图所示,获取前端用户交互信息,逐步调用其他层,实现“增删改查”业务。
数据库设计(DDL信息):
CREATE TABLE `stu` (
`sno` varchar(11) NOT NULL,
`sname` varchar(20) DEFAULT NULL,
`sage` tinyint(4) DEFAULT NULL,
`saddress` varchar(30) DEFAULT NULL,
PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
项目主要几个Jsp页面如下:
1.首页,展示学生信息
2.点击学号超链接,进入学生详细信息页面
3.新增学生页面
页面都比较简单,只是几个输入框而已。。
接下来看一下项目文件结构:
这里对项目目录结构进行简单说明;
- dao:存放数据访问层的Java文件
- entity:存放实体类,对应数据库的表
- service:存放业务逻辑层的Java文件
- servlet:存放Servlet文件(本质上是一个Java文件),一个功能对应一个Servlet
- web目录放着JS、CSS(本项目没有)、jsp文件
项目开始时要先导入数据库jar包,教程可以参考一下网上资源,这里不作介绍
接下来开始展示每个页面的代码(为了篇幅不过长,省略部分代码),都比较简单,这里从底层往上介绍:
1.Student.java
package pers.student.entity;
public class Student {
private String sno;
private String sname;
private int age;
private String address;
public Student(){
}
...此处省略其他构造方法和Setter、Getter
@Override
public String toString() {
return this.getSno() + " - " + this.getSname() + " - " + this.getAge() + " - " + this.getAddress();
}
}
2.StudentDao.java
package pers.student.dao;
import pers.student.entity.Student;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
//数据访问层,原子性的增删改查
public class StudentDao {
//数据库连接数据
private final String DRIVER = "com.mysql.cj.jdbc.Driver";
private final String DB = "javadb";
private final String USER = "java";
private final String PWD = "123456";
private final String URL = "jdbc:mysql://localhost:3306/"+DB+"?useUnicode = true&" +
"characterEncoding = utf-8&useSSL = false&serverTimezone = GMT&allowPublicKeyRetrieval=true";
/**
* 根据学号查询此人是否存在
* @param sno
* @return
*/
public