- 本次更新增加了管理员界面对于学生信息的管理(增删改查)
- 遇到的问题:不同页面之间跳转时候,数据的传输挺麻烦,在点击链接删除或者修改的时候,需要将原信息反馈到客户端,本来想利用一个数组来传递值,结果发现获取到的一直是最新的数据的值,无法定位要修改的目标值,所以直接在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>
<button onClick="window.location.href='change_student.jsp'" ><i>修改学生</i></button>
<button onClick="window.location.href='user_main.jsp'"><i>查询学生</i></button>
<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);
}
}