1. 程式人生 > >JavaWeb學生資訊管理系統_查詢V1.0

JavaWeb學生資訊管理系統_查詢V1.0

  • 專案簡介

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僅做參考,和自己學習,還有很多缺陷。