JavaWeb學生資訊管理系統_查詢V1.0
阿新 • • 發佈:2019-01-22
-
專案簡介
1)在MySQL資料庫中建立一個StudentGradeTable資料表,新增欄位FlowId,Type,IdCard,ExamCard,StudentName,Location,Grade並錄入幾條資料
2)簡單實用MVC設計模式,model為StudentDAO.java,view為studentsList.jsp,Controller為ListAllStudent.java,分別實現資料庫訪問,頁面呈現以及前後端控制的功能
3)將資料庫內的學生資訊,以表格的形式呈現在Web頁面上
-
建立資料庫並插入資料
#建立資料庫 DROP DATABASE IF EXISTS myWebProject; CREATE DATABASE myWebProject; #使用資料庫 USE myWebProject; #建立四六級學生成績表 CREATE TABLE StudentGradeTable( FlowId INT PRIMARY KEY AUTO_INCREMENT, `Type` INT NOT NULL, IdCard VARCHAR(20) UNIQUE , ExamCard VARCHAR(20) UNIQUE , StudentName VARCHAR(20) NOT NULL, Location VARCHAR(20), Grade INT NOT NULL ); DESC StudentGradeTable; #插入資料 INSERT INTO StudentGradeTable(`Type`,`IdCard`,`ExamCard`,`StudentName`,`Location`,`Grade`) VALUES(4,'211212199709092345','19970909','小李','泗陽',90); INSERT INTO StudentGradeTable(`Type`,`IdCard`,`ExamCard`,`StudentName`,`Location`,`Grade`) VALUES(6,'211212199605092345','19960509','小王','貴陽',96); INSERT INTO StudentGradeTable(`Type`,`IdCard`,`ExamCard`,`StudentName`,`Location`,`Grade`) VALUES(6,'211212199504092345','19950409','小狗','潮汕',120); INSERT INTO StudentGradeTable(`Type`,`IdCard`,`ExamCard`,`StudentName`,`Location`,`Grade`) VALUES(4,'211212199410102345','19941010','小劉','南通',145); INSERT INTO StudentGradeTable(`Type`,`IdCard`,`ExamCard`,`StudentName`,`Location`,`Grade`) VALUES(4,'211212199310012345','19931001','小嵇','永城',127); #查詢 SELECT * FROM StudentGradeTable; #刪除資料表 DROP TABLE IF EXISTS StudentGradeTable;
結果如圖所示:
-
在Web專案中新建一個index.jsp,並新增一個超連結,用於請求資料查詢
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="ListAllStudent">查詢學生資訊</a> </body> </html>
-
建立ListAllStudent的Servlet實現類,並在其中呼叫後面的資料庫查詢的函式,以及資料請求結束後,跳轉至呈現學生資訊的頁面
package com.njupt.javaweb; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ListAllStudent */ @WebServlet("/ListAllStudent") public class ListAllStudent extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); System.out.println("請求來了。。。"); List<Student> students = new StudentDAO().getAll(); //設定屬性 request.setAttribute("studentsList", students); //轉發 request.getRequestDispatcher("/studentsList.jsp").forward(request, response); } }
-
建立Student類,用於將資料庫的每條記錄轉成物件
package com.njupt.javaweb;
public class Student {
//屬性名與資料庫一一對應
private int flowId;
private int type;
private String idCard;
private String examCard;
private String studentName;
private String location;
private int grade;
//屬性的getter與setter方法
public int getFlowId() {
return flowId;
}
public void setFlowId(int flowId) {
this.flowId = flowId;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getExamCard() {
return examCard;
}
public void setExamCard(String examCard) {
this.examCard = examCard;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
//方便初始化,寫一個帶參構造器
public Student(int flowId, int type, String idCard, String examCard, String studentName, String location,
int grade) {
super();
this.flowId = flowId;
this.type = type;
this.idCard = idCard;
this.examCard = examCard;
this.studentName = studentName;
this.location = location;
this.grade = grade;
}
//方便反射,留一個無參構造器
public Student() {
}
@Override
public String toString() {
return "Student [flowId=" + flowId + ", type=" + type + ", idCard=" + idCard + ", examCard=" + examCard
+ ", studentName=" + studentName + ", location=" + location + ", grade=" + grade + "]";
}
}
-
建立StudentDAO.java用於處理資料庫資訊
package com.njupt.javaweb;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class StudentDAO {
public List<Student> getAll() {
// 1.準備連線資料庫的基本資訊
String driverClass = "com.mysql.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://localhost:3306/myWebProject";
String mysqlUser = "root";
String mysqlPassword = "root";
// 2.載入資料庫驅動
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 3.獲取資料庫連線以及處理資料
Connection conn = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String sqlQueryAllStudent = "SELECT * FROM StudentGradeTable";
List<Student> studentsList = new ArrayList<Student>();
try {
conn = DriverManager.getConnection(jdbcUrl, mysqlUser, mysqlPassword);
preparedStatement = conn.prepareStatement(sqlQueryAllStudent);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
Student stu = new Student(resultSet.getInt(1), resultSet.getInt(2), resultSet.getString(3),
resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getInt(7));
studentsList.add(stu);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
return studentsList;
}
}
-
建立studentsList.jsp用於呈現學生資訊
<%@page import="com.njupt.javaweb.Student"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" cellspacing="0px" cellpadding="10px">
<!-- 表格標題 -->
<caption>學生資訊</caption>
<!-- 表首行 -->
<tr>
<th>流水號</th>
<th>成績型別</th>
<th>身份證號</th>
<th>考試編號</th>
<th>學生姓名</th>
<th>家庭住址</th>
<th>考試成績</th>
</tr>
<%
List<Student> studentsList = (List<Student>)request.getAttribute("studentsList");
for(Student stu : studentsList){
%>
<tr>
<td><%= stu.getFlowId() %></td>
<td><%= stu.getType() %></td>
<td><%= stu.getIdCard() %></td>
<td><%= stu.getExamCard() %></td>
<td><%= stu.getStudentName() %></td>
<td><%= stu.getLocation() %></td>
<td><%= stu.getGrade() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
-
程式碼執行起來點選“查詢學生資訊”的超連結後的結果如下
上面程式碼只是一個Demo僅做參考,和自己學習,還有很多缺陷。