Web开发实训——学生信息管理系统(JSP+Servlet+Ajax+MySQL)
内容比较长、是完整的开发过程,可以根据目录查看感兴趣的地方。
核心思路
前端HTML页面,构成JSP页面
后端Servlet管理
后端使用JDBC连接数据库
开发环境
Dreamweaver CC 2018
Eclipse EE
MySQL 5.7
完成结果
实现学生信息管理系统,能够对学生信息进行查看、增加、修改、删除、搜索、排序等功能;
不包含任何框架,如JQurry;
一、前端页面编写
使用DW CC2018将整个系统的页面静态的编写出来。完成情况如下图所示:
HTML的部分没有太大的问题,在这里也不再赘述和放置源码。
静态页面编写完成后,即可在Eclipse中新建JSP文件,将HTML代码放入。
二、导入相关依赖包
在整个系统中将会需要用到的第三方包有下列几个:
这些包都可以在Maven的第三方包下载网页下载。
三、创建数据库
在MySQL数据库中提前放入我们所需要的数据。
这里根据我的需要构建如下数据表:
并放入几行数据。
四、构建Servlet相关类
在构建服务端Servlet之前,我们需要根据java类的功能创建如下三个包:
Servlet包(用来存放Servlet类)
dao包(用来存放使用第三方库的接口或类)
entity包(实体包,用来存放实体类对象)
这样分有一个好处就是分门别类,结构比较清晰。
下面我们分别说明各个类的作用及内容
1、实体类:Student.java
我们首先建立一个实体类方便我们对数据库中每一行的数据对象进行管理。
Student类的内容可以和数据库中的字段一一对应。
public class Student {
private String id;
private String name;
private String classes;
private String phone;
private String mail;
private float grade_web;
private float grade_learning;
public Student(String id, String name, String classes, String phone, String mail, float grade_web,
float grade_learning) {
this.id = id;
this.name = name;
this.classes = classes;
this.phone = phone;
this.mail = mail;
this.grade_web = grade_web;
this.grade_learning = grade_learning;
}
//set和get函数省略
}
2、Servlet连接数据库父类:SQL.java
在这个类中我们会使用JDBC来连接数据库。
// 连接数据库要使用的量
private static String dbUrl = "jdbc:mysql://localhost:3306/studentinfo?characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
// 登录数据库的用户名
private static String name;
// 登录数据库的密码
private static String password;
// 数据库驱动
private static String jdbcName = "com.mysql.jdbc.Driver";
private Connection connection = null;
在这其中我们先初始化以上几个变量。其中dburl中 “localhost:3306”是数据库配置时分配的端口号;“studentinfo”是我们要连接的数据库的名称。
然后我们需要初始化登录MySQL时的用户名和密码;
连接数据库:
// 初始化连接数据库
protected Connection connectSQL() {
connection = null;
try {
// 加载数据库驱动
Class.forName(jdbcName);
// 建立连接
connection = DriverManager.getConnection(dbUrl, name, password);
System.out.println("MySQL数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("MySQL数据库连接失败");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("数据库驱动异常");
} catch (Exception e) {
e.printStackTrace();
System.out.println("连接数据库时其他异常");
}
return connection;
}
关闭数据库:
// 关闭数据库连接
protected static void closeSQL(Connection con, PreparedStatement pstmt, ResultSet rs) {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("MySQL关闭失败");
}
System.out.println("MySQL关闭成功");
}
数据库操作:
//数据库操作
public int executeUpdate(String sql, Object[] obj) { // sql:sql语句,obj:obj对象
connection = connectSQL();
PreparedStatement pstmt = null;
try {
pstmt = prepareStatement(connection, sql, obj);
int i = pstmt.executeUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
return 0;
} finally {
closeSQL(connection, pstmt, null);
}
}
protected PreparedStatement prepareStatement(Connection con,String sql,Object []obj){
PreparedStatement pstmt=null;
try {
int index=1;
pstmt = con.prepareStatement(sql);
if(pstmt!=null&&obj!=null){