web连接mysql建⽴学⽣表,Web开发实训——学⽣信息管理系统
(JSP+Servlet。。。
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;
}
//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 = "sql.jdbc.Driver";
private Connection connection = null;
在这其中我们先初始化以上⼏个变量。其中dburl中 “localhost:3306”是数据库配置时分配的端⼝号;“studentinfo”是我们要连接的数据库的名称。
然后我们需要初始化登录MySQL时的⽤户名和密码;
连接数据库:
protected Connection connectSQL() {
connection = null;
try {
// 加载数据库驱动
Class.forName(jdbcName);
// 建⽴连接
connection = Connection(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 = uteUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
return 0;
} finally {
}
}
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){
for (int i = 0; i < obj.length; i++) {
pstmt.setObject(index, obj[i]);
index++;
}
}
} catch (SQLException e1) {
e1.printStackTrace();
}
return pstmt;
}
通过上述三个部分的内容我们已经可以连接数据库、关闭数据库和对数据库进⾏操作了。接下来就是针对每⼀个数据表进⾏对应需要的功能了。
3、Student数据表操作类:StudentSQL.java
这个类需要继承上⾯建⽴的SQL类,作为其⼦类。
因为上⾯这个⽗类其实可以看做是⼀个接⼝,并没有细化到每⼀个数据表的每⼀个操作。因此我们需要在这个StudentSQL类中实现⼀些我们需要的⽅法函数,如对Student数据表的增删查改等⽅法。
根据我们系统的需要我们可以构造⼀下⼏个⽅法:
(1)遍历数据、显⽰数据表中所有信息
根据SQL⾥的⽅法我们直接构造出这样的⽅法:
public List search(String params){
List list =new ArrayList();
Connection tSQL();
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
pstmt=this.prepareStatement(con, sql, params);
uteQuery();
()){
Student student=new String(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getFloat(6),rs.getFloat(7));
list.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeSQL(con, pstmt, rs);
}
return list;
}
//遍历数据库
public List findall(){
String sql="SELECT * FROM student";
return search(sql);
接下来的其他对数据库的操作都可以根据这个来改写了
(2)条件查询、查询是否存在该条记录
在这个数据表中每⼀条记录有⼀个唯⼀主键:学号id,我们可以根据这唯⼀主键进⾏条件搜索,以此判断是否存在该条记录。
//查询记录是否存在
public boolean findone(Student student) {
String sql="select * from student where id="+Id();
List list=search(sql);
if(list.isEmpty()) {
System.out.println("不存在对应记录");
return false;
}
else {
System.out.println("存在该条记录");
return true;
}
(3)新增⼀条记录
在新增记录的时候需要注意的⼀点是,如果学号id已存在,即数据库中已存在该条记录,那么应该⽆法插⼊,因此,在插⼊前我们先进⾏⼀步判断,判断该记录是否存在,若不存在,则插⼊。
//新增记录
public int insert(Student student){
boolean existed=findone(student);
if (!existed) {//不存在该条记录
String sql="INSERT INTO student (id,name,class,phone,mail,grade_web,grade_learning) VALUE(?,?,?,?,?,?,?)";
return executeUpdate(sql, new Object[]
{Id(),Name(),Classes(),Phone(),Mail(),Grade_web(),Grade_learning()});
}
else
return 0;
}
(4)修改⼀条记录
同样在修改⼀条记录的时候我们也需要进⾏记录存在与否的判断,只有存在该条记录我们才能进⾏修改。
//修改记录
public int update(Student student) {
boolean existed=findone(student);
jsp用什么前端框架
if (existed) {//存在该条记录
String sql="update student set id=?,name=?,class=?,phone=?,mail=?,grade_web=?,grade_learning=? where id=?";
return executeUpdate(sql, new Object[]
}
else
return 0;
}
(5)删除⼀条记录
与修改⼀条记录的思路相同,判断存在性、删除。
//删除记录
public int delete(Student student) {
boolean existed=findone(student);
if (existed) {//存在该条记录
String sql="delete from student where id=?";

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。