全部代码详见:
学生体质信息管理系统https://github.com/hhhhhhhbbbb/Student-Physical-Fitness-Information-Management-System
该系统需要设计以下有关的组件,主要是设计3个大类和1个接口以及相关的页面JSP程序。
1)描述学生信息的数据类:Students类。
2)数据库连接和关闭的工具JavaBean类的设计。
3)实现数据库访问和业务逻辑的结合体DAO类:StudentDAO类,该DAO类的实例对象应负责处理数
据库记录的基本操作(创建、读取、更新、删除,CRUD),即完成对CRUD操作的封装。
4)实现业务逻辑处理的接口:IstudentDAO。
5)实现数据信息提交、查询、修改、删除等有关操作的JSP网页。
各类、接口、JSP网页之间的关系如所示,下面主要给出JavaBean的设计与实现。
代码结构:
DAO层
IStudentDAO
package com.dao;
import com.domain.Student;
import java.util.List;
public interface IStudentDAO {
public abstract Student create(Student stu) throws Exception;//添加记录
public abstract int remove(Student stu) throws Exception;//删除记录信息
public abstract Student find(Student stu) throws Exception;//查找记录信息
public abstract List<Student> findAll() throws Exception;//罗列所有所有信息
public abstract void update(Student stu) throws Exception;//修改记录信息
}
StudentDAO
package com.dao;
import java.sql.*;
import com.db.DBConnect;
import com.domain.Student;
import java.util.ArrayList;
import java.util.List;
public class StudentDAO implements IStudentDAO{
protected static final String FIELDS_INSERT ="id,name,sex,age,weight,height";
//protected static final String FIELDS_RETURN ="id, " + FIELDS_INSERT;
protected static String INSERT_SQL="insert into stu_info ("+FIELDS_INSERT+")"+"values (?,?,?,?,?,?)";
protected static String SELECT_SQL="select "+FIELDS_INSERT+" from stu_info where id=?";
protected static String UPDATE_SQL="update stu_info set id=?,name=?,sex=?,age=?,weight=?,height=? where id=?";
protected static String DELETE_SQL ="delete from stu_info where name=?";
@Override
public Student create(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
try{
con = DBConnect.getDBconnection();
prepStmt =con.prepareStatement(INSERT_SQL);
prepStmt.setInt(1,stu.getId());
prepStmt.setString(2,stu.getName());
prepStmt.setString(3,stu.getSex());
prepStmt.setInt(4,stu.getAge());
prepStmt.setFloat(5,stu.getWeight());
prepStmt.setFloat(6,stu.getHeight());
prepStmt.executeUpdate();
} catch(Exception e){
//
} finally{
DBConnect.closeDB(con, prepStmt, rs);
}
return stu;
}
@Override
public int remove(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
int n=0;
try {
con=DBConnect.getDBconnection();
prepStmt = con.prepareStatement(DELETE_SQL);
prepStmt.setString(1,stu.getName());
n=prepStmt.executeUpdate();
}catch(Exception e) {
//
} finally{
DBConnect.closeDB(con, prepStmt, rs);
}
return n;
}
@Override
public Student find(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
Student stu2 = null;
try {
con=DBConnect.getDBconnection();
prepStmt = con.prepareStatement(SELECT_SQL);
prepStmt.setInt(1,stu.getId());
rs = prepStmt.executeQuery();
if (rs.next()){
stu2 = new Student();
stu2.setId(rs.getInt(1));
stu2.setName(rs.getString(2));
stu.setSex(rs.getString(3));
stu2.setAge(rs.getInt(4));
stu2.setWeight(rs.getFloat(5));
stu2.setHeight(rs.getFloat(6));
}
} catch (Exception e) {
// handle exception
} finally {
DBConnect.closeDB(con, prepStmt, rs);
}
return stu2;
}
@Override
public List<Student> findAll() throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
List<Student> student = new ArrayList<Student>();
con=DBConnect.getDBconnection();
prepStmt = con.prepareStatement("select * from stu_info");
rs = prepStmt.executeQuery();
while(rs.next()) {
Student stu2 = new Student();
stu2.setId(rs.getInt(1));
stu2.setName(rs.getString(2));
stu2.setSex(rs.getString(3));
stu2.setAge(rs.getInt(4));
stu2.setWeight(rs.getFloat(5));
stu2.setHeight(rs.getFloat(6));
student.add(stu2);
}
DBConnect.closeDB(con, prepStmt, rs);
return student;
}
@Override
public void update(Student stu) throws Exception {
Connection con=null;
PreparedStatement prepStmt=null;
ResultSet rs=null;
try {
con=DBConnect.getDBconnection();
prepStmt = con.prepareStatement(UPDATE_SQL);
prepStmt.setInt(1,stu.getId());
prepStmt.setString(2,stu.getName());
prepStmt.setString(3,stu.getSex());
prepStmt.setInt(4,stu.getAge());
prepStmt.setFloat(5,stu.getWeight());
prepStmt.setFloat(6,stu.getHeight());
prepStmt.setInt(7,stu.getId());
int rowCount=prepStmt.executeUpdate();
if(rowCount==0) {
throw new Exception("Update Error:Student Id:"+stu.getId());
}
}
catch(Exception e) {
}
finally {
DBConnect.closeDB(con, prepStmt, rs);
}
}
}
DBConnect
package com.db;
import java.sql.*;
public class DBConnect {
private static String driverName = "com.mysql.jdbc.Driver"; //驱动程序名
private static String userName = "root"; //数据库用户名
private static String userPwd = "1234"; //密码
private static String dbName = "db3"; //数据库名
public static Connection getDBconnection(){
String url1="jdbc:mysql://localhost/"+dbName;
String url2 ="?user="+userName+"&password="+userPwd;
String url3="&useUnicode=true&characterEncoding=GB2312";
String url =url1+url2+url3;
try{
Class.forName(driverName);
Connection con=DriverManager.getConnection(url);
return con;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void closeDB(Connection con,PreparedStatement pstm, ResultSet rs){
try{
if(rs!=null) rs.close();
if(pstm!=null) pstm.close();
if(con!=null) con.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
Student
package com.domain;
public class Student {
private int id;
private String name;
private String sex;
private int age;
private float weight;
private float height;
public Student(int id, String name, String sex, int age, float weight, float height) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.weight = weight;
this.height = height;
}
public Student(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
}
Servelt
Delete_date
package Controller_Servlet;
import java.io.IOException;
import com.dao.StudentDAO;
import com.domain.Student;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/delete")
public class Delete_date extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
Student a = new Student();
a.setName(name);
StudentDAO studentDao = new StudentDAO();
try {
studentDao.remove(a);
request.getRequestDispatcher("/succeed.jsp").forward(request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
}
find_date
package Controller_Servlet;
import com.dao.StudentDAO;
import com.domain.Student;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/find")
public class find_date extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("GB2312");
Student stu=new Student();
stu.setId(Integer.parseInt(request.getParameter("id")));
StudentDAO stu2=new StudentDAO();
try {
stu=stu2.find(stu);
request.setAttribute("stu", stu);
request.getRequestDispatcher("find_show.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
FindAll_date
package Controller_Servlet;
import com.dao.StudentDAO;
import com.domain.Student;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/findall")
public class FindAll_date extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
StudentDAO stu2=new StudentDAO();
List<Student> list = new ArrayList<Student>();
try {
list=stu2.findAll();
request.setAttribute("list", list);
request.getRequestDispatcher("find_showall.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
findForUpdate
package Controller_Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.StudentDAO;
import com.domain.Student;
@WebServlet("/update")
public class findForUpdate extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");//设置字符编码,避免出现乱码
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String sex = request.getParameter("sex");
int age = Integer.parseInt(request.getParameter("age"));
float weight = Float.parseFloat(request.getParameter("weight"));
float height = Float.parseFloat(request.getParameter("height"));
Student student = new Student();
student.setId(id);
student.setName(name);
student.setSex(sex);
student.setAge(age);
student.setWeight(weight);
student.setHeight(height);
StudentDAO run=new StudentDAO();
try {
run.update(student);
request.getRequestDispatcher("succeed.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
Insert_date
package Controller_Servlet;
import com.dao.StudentDAO;
import com.domain.Student;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/insert")
public class Insert_date extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
Student stu=new Student();
stu.setId(Integer.parseInt(request.getParameter("id")));
stu.setName(request.getParameter("name"));
stu.setSex(request.getParameter("sex"));
stu.setAge(Integer.parseInt(request.getParameter("age")));
stu.setWeight(Float.parseFloat(request.getParameter("weight")));
stu.setHeight(Float.parseFloat(request.getParameter("height")));
StudentDAO stu2=new StudentDAO();
try {
stu2.create(stu);
request.getRequestDispatcher("succeed.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
JSP
jsp文件较多这里只展示开始界面的代码,具体代码详见资源
index_stu.jsp
<%--
Created by IntelliJ IDEA.
User: 28939
Date: 24/4/2022
Time: 上午10:41
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生身体素质信息管理系统</title>
</head>
<frameset rows="80,*">
<frame src="index_stu_title.jsp" srolling="no">
<frameset cols="140,*">
<frame src="index_stu_left.jsp" scrolling="no">
<frame src="index_stu_right.jsp" name="right" scrolling="auto">
</frameset>
</frameset>
</html>
index_stu_left.jsp
<%--
Created by IntelliJ IDEA.
User: 28939
Date: 24/4/2022
Time: 上午10:44
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>页面菜单</title>
</head>
<body>
<br><br><br><br><br><br>
<p><a href="insert_stu_tijiao.jsp" target="right">添加学生</a>
<p><a href="delete_stu_tijiao.jsp" target="right">删除学生</a>
<p><a href="find_stu_tijiao.jsp" target="right">查询学生</a>
<p><a href="findall" target="right">列出全部学生</a>
<p><a href="update_stu_tijiao.jsp" target="right">修改学生</a>
</body>
</html>
index_stu_right.jsp
<%--
Created by IntelliJ IDEA.
User: 28939
Date: 24/4/2022
Time: 上午10:44
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>信息显示页面</title>
</head>
<body>
</body>
</html>