【JavaWeb實現數據庫應用系統】第五次進度(學生的增刪改查,及對應的界面、Servlet)

  • 本次更新增加了管理員界面對於學生信息的管理(增刪改查)
  • 遇到的問題:不同頁面之間跳轉時候,數據的傳輸挺麻煩,在點擊鏈接刪除或者修改的時候,需要將原信息反饋到客戶端,本來想利用一個數組來傳遞值,結果發現獲取到的一直是最新的數據的值,無法定位要修改的目標值,所以直接在URL中傳遞值來解決以上問題。
  • 界面還是一如既往的難設計;
  • 對應課程的增刪改查也幾乎一樣,接下來就是學生選課的處理。
  • 關於傳遞數據(中文亂碼的問題),不能直接使用接收的上個頁面傳遞過來的數據,需要進行一下處理:
		String sname_2 = (String)request.getParameter("sname");
		//轉化編碼方式
		String sname = new String(sname_2.getBytes("ISO-8859-1"),"utf-8");

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
delete_student.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="util.Read_user" %>
<%@ page import="util.Read_student" %>
<%@ page import = "entity.Student" %>
<%@ page import="entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="javax.servlet.http.HttpSession" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<SCRIPT LANGUAGE=javascript> 

		function logout() { 
		 var msg = "您真的確定要退出嗎?";
		 if (confirm(msg)==true){ 
		  	return true; 
		 }else{ 
		  		return false; 
		 	} 
		} 
		function delete_confirm(){
			var msg = "您真的確定要刪除嗎?";
			if(confirm(msg) == true){
				return true;
			}else{
				return false;
			}
		}
		 function check(v){
		        var r=/^[0-9]+.?[0-9]*$/;
		        if(!r.test(v)){ 
		            alert('只能輸入數內字容');
		        }
		    }
		 function jump(){
			 	window.location.href='add.jsp';
			}
	</SCRIPT> 
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
		<style type="text/css">
			
			#all { width: 80%; height: 550px; background-color: pink;
			margin: auto;overflow-y: auto;}
			#nav{height: 100px; background-color: lightblue; text-align:center;color:yellow;}
			#mid{height: 350px;}
			#mid #midleft{width: 20%; height:350px ;float: left; text-align:center;}
			#mid #midmid{width: 70%; height:350px ; background-color: lime;float: left;overflow-y: auto;overflow-x: auto;}
			#mid #midright{width: 10%; height:350px ; background-color: khaki;float: left;}
			#foot{height: 90px; background-color: yellow; text-align:center;padding-top:15px;
				padding-left:30px;align:center;}
			
			@media only screen and (max-width:1400px ) {
				#all{width: 80%;}
			}
			@media only screen and (max-width:700px ) {
				#all{width: 100%;}
			}
	
			#all ul{ margin: 0px; padding: 0px; list-style-type: none;
				height: 60px; background-color: #C71585;}
			#all li{ float: left; width: 20%;height: 60px;}
			#all ul li a{display: block;height: 45px; text-align: center; font-size: 22px;
			font-family: "courier new"; font-weight: 700; color: white; text-decoration: none;

				padding-top:15px;
				border-right: 2px solid white;
			}
			
			
			#all ul li a#a1{background-color: black;}
			#all ul li a#a2{background-color: forestgreen;}
			#all ul li a#a3{background-color: blue;}
			#all ul li a#a4{background-color: forestgreen;}
			#all ul li a#a5{background-color: blue;}
			#all ul li a:hover {background-color: crimson;}
			#all ul li a#a1:hover {background-color: gray;}
			#all ul li a#a2:hover {background-color: gray;}
			
		
	        .search{
	        	margin-left:5%;
	            width: 90%;            
	            display: flex;
	            text-align:center;
	            /*border: 1px solid red;*/
	        }
	        .search button{
	            float: right;
	            flex: 1;
	            height: 30px;
	            background-color: red;
	            color: white;
	            border-style: none;
	            outline: none;
	        }
	        .search button i{
	            font-style: normal;
	        }
	        .search button:hover{
	            font-size: 16px;
	        }
			
		</style>
</head>
<body>
	<div id="all">
			<div id="nav">
				<ul>
					<li><a href="user_main.jsp" id="a1" >學生列表</a></li>
					<li><a href="user_main.jsp" id="a2">選修課程</a></li>
					<li><a href="course.jsp" id = "a3">課程成績</a></li>
					<li><a href="" id = "a4">綜合排名</a></li>
					<li><a href="login.jsp" id = "a5" onclick="javascript:return logout()">退出登錄</a></li>
				</ul>
				學生信息如下
				
			</div>
			
			
			<div id="mid">
				<div id="midleft">
					<br>
					當前用戶:
					<br><br>
					<table border = '1' cellspacing="1">
						
						<tr>
							<%	
								String username = (String)session.getAttribute("username");
								System.out.println(username);
								Read_user readuser = new Read_user();
								List<?> list = readuser.read_user(username);
								for(Object u1:list){
									User u = (User)u1;
								%>
							
							<td width="200px">姓名</td>
							<td width="200px"><%=u.getUsername() %></td>
						</tr>
						<tr>
							<td>學校</td>
							<td><%=u.getSchool_name() %></td>
						</tr>
						<tr>
							<td>生日</td>
							<td><%=u.getBirthday() %></td>
						</tr>
						<tr>
							<td>電話</td>
							<td><%=u.getMobile() %></td>
						</tr>
						<tr>
							<td>身份</td>
							<td>
								<%
									if(u.getIs_admin() == 1){
										out.print("管 理 員");
									}else{
										out.print("普通用戶");
									}
								%>
							</td>
						</tr>
						<tr>
							<td>頭像</td>
							<td>null</td>
						</tr>
							<%
								}
							%>
					
					</table>
				
				</div>
				<div id="midmid">
					<table border = '1' style="margin:auto ;text-align:center" >
					<tr>
						<td width="200px">學號</td>
						<td width="200px">姓名</td>
						<td width="200px">性別</td>
						<td width="200px">年齡</td>
						<td width="200px">專業</td>
						<td width="100px"></td>
					</tr>
					<%
						Read_student readstudent = new Read_student();
						List<?> list2 = readstudent.read_student();
						
						int i = 0;
						for(Object u1:list2){
							i++;
						}
						Student u[] = new Student[i];
						int h = 0;
						for(Object u1:list2){
							u[h] = (Student)u1;
					%>
						<tr>
							<td> <%=u[h].getSno() %> </td>
							<td> <%=u[h].getName() %> </td>
							<td> <%=u[h].getSex() %> </td>
							<td> <%=u[h].getAge() %> </td>
							<td> <%=u[h].getDept() %> </td>
						
							<td> <a href="DeleteStudentServlet?sno=<%=u[h].getSno() %>" onclick="javascript:return delete_confirm()">刪除</a>
							
						</tr>
					<%
						h++;
						}
					%>
					
				</table>
				</div>
				<div id="midright">
				<%
					
					java.util.Date d = new java.util.Date();
					java.text.SimpleDateFormat dformat = new java.text.SimpleDateFormat("yyyy-MM-dd");
					String datetime = dformat.format(d);
					String time =  (new java.text.DecimalFormat("00")
							.format(d.getHours())) + ":" + (new java.text.DecimalFormat("00")
									.format(d.getMinutes()));
				%>
				<br>
					當前時間:
					<br><br>
					<table border = '1' cellspacing="1">
					<tr>
						<td width = "200px"><%=datetime %></td>
					</tr>
					<tr>
						<td width="200px"><%=time %></td>
					</tr>
					
					</table>
				</div>
			</div>
			<div id="foot">

				 	<div class="search" >
						<button onClick="window.location.href='add.jsp'"><i>添加學生</i></button>&nbsp;&nbsp;&nbsp;
						<button onClick="window.location.href='change_student.jsp'" ><i>修改學生</i></button>&nbsp;&nbsp;&nbsp;
						<button onClick="window.location.href='user_main.jsp'"><i>查詢學生</i></button>&nbsp;&nbsp;&nbsp;
						<button onClick="window.location.href='DeleteStudentServlet'"><i>刪除學生</i></button>
					
		        	</div>
					
				
			</div>
		</div>

</body>
</html>

DeleteStudentServlet:

package servlet;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mysql.jdbc.Connection;

import db_connect.DBConnect;

/**
 * Servlet implementation class DeleteStudentServlet
 */
public class DeleteStudentServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String sno = request.getParameter("sno");
		System.out.println("sno = " + sno);
		
		Statement statement = null;
		ResultSet resultSet = null;
		Connection connection = (Connection) DBConnect.getConnection();
		
		String sql = "delete from student where Sno = \'" + sno + "\'";
		System.out.println(sql);
		
		try {
			statement = connection.createStatement();
			statement.executeQuery(sql);
			System.out.println("Success!");
		}catch(SQLException e) {
			e.printStackTrace();
		}
		
		String path = "admin.jsp";
		
		RequestDispatcher dispatcher = request.getRequestDispatcher(path);
		
		dispatcher.forward(request, response);
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

ChangeStudentServlet:

package servlet;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.mysql.jdbc.Connection;

import db_connect.DBConnect;

/**
 * Servlet implementation class ChangeStudentServlet
 */
public class ChangeStudentServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		String sname = null;
		String sage= null;
		String ssex= null;
		String sdept= null;
		
		HttpSession s = request.getSession(true);
		String sno = request.getParameter("sno");
		System.out.println("sno = " + sno);
		
		Statement statement = null;
		ResultSet resultSet = null;
		Connection connection = (Connection) DBConnect.getConnection();
		
		String sql = "select * from student where Sno = \'" + sno +"\'";
		System.out.println(sql);
		
		try {
			statement = connection.createStatement();
		}catch(SQLException e) {
			e.printStackTrace();
		}
		
		try {
			//將所有信息存入結果集
			resultSet = statement.executeQuery(sql);
		}catch(SQLException e) {
			e.printStackTrace();
		}
		
		try {
			while(resultSet.next()) {
				sname = (String)resultSet.getString("Sname");
				sage = (String)(resultSet.getInt("Sage")+"");
				ssex = (String)resultSet.getString("Ssex");
				sdept = (String)resultSet.getString("Sdept");
				
				System.out.println(sname + sage + ssex + sdept + sno);
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		HttpSession ss = request.getSession(true);
		ss.setAttribute("SNO", sno);
		ss.setAttribute("SNAME", sname);
		ss.setAttribute("SAGE", sage);
		ss.setAttribute("SDEPT", sdept);
		ss.setAttribute("SSEX", ssex);
		RequestDispatcher dispatcher = request.getRequestDispatcher("change_student_middle.jsp");
		
		dispatcher.forward(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

change_student_middle.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="util.Read_user" %>
<%@ page import="util.Read_student" %>
<%@ page import = "entity.Student" %>
<%@ page import="entity.User" %>
<%@ page import="java.util.List" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">

    function check() {
        var name1 = document.getElementById("sno");
        var name2 = document.getElementById("name2");
        var mima1 = document.getElementById("sage");
        var mima2 = document.getElementById("mima2");
    }
    function check1() {
        var name1 = document.getElementById("sno");
        var name2 = document.getElementById("name2")
        var ref = /^[0-9]{4,11}$/
        if (name1.value.length > 11 || name1.value.length < 4) {
            name2.innerHTML = "學號應爲4到11位,由數字組成".fontcolor("red");
            name1.focus();
            return false;
        } else {
            name2.innerHTML = "".fontcolor("green");
        }
        if (!ref.test(name1.value)) {
            name2.innerHTML = "".fontcolor("red");
            name1.focus();
            return false;
        } else {
            name2.innerHTML = "".fontcolor("green");
        }
    }
    function check2() {
        var mima1 = document.getElementById("sage");
        var mima2 = document.getElementById("mima2");
        var ref2 = /^[0-9]{0,3}$/
        if (mima1.value.length > 3 || mima1.value.length < 1) {
            mima2.innerHTML = "年齡應爲1到3位,由數字組成".fontcolor("red");
            mima1.focus();
            return false;
        } else {
            mima2.innerHTML = "".fontcolor("green");
        }
    }
    function changeImg(){
   	 
	 	document.getElementById("validateCodeImg").src="../DrawImageServlet?"+Math.random();
	 	
	 }
</script>
	<style type="text/css">
    	.tips{
	    	
	    	background-color:red;
	    
	    }
	     img{
	    	width: 220px;   
		    height: 60px;  
		    margin:0 ,0 ,0 ,0;
		    padding: 10px;   
		    color: blue;   
		    text-shadow:1px 1px 1px;   
	    }
	    
	    .div0{
	    		 
	    		text-align:center;
	    	}
    	
        * {
       		 
            box-sizing: border-box;
        }
        body {
       	 overflow-y: auto;
            margin: 0;
            padding: 0;
            font: 16px/20px microsft yahei;
         }
        .wrap {
        	overflow-y: auto;
            width: 100%;
            height: 100%;
            padding: 10% 0;
            position: fixed;
            opacity: 0.8;
            background: white;
        }
        .container {
            width: 60%;
            margin: 0 auto;
        }
        .container h1 {
            text-align: center;
            color: #FFFFFF;
            font-weight: 500;
        }
        .container input {
            width: 320px;
            display: block;
            height: 36px;
            border: 1;
            outline: 0;
            padding: 6px 10px;
            line-height: 24px;
            margin: 32px auto;
            -webkit-transition: all 0s ease-in 0.1ms;
            -moz-transition: all 0s ease-in 0.1ms;
            transition: all 0s ease-in 0.1ms;
        }
        .container input[type="text"] , .container input[type="password"]  {
            background-color: white;
            font-size: 16px;
            color: #50a3a2;
        }
        .container input[type='submit'] {
            font-size: 16px;
            letter-spacing: 0px;
            color: #666666;
            background-color: #FFFFFF;
        }
        .container input[type='reset'] {
            font-size: 16px;
            letter-spacing: 0px;
            color: #666666;
            background-color: #FFFFFF;
        }
        .container input:focus {
            width: 400px;
        }
        .container input[type='submit']:hover {
            cursor: pointer;
            width: 400px;
        }
        .to_login{
            color: #a7c4c9;
        }
        .text{
            color: #e2dfe4;
        } 
        .search{
	        	margin-left:5%;
	            width: 90%;            
	            display: flex;
	            text-align:center;
	           border: 1px solid red;
	        }
        .search button{
            float: right;
            flex: 1;
            height: 30px;
            background-color: red;
            color: white;
            border-style: normal;
            outline: none;
        }
        .search button i{
            font-style: normal;
        }
        .search button:hover{
            font-size: 16px;
        }
    </style>
</head>
<body>
	 <div class = "search">
	 	<button onClick="window.location.href='teacher/admin.jsp'"><i>返回菜單</i></button>
	 	<button onClick="window.location.href='login.jsp'"><i>退出登錄</i></button>
	 </div>
    <div class="wrap">

    <div class="container">

		 <center><h1 style="color:red">
			<%	
				String user = (String)request.getAttribute("msg");
				if(user != null){
					out.println(user);
				}
			%>
		</h1>
		</center>
       
		<center><h1 style="color:black">
			<%	
				String user2 = (String)request.getAttribute("msg");
				if(user2 == null){
					out.println("歡迎修改學生信息");
				}
			%>
		</h1>
		</center>
		<%
			String sno = (String)session.getAttribute("SNO");
			String sname = (String)session.getAttribute("SNAME");
			String age = (String)(session.getAttribute("SAGE"));
			String sdept = (String)session.getAttribute("SDEPT");
			String ssex = (String)session.getAttribute("SSEX");
		%>

        <form action = "ChangeStudentMiddleServlet" method="post" onsubmit="return check()">
      	<label><input type="text" required="required" placeholder="原學號:<%=sno %>" name = "sno" id = "sno" onchange="check1()" /></label><center><span id="name2"></span></center>
        <label><input type="text" required="required" placeholder="原姓名:<%=sname %>" name = "sname" /></label>
        <label><input type="text" required="required" placeholder="原年齡:<%=age %>" id = "sage" name = "sage" onchange="check2()"/></label><center><span id="mima2"></span></center>
        
        <label><input type="text" required="required" placeholder="原性別:<%=ssex %>" name = "ssex"/></label>
        <label><input type="text" required="required" placeholder="原專業:<%=sdept %>" name = "sdept"/></label>
 
        <input type="text" required="required" placeholder="請輸入下方驗證碼,點擊可以刷新" name = "check"/>
        <div class = "div0">
        <img alt="驗證碼看不清,換一張" src="DrawImageServlet" id="validateCodeImg" onclick="changeImg(this,'nl')">
        </div>  
		  	<input type="submit" value="提交"/>
        </form>

    </div>
</body>
</html>

AddStudentServlet:

package servlet;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.Pattern;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mysql.jdbc.Connection;

import db_connect.DBConnect;

/**
 * Servlet implementation class AddStudentServlet
 */
public class AddStudentServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Statement statement = null;
		ResultSet resultSet = null;
		Connection connection = (Connection) DBConnect.getConnection();
		
		String sno = (String)request.getParameter("sno");
		
		String sname1 = (String)request.getParameter("sname");
		String sname = new String(sname1.getBytes("ISO-8859-1"),"utf-8");
		
		int sage = Integer.valueOf(request.getParameter("sage"));
		
		String sdept1 = (String)request.getParameter("sdept");
		String sdept = new String(sdept1.getBytes("ISO-8859-1"),"utf-8");
		
		String ssex1 = (String)request.getParameter("ssex");
		String ssex = new String(ssex1.getBytes("ISO-8859-1"),"utf-8");
		
		String path = "add.jsp";
		String msg = "";
		
		String sql = "insert into student values(\'" + sno + "\'," + "\'" + sname + "\',\'"
						+ ssex + "\'," + sage + ",\'" + sdept + "\')";
		System.out.println(sql);
		
		int temp = 0;//判斷註冊賬戶是否已經存在
		
		//接收客戶端瀏覽器提交上來的驗證碼
		
		String use_code = request.getParameter("check");
		
		//提取圖片的驗證碼
		String system_code =  (String) request.getSession().getAttribute("checkcode");
		
		Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$");
		if(use_code.equals(system_code)) {
			
			if(pattern.matcher(sno).matches()) {
				
				try {
					statement = connection.createStatement();
				}catch(SQLException e) {
					e.printStackTrace();
				}
				//查詢語句
				String sql2 = "select * from student";
				
				try {
					//將所有信息存入結果集
					resultSet = statement.executeQuery(sql2);
				}catch(SQLException e) {
					e.printStackTrace();
				}
				
				try {
					while(resultSet.next()) {
						String user_name = (String)resultSet.getString("Sno");
						System.out.println(user_name);
						if(sno.equals(user_name)) {
							temp = 1;
							break;
						}
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
				
				System.out.println(temp);
				if(temp == 0) {
					try {
						statement.executeUpdate(sql);
					} catch (SQLException e) {
						e.printStackTrace();
					}
					path = "add.jsp";
					msg = "添加成功";
				}else {
					path = "add.jsp";
					msg = "該學生已經存在,請勿重複添加";
				}
				
			}else {
				msg = "學號格式錯誤!";
				path = "add.jsp";
			}
			System.out.println(path + "" + msg);
			
		}else {
			path = "add.jsp";
			msg = "驗證碼錯誤,請重新輸入!";
		}
		
		request.setAttribute("msg", msg);
		
		RequestDispatcher dispatcher = request.getRequestDispatcher(path);
		
		dispatcher.forward(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章