1. 程式人生 > >JAVAEE案例: 基於javaweb、mysql的 學生資訊管理系統

JAVAEE案例: 基於javaweb、mysql的 學生資訊管理系統

此案例是基於JavaEE、mysql技術的學生資訊管理系統。
為了先對案例有個清楚的認識,這裡先貼上執行結果截圖:
1、索引頁面,進入系統。
索引頁面
2、主頁面:
主頁面
3、點選新增:
這裡寫圖片描述
4、刪除李琦琦一欄:
這裡寫圖片描述
5、修改馬衍碩:
這裡寫圖片描述

一、對資料庫的封裝:

在資料庫庫部分,通過Java程式碼對資料庫操作進行封裝,其中涉及到很多技術和技巧,請持續關注我的部落格,後續會有詳細介紹。

對資料庫的封裝程式碼:
(1)這裡是定義資料庫操作元素的結構,操作元素有三個屬性,即deptno、dname、loc,分別對應學生資訊的學號、姓名、家庭住址。

Dept.java

package com.neusoft.dao;

//實體類
public class Dept {
private int deptno;//
private String dname;//
private String loc;//
private String value1;//
private String value2;//
public int getDeptno() {
	return deptno;
}
public void setDeptno(int deptno) {
	this.deptno = deptno;
}
public String getDname() {
	return dname;
}
public void setDname(String dname) {
	this.dname = dname;
}
public String getLoc() {
	return loc;
}
public void setLoc(String loc) {
	this.loc = loc;
}
public String getValue1() {
	return value1;
}
public void setValue1(String value1) {
	this.value1 = value1;
}
public String getValue2() {
	return value2;
}
public void setValue2(String value2) {
	this.value2 = value2;
}



}

(2)連線資料庫:

DeUtils.java

package com.neusoft.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DbUtils {
private DbUtils(){}
private static final String url="jdbc:mysql://localhost:3306/smartstyle";;
private static final  String user="root";
private static  final String password="857289";
static
{
	//1.建立驅動類物件
	//new oracle.jdbc.driver.OracleDriver();
	try {
		//Class.forName("oracle.jdbc.driver.OracleDriver");
		Class.forName("com.mysql.jdbc.Driver");
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	}
public static  Connection getConnection()
{
	Connection conn=null;	
	try {
		conn=DriverManager.getConnection(url, user, password);
		System.out.println("Ok");
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return conn;
	}
public static void closeConnection(Connection conn)
{
	try {
		if(conn!=null)
		{
		conn.close();
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	}
public static void closePreparedStatement(PreparedStatement pstmt)
{
	try {
		if(pstmt!=null)
		{
		pstmt.close();
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	}
public static void closeResultSet(ResultSet rs)
{
	//4.關閉資料庫
			try {
				if(rs!=null)
				{
				rs.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}


public static void beginTransaction(Connection conn) {
	try {
		conn.setAutoCommit(false);
	} catch (SQLException ex) {
		ex.printStackTrace();
	}
}

public static void commit(Connection conn) {
	try {
		conn.commit();
		conn.setAutoCommit(true);
	} catch (SQLException ex) {
		ex.printStackTrace();
	}
}

public static void rollback(Connection conn) {
	try {
		conn.rollback();
		conn.setAutoCommit(true);
	} catch (SQLException ex) {
		ex.printStackTrace();
	}
}
public static void main(String[] ars)
{
	 getConnection();
	}
}

(3)對資料庫操作的封裝:
這裡的介面定義了對資料庫操作的方法:
DeptDao.java

package com.neusoft.dao;

import java.util.List;


public interface DeptDao {
void insertDept(Dept dept);
void updateDept(Dept dept);
void deleteDept(int deptno);
List<Dept>  getDepts();
Dept getDeptByDeptno(int deptno);

}

這裡實現了對資料庫操作的封裝:
在建立資料庫連線的基礎上,通過向資料庫傳送要執行的SQL語句,達到操作資料庫的目的。

DeptDaoImpl.java

package com.neusoft.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class DeptDaoImpl implements DeptDao {

	@Override
	public void insertDept(Dept dept) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement pstmt=null;
				try {
					conn=DbUtils.getConnection();
					//3.操作資料庫					
					String sql="insert into dept(deptno,dname,loc) values(?,?,?)";					
					pstmt=conn.prepareStatement(sql);
					pstmt.setInt(1, dept.getDeptno());
					pstmt.setString(2, dept.getDname());
					pstmt.setString(3,dept.getLoc());
					
					pstmt.executeUpdate();
					
				}  catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally
				{
			
				//4.關閉資料庫		
					DbUtils.closePreparedStatement(pstmt);
					DbUtils.closeConnection(conn);
				}
			
				
	}

	@Override
	public void updateDept(Dept dept) {
		// TODO Auto-generated method stub
Connection conn=null;
PreparedStatement pstmt=null;


try {
	conn=DbUtils.getConnection();
	String sql="update dept set dname=?,loc=? where deptno=?";
	pstmt=conn.prepareStatement(sql);
	pstmt.setString(1, dept.getDname());
	pstmt.setString(2, dept.getLoc());
	pstmt.setInt(3, dept.getDeptno());
	
	pstmt.executeUpdate();
	
} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}finally
{
	//4.關閉資料庫		
	DbUtils.closePreparedStatement(pstmt);
	DbUtils.closeConnection(conn);
	}

	}

	@Override
	public void deleteDept(int deptno) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement pstmt=null;
		
		try {
			conn=DbUtils.getConnection();
			String sql="delete from dept where deptno=?";
			pstmt=conn.prepareStatement(sql);
			pstmt.setInt(1, deptno);
			
			pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
			//4.關閉資料庫		
			DbUtils.closePreparedStatement(pstmt);
			DbUtils.closeConnection(conn);
		}
		
	}

	@Override
	public List<Dept> getDepts() {
		Connection conn=null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;
		List<Dept>  depts=new ArrayList<Dept>();
		try {
			conn=DbUtils.getConnection();
			//3.操作資料庫			
			String sql="select * from dept";			
			pstmt=conn.prepareStatement(sql);
			
			rs=pstmt.executeQuery();
			
			while(rs.next())
			{
				Dept dept=new Dept();
				dept.setDeptno(rs.getInt("DEPTNO"));//
				dept.setDname(rs.getString("DNAME"));
				dept.setLoc(rs.getString("LOC"));
				depts.add(dept);
				
			}
			
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
	    DbUtils.closeResultSet(rs);
		DbUtils.closePreparedStatement(pstmt);
		DbUtils.closeConnection(conn);
		
		}
		return depts;
	}

	@Override
	public Dept getDeptByDeptno(int deptno) {
		Connection conn=null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;
		Dept  dept=new Dept();
		try {
			conn=DbUtils.getConnection();
			//3.操作資料庫			
			String sql="select * from dept where deptno=?";			
			pstmt=conn.prepareStatement(sql);
			pstmt.setInt(1, deptno);
			rs=pstmt.executeQuery();
			
			if(rs.next())
			{
				dept.setDeptno(rs.getInt("DEPTNO"));
				dept.setDname(rs.getString("DNAME"));
				dept.setLoc(rs.getString("LOC"));
			}
			
			
		}catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
	    DbUtils.closeResultSet(rs);
		DbUtils.closePreparedStatement(pstmt);
		DbUtils.closeConnection(conn);
		
		}
		return dept;
	}

}

(4)為了程式碼的簡潔,再封裝:
DeptService.java

package com.neusoft.service;

import java.util.List;

import com.neusoft.dao.Dept;

public interface DeptService {
	void insertDept(Dept dept);
	void updateDept(Dept dept);
	void deleteDept(int deptno);
	List<Dept>  getDepts();
	Dept getDeptByDeptno(int deptno);
}

DeptServiceImpl.java

package com.neusoft.service;

import java.util.List;

import com.neusoft.dao.Dept;
import com.neusoft.dao.DeptDao;
import com.neusoft.dao.DeptDaoImpl;

public class DeptServiceImpl implements DeptService {

	@Override
	public void insertDept(Dept dept) {
		// TODO Auto-generated method stub
		DeptDao deptDao=new DeptDaoImpl();
		deptDao.insertDept(dept);
	}

	@Override
	public void updateDept(Dept dept) {
		// TODO Auto-generated method stub
		DeptDao deptDao=new DeptDaoImpl();
	deptDao.updateDept(dept);
	}

	@Override
	public void deleteDept(int deptno) {
		// TODO Auto-generated method stub
		DeptDao deptDao=new DeptDaoImpl();
		deptDao.deleteDept(deptno);
	}

	@Override
	public List<Dept> getDepts() {
		DeptDao deptDao=new DeptDaoImpl();
		
		return deptDao.getDepts();
	}

	@Override
	public Dept getDeptByDeptno(int deptno) {
		// TODO Auto-generated method stub
		DeptDao deptDao=new DeptDaoImpl();
		return deptDao.getDeptByDeptno(deptno);
	}

	       

}

貼個程式碼分佈圖
這裡寫圖片描述

這樣,mysql的連線封裝基本完成,接下來是web部分。

二、Web部分:
1、各個頁面的JSP程式碼:
(1)index頁面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="DeptServlet?service=all">學生資訊管理系統</a>
</body>
</html>

(2)主頁面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.List,com.neusoft.dao.Dept"%>
       <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="<%=basePath %>dept/insert.jsp" method="post">

<table border="1" width="80%" align="center" cellspacing="0">
<caption>學生資訊表</caption>
<tr><th>學生學號</th><th>學生姓名</th><th>家庭地址</th><th>操作</th><tr>
<%List<Dept>  depts=(List<Dept>)request.getAttribute("depts");
if(depts==null)
{
%>
<tr><td colspan="3">沒有符合條件的資料</td></tr>
<%}else{ 
	for(Dept dept:depts)
	{
 
%>
<tr><td><%=dept.getDeptno() %></td>
<td><%=dept.getDname() %></td>
<td><%=dept.getLoc()  %></td>
<td><a href="DeptServlet?service=modify&deptno=<%=dept.getDeptno()%>">修改</a>
<a href="DeptServlet?service=delete&deptno=<%=dept.getDeptno() %>" >刪除</a></td>
<tr>

<%}} %>
</table>
<input type="submit" value="新增" >
</form>
</body>
</html>

(3)修改頁面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="com.neusoft.dao.Dept"%>
       <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="<%=basePath %>DeptServlet?service=update" method="post">

<center>
<h1>修改資訊</h1>
<% Dept dept=(Dept)request.getAttribute("dept"); %>
學生學號:<input type="text" name="deptno" value="<%=dept.getDeptno()   %>"><br>
學生姓名:<input type="text" name="dname" value="<%=dept.getDname() %>"><br>
家庭地址:<input type="text" name="loc" value="<%=dept.getLoc()%>  "><br>
<input type="submit" value="修改資訊">

</body>
</html>

2、伺服器端:
對於客戶端不同的HTTP請求對資料庫進行不同的操作,並跳轉頁面。

package com.neusoft.controller;

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;

import com.neusoft.dao.Dept;
import com.neusoft.service.DeptService;
import com.neusoft.service.DeptServiceImpl;

/**
 * Servlet implementation class DeptServlet
 */
@WebServlet("/DeptServlet")
public class DeptServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public DeptServlet() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		String service=request.getParameter("service");
		if("all".equals(service))
		{
			DeptService deptService=new DeptServiceImpl();
			List<Dept> depts=deptService.getDepts();
			
			request.setAttribute("depts", depts);
			
			request.getRequestDispatcher("dept/main.jsp").forward(request, response);
		}else if("add".equals(service))
		{
			//處理請求
			int deptno=Integer.parseInt(request.getParameter("deptno"));
			String dname=request.getParameter("dname");
			String loc=request.getParameter("loc");
			Dept dept=new Dept();
			dept.setDeptno(deptno);
			dept.setDname(dname);
			dept.setLoc(loc);
			
			//呼叫相應的業務邏輯
			DeptService deptService=new DeptServiceImpl();
			deptService.insertDept(dept);
			
			//找到某個檢視響應回去
			request.getRequestDispatcher("DeptServlet?service=all").forward(request, response);
		}else if("update".equals(service))
		{
			//處理請求
			int deptno=Integer.parseInt(request.getParameter("deptno"));
			String dname=request.getParameter("dname");
			String loc=request.getParameter("loc");
			Dept dept=new Dept();
			dept.setDeptno(deptno);
			dept.setDname(dname);
			dept.setLoc(loc);
			
			//呼叫相應的業務邏輯
			DeptService deptService=new DeptServiceImpl();
			deptService.updateDept(dept);
			
			//找到某個檢視響應回去
		
			request.getRequestDispatcher("DeptServlet?service=all").forward(request, response);
			
		}
		else if("delete".equals(service))
		{
			
			int deptno=Integer.parseInt(request.getParameter("deptno"));
			//呼叫相應的業務邏輯
			DeptService deptService=new DeptServiceImpl();
			deptService.deleteDept(deptno);
			
			//找到某個檢視響應回去
			request.getRequestDispatcher("DeptServlet?service=all").forward(request, response);
			
		}else if("modify".equals(service))
		{
			int deptno=Integer.parseInt(request.getParameter("deptno"));
			//呼叫相應的業務邏輯
			DeptService deptService=new DeptServiceImpl();
		Dept dept=	deptService.getDeptByDeptno(deptno);
		
		request.setAttribute("dept", dept);
			//找到某個檢視響應回去
			request.getRequestDispatcher("dept/update.jsp").forward(request, response);
			
		}
	}

}

完整專案我已上傳至我的資源

相關推薦

JAVAEE案例: 基於javawebmysql學生資訊管理系統

此案例是基於JavaEE、mysql技術的學生資訊管理系統。 為了先對案例有個清楚的認識,這裡先貼上執行結果截圖: 1、索引頁面,進入系統。 2、主頁面: 3、點選新增: 4、刪除李琦琦一欄: 5、修改馬衍碩: 一、對資料庫的封裝: 在資料庫庫部分,通

中職學生- 學生資訊管理系統JavaWeb】Java+Servlet+Mysql+Jsp

1功能結構 2專案架構 3包及Java類說明 4資料庫設計 二功能實現 1登陸 2系統主介面 3新增學生資訊 4學生資訊維護 5根據學號查詢學生 6更新學生資訊 7刪除學生資訊 8更

學生資訊管理系統JavaWeb】SSH+Mysql+Jsp

一、設計說明   1、功能結構 2、專案架構 3、包及Java類說明 4、資料庫設計 二、功能實現 1、登陸 2、系統主介面      登陸時呼叫LoginServlet,該Servlet完成相應的邏輯操作(判斷使用者名稱、密碼、 驗證碼是否為空)、並且呼叫

學生資訊管理系統JavaWeb】Java+Servlet+Mysql+Jsp

一、設計說明   1、功能結構 2、專案架構 3、包及Java類說明 4、資料庫設計 二、功能實現 1、登陸 2、系統主介面      登陸時呼叫LoginServlet,該Servlet完成相應的邏輯操作(判斷使用者名稱、密碼、 驗證碼是否為空)、並且呼叫相應的UserDao資料庫訪問層的

基於JavaSwing+MySql學生資訊管理系統

最近的生活感想 因為最近在寫一個和QQ差不多的聊天軟體,所以最近時間比較緊。昨天學校臨時發了一個作業。花了大概半天的時間寫了一個介面版本的操作資料庫的學生資訊管理 系統,因為時間很少所以介面就隨便寫了寫,程式碼也沒有優化。大家將就看吧。先上介面圖片!

C++課設案例 學生資訊管理系統

#include <iostream> #include <string> #include <windows.h> #include <iostream> #include <fstream> #include <conio.h&g

基於express的學生資訊管理系統

基於express的學生資訊管理系統 專案地址 專案簡介 簡單的學生資訊管理系統,後臺基於express,資料庫mysql,前端用到了一點vue,這次的團隊專案我主要是負責後端的部分,所以這裡對於前端程式碼不再贅述,只介紹後端部分以及一點點前端的js程式碼。 後端部分 //server.js var

基於java的現代物流資訊管理系統開發,javaweb畢業設計

**基於java的現代物流資訊管理系統開發,javaweb畢業設計** 基於java的現代物流資訊管理系統開發mysql資料庫建立語句 基於java的現代物流資訊管理系統開發oracle資料庫建立語句 基於java的現代物流資訊管理系統開發sqlserver資料庫建立語句

學生資訊管理系統--(Java+MySQL實現)

基於Java swing+MySQL實現學生資訊管理系統:主要實現JDBC對學生資訊進行增刪改查,應付一般課設足矣,分享給大家。(由於篇幅原因,程式碼未全部列出,如有需要留下郵箱) 1、開發環境:jdk7+MySQL5+win7 程式碼結構:model-dao

c語言學生資訊管理系統(連結串列檔案)

#include<stdio.h>                                               /*呼叫標頭檔案*/ #include<stdlib.h> #include<string.h> #inclu

javaEE專案實踐——學生資訊管理系統

  一、專案執行環境及工具 myeclipse2014 + tomcat 7.x/tomcat 8.x + jdk 1.8 二、專案開發週期 10天(前端介面直接拿來使用的還有系統很多功能未能去實現,僅供開發學習); 三、開發期間實現的功能 時間緊、任務重、基礎差  ——>

java(swing)+mysql實現學生資訊管理系統

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.Action

階段1:手把手教你做一個jsp servlet mysql實現的學生資訊管理系統附帶視訊開發教程和完整原始碼

繼前段時間我出了四個階段的Java swing的學生資訊系統後,大家反響不錯,所以緊接著就開始錄製Java web的學生系統,還是跟以前一樣,分為四個階段,每個階段都是獨立完整的系統,第一階段實現的功能是基本的學生資訊管理功能,包括學生資訊的新增、修改、刪除、查詢,班級資訊的

Python初識函式閏年判斷函式,水仙花數學生資訊管理系統函式實現輸入某年某月某日,判斷這一天是這一年的第幾天

練習題1初識函式要求:1、函式是什麼? 為什麼要使用函式?答:如果在開發程式時,需要某塊程式碼多次,但是為了提高編寫的效率以及程式碼的重用,所以把具有獨立功能的程式碼塊組織為一個小模組,這就是函式為了程式碼重用性2、定義、呼叫函式的格式分別是什麼?答:定義函式:def 函式名

【實戰】javaweb學生資訊管理系統

javaweb學生資訊管理系統總的來說整個專案通過Maven來管理jar包,實現了學生資訊管理系統的登入,增刪改查等基本操作,然後不喜寫css樣式,頁面有點醜,但是程式碼中的邏輯基本正確。專案下載連結 csdn下載連結  github地址一、專案架構  二、資料庫的設計操作1

基於WEB的學生資訊管理系統,java畢業設計專案

**基於WEB的學生資訊管理系統,java畢業設計專案** 基於WEB的學生資訊管理系統mysql資料庫建立語句 基於WEB的學生資訊管理系統oracle資料庫建立語句 基於WEB的學生資訊管理系統sqlserver資料庫建立語句 基於WEB的學生資訊管理系統spr

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

專案簡介 1)在MySQL資料庫中建立一個StudentGradeTable資料表,新增欄位FlowId,Type,IdCard,ExamCard,StudentName,Location,Grade並錄入幾條資料 2)簡單實用MVC設計模式,model為Stude

學生資訊管理系統JavaWeb

前言: 最近期末的Java大作業大部分都是要Gui(Swing技術) 書本教的也是 Swing技術,但是那介面實在是不忍直視,如果真的要做桌面應用之類的 根本輪不到Java的Swing,所以我

SSH JavaWeb學生資訊管理系統實現

上週週末斷網。。。。。無聊的時候寫的demo,SSH的。 SIMS(Student Information Management System,學生資訊管理系統) 包括登入、學生資訊錄入,修改,刪除,查詢,資料批量匯出等等功能。 開發環境:Eclipse ,jdk1.6 框

(Servlet+Jsp+MYSQL)學生資訊管理---升級版

前面的博文中學生資訊管理實現了增刪改查,後來一直想做一個酷酷的登入介面,終於花時間實現了。直接上圖:管理員使用者:admin密碼:admin當輸入錯誤使用者名稱或密碼後會報錯:正確輸入後會進入主介面,也就是之前初級版的學生資訊管理系統主介面接下來是說一下登入功能實現的邏輯和程