项目源码及数据库:

链接:https://pan.baidu.com/s/1ktUyxbOI9lljWr-HRTRIiQ?pwd=1024
提取码:1024

目录

一.项目介绍

二.运行效果

1.登录界面

2.主界面(点击学号修改学生信息)

3.增加学生界面

​编辑

三.项目目录结构

四.代码展示

1.jsp及css代码

①登录界面代码(login.jsp)

②登录界面css(login.css)

③注册用户界面(register.jsp)

④注册用户界面css(index.css)

⑤修改密码界面(UpdateLoginID.jsp)

⑥注销用户界面(DeleteLoginID.jsp)

⑦登录成功主界面(index.jsp)

⑧登陆成功界面css(show.css)

⑨点击学号,修改学生信息界面(StudentInfo.jsp)

⑩增加学生信息(add.jsp)

⑪上传作业操作(UpAndDown.jsp)

2.三层架构

①表示层Servlet

②业务逻辑层Service

③数据访问层Dao

④通用的数据库操作(DBUtils.java)

3.JavaBean封装数据

①分页帮助类(Page.java)

②封装学生信息(Student.java)

4.项目所需jar包

五.数据库表格

①登录注册表格login

②学生信息表格student1


一.项目介绍

本系统主要实现对基于Javaweb学生信息管理系统所需的各项基本功能,能够对学生信息进行增删改查等功能,并可以实现用户注册、用户登陆等功能。

数据库:Mysql

开发工具:Eclipse

开发环境:JDK+Tomcat

二.运行效果

1.登录界面

2.主界面(点击学号修改学生信息)

3.增加学生界面

三.项目目录结构

四.代码展示

1.jsp及css代码

①登录界面代码(login.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link href="css/login.css" type="text/css" rel="stylesheet">
<meta charset="UTF-8"><title>学生信息管理系统-登录界面</title>
</head>
<body><form action="CheckLoginServlet" method="post"><div class="content"><div class="wrap"><div class="login-box"><div class="login-frame"><h2>用户登录 <a href="register.jsp"> 立即注册</a></h2><div class=item><input type="text" name="UID" placeholder="用户名"></div><div class=item><input type="password" name="upwd" placeholder="密码"></div><input type="submit" class="login-btn" value="登 录"><div class=item1><a href="UpdateLoginPwd.jsp"> 修改密码</a> <a    href="DeleteLoginID.jsp"> 注销用户</a></div><%String error = (String) request.getAttribute("error");String error0 = (String) request.getAttribute("error0");String error1 = (String) request.getAttribute("error1");String error2 = (String) request.getAttribute("error2");String error3 = (String) request.getAttribute("error3");String error4 = (String) request.getAttribute("error4");if (error != null) {if (error.equals("loginError")) {out.println("用户名或密码错误!登录失败!");} else if (error.equals("nologinError")) {response.sendRedirect("QueryStudentByPageServlet");}}if (error0 != null) {if (error0.equals("loginError")) {out.println("用户名或密码错误!修改失败!");} else if (error0.equals("nologinError")) {if (error1 != null) {if (error1.equals("noupdateError")) {out.println("密码修改成功!");}}}}if (error2 != null) {if (error2.equals("loginError")) {out.println("用户名或密码错误!注销失败!");} else if (error2.equals("nologinError")) {if (error3 != null) {if (error3.equals("nodeleteError")) {out.println("账户注销成功!");}}}}if (error4 != null) {if (error4.equals("noaddError")) {out.println("账户注册成功!");}}%></div></div></div></div></form></body></html>

②登录界面css(login.css)

*{margin:0;padding:0;}
a{text-decoration:none;color:#666;}
a:hover{text-decoration:underline;color:E4393C;
}
html,body
{font:12px/150% Arial,Verdana;
}.wrap{width:1000px;margin:0 auto;
}
.left{float:left;
}.content{background:url(../image/login.jpg);background-size: cover;width:1280px;height:559px;
}.login-frame{margin:50px 5% 50px 5%;float:right;padding:60px;background:white;background-color:rgba(255,255,255,0.9);border-radius:25px;order-right:1px #bdbdbd solid;width:280px;height:230px;
}.login-frame h2{font-size:25px;height:40px;margin-buttom:25px;
}
.login-frame h2 a{font-size:15px;color:#59c2c5;padding-left:20px;background:url(../image/icon5.jpg)no-repeat;
}.login-frame .item{height:60px;margin-buttom:40px;
}.login-frame .item input{line-height:40px;width:260px;border:none;border-bottom: 1px solid #59c2c5;
}.login-btn{display:block;height:50px;display:block;height:50px;color:#fff;background:#59c2c5;width:265px;font-size:16px;line-height:30px;text-align:center;border-radius:10px;border:none;color:#fff;background:#59c2c5;width:265px;font-size:16px;line-height:30px;text-align:center;border-radius:10px;border:none;
}
.login-frame .item1{dislpay:flex;justify-content: space-between;margin-top:1 rem;
}
.login-frame .item1 a{line-height:40px;font-size:1.1rem;margin-top:5 rem;padding:1rem 3rem;
}

③注册用户界面(register.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link href="css/index.css" type="text/css" rel="stylesheet">
<meta charset="UTF-8">
<script type = "text/javascript" src = "js/jquery-3.6.0.js"></script><script type = "text/javascript">function check(){var UID = $("#UID").val();var upwd = $("#upwd").val();var upwd1 = $("#upwd1").val();if(upwd != upwd1){alert("两次输入的密码不一致,请重新输入!");return false;}return true;}$(document).ready(function(){});</script>
<title>注册账号</title>
</head>
<body><form action = "AddLoginIDServlet" method = "post" onsubmit = "return check()"><div class = "content"><div class = "box"><div class = "item1"><h2>用户注册</h2></div><div class = "item"><input type = "text" name = "UID" id = "UID" placeholder="账号"/><br/></div><div class = "item"><input type = "password" name = "upwd" id = "upwd" placeholder="密码"/><br/></div><div class = "item"><input type = "password" name = "upwd1" id = "upwd1" placeholder="确认密码"/><br/></div><input type = "submit" class = "btn" value = "注册"/><br/><a href = "login.jsp">返回</a><%String error4 = (String) request.getAttribute("error4");if (error4!= null) {if (error4.equals("addError")) {out.println("注册失败!账户名已经存在!");} }%></div></div></form></body>
</html>

④注册用户界面css(index.css)

*{margin:0;padding:0;}
html,body
{font:12px/150% Arial,Verdana;
}
.content{background:url(../image/login.jpg);background-size: cover;width:1280px;height:559px;
}
.box{margin:60px 18% 60px 18%;float:right;padding:30px;background:white;background-color:rgba(255,255,255,0.9);border-radius:15px;}
.item{height:60px;margin-buttom:40px;
}
.item input{line-height:40px;width:260px;border:none;border-bottom: 1px solid #59c2c5;border-radius:3px;
}
.item1{font-size:15px;height:40px;
}
.btn{display:block;height:50px;color:#fff;background:#59c2c5;width:265px;font-size:16px;line-height:30px;text-align:center;border-radius:10px;border:none;
}

⑤修改密码界面(UpdateLoginID.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link href="css/index.css" type="text/css" rel="stylesheet">
<meta charset="UTF-8"><script type = "text/javascript" src = "js/jquery-3.6.0.js"></script><script type = "text/javascript">function check(){var upwd = $("#upwd").val();var upwd1 = $("#upwd1").val();var upwd2 = $("#upwd2").val();if(upwd1 != upwd2){alert("两次输入的密码不一致,请重新输入!");return false;}return true;}$(document).ready(function(){});</script><title>更改账号密码</title>
</head>
<body><form action = "UpdateLoginPwdServlet" method = "post" onsubmit = "return check()"><div class = "content"><div class = "box"><div class= "item1"><h2>修改密码</h2></div><div class = item><input type = "text" name = "UID" id = "UID" placeholder="账号"/><br/></div><div class = item><input type = "password" name = "upwd" id = "upwd" placeholder="旧密码"/><br/></div><div class = item><input type = "password" name = "upwd1" id = "upwd1" placeholder="新密码"/><br/></div><div class = item><input type = "password" name = "upwd2" id = "upwd2" placeholder="确认密码"/><br/></div><input type = "submit" class = "btn" value = "提交"/><br/><a href = "login.jsp">返回</a><%String error0 = (String) request.getAttribute("error0");if (error0!= null) {if (error0.equals("loginError")) {out.println("用户名或密码错误,请重新输入!");} else if (error0.equals("nologinError")) {response.sendRedirect("login.jsp");}}%></div></div></form>
</body>
</html>

⑥注销用户界面(DeleteLoginID.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<link href="css/index.css" type="text/css" rel="stylesheet">
<meta charset="UTF-8">
<title>注销账号</title>
</head>
<body><form action = "DeleteLoginIDServlet" method = "post"><div class = "content"><div class = "box"><div class = "item1"><h2>注销账号</h2></div><div class = "item"><input type = "text" name = "UID" id = "UID" placeholder="账号"/><br/></div><div class = "item"><input type = "password" name = "upwd" id = "upwd" placeholder="密码"/><br/></div><input type = "submit" class = "btn" value = "注销"/><br/><a href = "login.jsp">返回</a><%String error2 = (String) request.getAttribute("error2");if (error2!= null) {if (error2.equals("loginError")) {out.println("用户名或密码错误!注销失败!");}}%></div></div></form>
</body>
</html>

⑦登录成功主界面(index.jsp)

点击学号进入单个学生信息展示界面,可修改学生信息

点击删除删除学生信息

<%@page import="student.entity.Page"%>
<%@page import="java.util.List"%>
<%@page import="student.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><script type = "text/javascript" src = "js/jquery-3.6.0.js"></script><script type = "text/javascript">$(document).ready(function(){$("tr:odd").css("background-color","lightgrey");});</script><link href="css/show.css" type="text/css" rel="stylesheet">
<meta charset="UTF-8">
<title>学生信息列表</title>
</head>
<body><div class = "content"><div class = "box"><table  border="2" cellspacing="0"><tr><th><h2>学号</h2></th><th><h2>姓名</h2></th><th><h2>年龄</h2></th><th><h2>专业</h2></th><th><h2>操作</h2></th></tr><%Page page1 = (Page)request.getAttribute("page1");for(Student student:page1.getStudents()){%><tr><td><a href = "QueryStudentBySnoServlet?sno=<%=student.getSno()%>"><%=student.getSno() %></a></td><td><%=student.getName() %></td><td><%=student.getAge() %></td><td><%=student.getDept() %></td><td><a href = "DeleteStudentServlet?sno=<%=student.getSno() %>">删除</a></td></tr><%         }%></table><div class = item><a href = "add.jsp">增加学生</a></div><% if(page1.getCurrentPage()==page1.getTotalPage()-1){%><div class = item><a href = "QueryStudentByPageServlet?currentPage=0">首页</a><a href = "QueryStudentByPageServlet?currentPage=<%=page1.getCurrentPage()-1%>">上一页</a></div><% }else if(page1.getCurrentPage()==0){%><div class = item><a href = "QueryStudentByPageServlet?currentPage=<%=page1.getCurrentPage()+1%>">下一页</a><a href = "QueryStudentByPageServlet?currentPage=<%=page1.getTotalPage()-1%>">尾页</a></div><%}else{%><div class = item><a href = "QueryStudentByPageServlet?currentPage=0">首页</a><a href = "QueryStudentByPageServlet?currentPage=<%=page1.getCurrentPage()-1%>">上一页</a><a href = "QueryStudentByPageServlet?currentPage=<%=page1.getCurrentPage()+1%>">下一页</a><a href = "QueryStudentByPageServlet?currentPage=<%=page1.getTotalPage()-1%>">尾页</a></div><%}%><input type = "button" value = "上传作业" class = "btn"  onclick = "location = 'UpAndDown.jsp'"/><br/><%String error = (String)request.getAttribute("error");if(error!=null){if(error.equals("addError")){out.println("增加失败!");}else if(error.equals("noaddError")){out.println("增加成功!");}}String error1 = (String)request.getAttribute("error1");if(error1!=null){if(error1.equals("deleteError")){out.println("删除失败!");}else if(error1.equals("nodeleteError")){out.println("删除成功!");}}String error2 = (String)request.getAttribute("error2");if(error2!=null){if(error2.equals("updateError")){out.println("修改失败!");}else if(error2.equals("noupdateError")){out.println("修改成功!");}}String error3 = (String)request.getAttribute("error3");if(error3!=null){if(error3.equals("uploadError")){out.println("上传失败!");}else if(error3.equals("nouploadError")){out.println("上传成功!");}}%></div></div>
</body>
</html>

⑧登陆成功界面css(show.css)

*{margin:0;padding:0;}
html,body
{font:12px/150% Arial,Verdana;
}
.content{background:url(../image/index.JPG);background-size: cover;width:1280px;height:559px;
}
.box{margin:60px 18% 60px 18%;float:right;padding:30px;background:white;background-color:rgba(255,255,255,0.9);border-radius:15px;}
.item{height:40px;border-radius:15px;
}
.item a{background-color: lightgrey;text-decoration: none;font-size:15px;color:black;border-radius:3px;
}
.item1{font-size:15px;height:40px;
}
table{width:100%;border-collapse:collapse;
}
table body{diaplay:block;height:300px;overflow-y: scroll;
}
table td{border:1px solid #A6A6A6;height:60px;width:300px;text-align: center;font-size: 15px;
}
table th{height:60px;border:1px solid #A6A6A6;
}

⑨点击学号,修改学生信息界面(StudentInfo.jsp)

<%@page import="student.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="css/index.css" type="text/css" rel="stylesheet">
<title>修改学生信息</title>
</head>
<body><%Student student = (Student)request.getAttribute("student");%>        <form action = "UpdateStudentServlet" method = "post"><div class = "content"><div class = "box"><div class = "item1"><h2>修改学生信息</h2></div><div class = "item">学号:<input type = "text" name = "sno" value ="<%=student.getSno()%>" readonly = "readonly"/><br/></div><div class = "item">姓名:<input type = "text" name = "name" value ="<%=student.getName()%>"/><br/></div><div class = "item">年龄:<input type = "text" name = "age" value ="<%=student.getAge()%>"/><br/></div><div class = "item">专业:<input type = "text" name = "dept" value ="<%=student.getDept()%>"/><br/></div><input type = "submit" class = "btn" value = "修改"/><a href = "QueryStudentByPageServlet">返回</a></div></div></form>
</body>
</html>

⑩增加学生信息(add.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="css/index.css" type="text/css" rel="stylesheet">
<script type = "text/javascript" src = "js/jquery-3.6.0.js"></script><script type = "text/javascript">function check(){var sname = $("#sname").val();var sno = $("#sno").val();var sage = $("#sage").val();var sdept = $("#sdept").val();if(!(sno>1&&sno<2000)){alert("学号有误!必须是1-2000");return false;}if(!(sname.length>1&&sname.length<5)){alert("姓名有误!必须是2-4位");return false;}if(!(sage>1&&sage<100)){alert("年龄有误!必须是1-100");return false;}return true;}$(document).ready(function(){});</script><title>增加学生信息</title>
</head>
<body><form action = "AddStudentServlet" method = "post"  onsubmit = "return check()"><div class = "content"><div class = "box"><div class = "item2"><h2>增加学生信息</h2></div><div class = "item"><input type = "text" name = "name" id = "sname" placeholder="姓名"/><br/></div><div class = "item"><input type = "text" name = "sno" id = "sno" placeholder="学号"/><br/></div><div class = "item"><input type = "text" name = "age" id = "sage" placeholder="年龄"/><br/></div><div class = "item"><input type = "text" name = "dept" id = "sdept" placeholder="专业"/><br/></div><input type = "submit" class = "btn" value = "增加"/><br/><a href = "QueryStudentByPageServlet">返回</a></div></div></form>
</body>
</html>

⑪上传作业操作(UpAndDown.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="css/index.css" type="text/css" rel="stylesheet">
<title>上传作业</title>
</head>
<body><form action ="UploadServlet" method = "post" enctype = "multipart/form-data"><div class = "content"><div class = "box"><div class = "item2"><h2>上传作业</h2></div><div class = "item"><input type = "text" name="sno" placeholder="学号"/><br/></div><div class = "item"><input type = "text" name = "name" placeholder="姓名"/><br/></div><input type = "file" name = "spiature"/><br/><br/><input type = "submit" class = "btn" value ="上传"/><a href = "QueryStudentByPageServlet">返回</a></div></div></form>
</body>
</html>

2.三层架构

①表示层Servlet

检查登录的用户名和密码是否匹配(CheckLoginServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;public class CheckLoginServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String ID = request.getParameter("UID");String pwd = request.getParameter("upwd");IStudentService service = new StudentServiceImpl();boolean result = service.checkLoginID(ID,pwd);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error", "loginError");}else {request.setAttribute("error", "nologinError");}request.getRequestDispatcher("login.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

注册账户表示层(AddLoginIDServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;/*** Servlet implementation class AddLoginIDServlet*/
public class AddLoginIDServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String ID = request.getParameter("UID");String pwd = request.getParameter("upwd");IStudentService studentService = new StudentServiceImpl();boolean result = studentService.addLoginID(ID,pwd);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error4", "addError");request.getRequestDispatcher("register.jsp").forward(request, response);}else {request.setAttribute("error4", "noaddError");request.getRequestDispatcher("login.jsp").forward(request, response);}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

修改密码表示层(UpdateLoginPwdServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;/*** Servlet implementation class UpdateLoginPwdServlet*/
public class UpdateLoginPwdServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String ID = request.getParameter("UID");String pwd = request.getParameter("upwd");String pwd1 = request.getParameter("upwd1");IStudentService service = new StudentServiceImpl();boolean result = service.checkLoginID(ID,pwd);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error0", "loginError");request.getRequestDispatcher("UpdateLoginPwd.jsp").forward(request, response);}else {request.setAttribute("error0", "nologinError");boolean result1 = service.updateLoginPwd(ID,pwd1);if(!result1) {request.getRequestDispatcher("UpdateLoginPwd.jsp").forward(request, response);}else {request.setAttribute("error1", "noupdateError");request.getRequestDispatcher("login.jsp").forward(request, response);}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

注销用户表示层(DeleteLoginIDServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;/*** Servlet implementation class DeleteLoginIDServlet*/
public class DeleteLoginIDServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String ID = request.getParameter("UID");String pwd = request.getParameter("upwd");IStudentService service = new StudentServiceImpl();boolean result = service.checkLoginID(ID,pwd);boolean result1 = service.deleteLoginID(ID);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error2", "loginError");request.getRequestDispatcher("DeleteLoginID.jsp").forward(request, response);}else {request.setAttribute("error2", "nologinError");if(!result1) {request.setAttribute("error3", "deleteError");request.getRequestDispatcher("DeleteLoginID.jsp").forward(request, response);}else {request.setAttribute("error3", "nodeleteError");request.getRequestDispatcher("login.jsp").forward(request, response);}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

分页显示(QueryStudentByPageServlet.java)

package student.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.entity.Page;
import student.entity.Student;
import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;public class QueryStudentByPageServlet extends HttpServlet {private static final long serialVersionUID = 1L;public QueryStudentByPageServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {IStudentService studentService = new StudentServiceImpl();int count = studentService.getTotalCount();Page page = new Page();String cPage = request.getParameter("currentPage");if(cPage == null) {cPage = "0";}int currentPage = Integer.parseInt(cPage);page.setCurrentPage(currentPage);int totalCount = studentService.getTotalCount();page.setTotalCount(totalCount);int pageSize = 4;page.setPageSize(pageSize);List<Student> students = studentService.queryStudentsByPage(currentPage, pageSize);page.setStudents(students);request.setAttribute("page1", page);request.getRequestDispatcher("index.jsp").forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

按学号查询学生信息(QueryStudentBySnoServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.entity.Student;
import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;public class QueryStudentBySnoServlet extends HttpServlet {/*** */private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");int sno = Integer.parseInt(request.getParameter("sno"));IStudentService service = new StudentServiceImpl();Student student = service.queryStudentBySno(sno);request.setAttribute("student", student);//将查询到的request信息放在request域中request.getRequestDispatcher("StudentInfo.jsp").forward(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

增加学生信息(AddStudentServlet.java)

package student.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.entity.Student;
import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;public class AddStudentServlet extends HttpServlet {/*** */private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String name = request.getParameter("name");int sno = Integer.parseInt(request.getParameter("sno"));int age = Integer.parseInt(request.getParameter("age"));String dept = request.getParameter("dept");Student student = new Student(name, sno, age, dept);IStudentService studentService = new StudentServiceImpl();boolean result = studentService.addStudent(student);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error", "addError");}else {request.setAttribute("error", "noaddError");}request.getRequestDispatcher("QueryStudentByPageServlet").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

删除学生信息(DeleteStudentServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;/*** Servlet implementation class DeleteStudentServlet*/
public class DeleteStudentServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");int sno = Integer.parseInt(request.getParameter("sno"));IStudentService service = new StudentServiceImpl();boolean result = service.deleteStudentBySno(sno);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error1", "deleteError");}else {request.setAttribute("error1", "nodeleteError");}request.getRequestDispatcher("QueryStudentByPageServlet").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

修改学生信息表示层(UpdateStudentServlet.java)

package student.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import student.entity.Student;
import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;public class UpdateStudentServlet extends HttpServlet {/*** */private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String name = request.getParameter("name");int sno = Integer.parseInt(request.getParameter("sno"));int age = Integer.parseInt(request.getParameter("age"));String dept = request.getParameter("dept");Student student = new Student(name, age, dept);System.out.println(sno);IStudentService service = new StudentServiceImpl();boolean result = service.updateStudentBySno(sno, student);response.setContentType("text/html;charest=UTF-8");response.setCharacterEncoding("utf-8");if(!result) {request.setAttribute("error2", "updateError");}else {request.setAttribute("error2", "noupdateError");}request.getRequestDispatcher("QueryStudentByPageServlet").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

上传作业(UploadServlet.java)

package student.servlet;import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import student.service.IStudentService;
import student.service.impl.StudentServiceImpl;public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html; charset=UTF-8");String name = null;int sno = -1;boolean isMutipart = ServletFileUpload.isMultipartContent(request);if(isMutipart) {DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);factory.setRepository(new File("D:\\uploadtemp"));List<FileItem> items = null;try {items = upload.parseRequest(request);} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}Iterator<FileItem> iter = items.iterator();while(iter.hasNext()) {FileItem item= iter.next();String fileName = item.getName();String itemName = item.getFieldName();if(item.isFormField()) {if(itemName.equals("name")){name = item.getString("utf-8");}else if(itemName.equals("sno")) {sno =Integer.parseInt(item.getString("utf-8"));}else {}}else {//定义上传路径:指定上传的位置String path = "D:\\upload";File file = new File(path,fileName);try {item.write(file);} catch (Exception e) {e.printStackTrace();}}}IStudentService studentService = new StudentServiceImpl();boolean result = studentService.upLoadWork(sno,name);System.out.println(name+sno);System.out.println(result);if(!result) {request.setAttribute("error3", "uploadError");request.getRequestDispatcher("QueryStudentByPageServlet").forward(request, response);}else{request.setAttribute("error3", "nouploadError");request.getRequestDispatcher("QueryStudentByPageServlet").forward(request, response);}}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

②业务逻辑层Service

Service接口(IStudentService.java)

package student.service;import java.util.List;import student.entity.Student;public interface IStudentService {//查询全部学生信息public List<Student> queryAllStudents();//按照学号查询学生信息public Student queryStudentBySno(int sno);//删除学生信息public boolean deleteStudentBySno(int sno) ;//更改学生信息public boolean updateStudentBySno(int sno, Student student) ;//增加学生信息public boolean addStudent(Student student) ;//查询总数据public int getTotalCount();//分页public List<Student> queryStudentsByPage(int current, int pageSize);//检查登陆账户和密码public boolean checkLoginID(String ID,String pwd);//注册账户public boolean addLoginID(String ID, String pwd);//更改密码public boolean updateLoginPwd(String ID,String pwd1);//注销账号public boolean deleteLoginID(String ID);//判断ID是否存在public boolean IDExist(String ID);//判断上传作业输入的学生信息是否存在public boolean upLoadWork(int sno, String name);}

接口的实现类(StudentServiceImpl.java)

package student.service.impl;import java.util.List;import student.dao.IStudentDao;
import student.dao.impl.StudentDaoImpl;
import student.entity.Student;
import student.service.IStudentService;
import student.util.DBUtil;//业务逻辑层:逻辑性的增删改查(增:查+增),对dao层进行的组装
public class StudentServiceImpl implements IStudentService{IStudentDao studentDao = new StudentDaoImpl();//查询全部学生信息public List<Student> queryAllStudents(){return studentDao.queryAllStudents();}//按照学号查询学生信息public Student queryStudentBySno(int sno) {return studentDao.queryStudentBySno(sno);}//删除学生信息public boolean deleteStudentBySno(int sno) {if(studentDao.isExist(sno)) {return studentDao.deleteStudentBySno(sno);}return false;}//更改学生信息public boolean updateStudentBySno(int sno, Student student) {return studentDao.updateStudentBySno(sno, student);}//增加学生信息public boolean addStudent(Student student) {if(!studentDao.isExist(student.getSno())) {studentDao.addStudent(student);return true;}else {System.out.println("学号重复!");return false;}}//查询总条数@Overridepublic int getTotalCount() {return studentDao.getTotalCount();}//查询当前页的数据集合@Overridepublic List<Student> queryStudentsByPage(int current, int pageSize) {return studentDao.queryStudentByPage(current, pageSize);}@Overridepublic boolean checkLoginID(String ID, String pwd) {return studentDao.checkLoginID(ID, pwd);}@Overridepublic boolean addLoginID(String ID, String pwd) {return studentDao.addLoginID(ID,pwd);}@Overridepublic boolean updateLoginPwd(String ID, String pwd1) {return studentDao.updateLoginPwd(ID,pwd1);}@Overridepublic boolean deleteLoginID(String ID) {return studentDao.deleteLoginID(ID);}@Overridepublic boolean IDExist(String ID) {return studentDao.IDExist(ID);}@Overridepublic boolean upLoadWork(int sno, String name) {return studentDao.upLoadWork(sno,name);}}

③数据访问层Dao

接口(IStudentDao.java)

package student.dao;import java.util.List;import student.entity.Student;public interface IStudentDao {public boolean updateLoginPwd(String ID,String pwd1);//查询全部学生信息public List<Student> queryAllStudents();//判断此人是否存在public boolean isExist(int sno) ;//增加学生信息public boolean addStudent(Student student);//删除学生信息public boolean deleteStudentBySno(int sno);//根据sno找到要修改的学生,然后再进行修改public boolean  updateStudentBySno(int sno,Student student);//根据学号查询学生信息public Student queryStudentBySno(int sno);//查询总数据数public int getTotalCount();//currentPage:当前页(页码)pageSize:页面大小(每页显示的数据条数)public List<Student> queryStudentByPage(int currentPage,int pageSize);public boolean checkLoginID(String ID,String pwd);public boolean addLoginID(String ID, String pwd);public boolean deleteLoginID(String ID);public boolean IDExist(String ID);public boolean upLoadWork(int sno, String name);
}

接口的实现类(StudentDaoImpl.java)

package student.dao.impl;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;import student.dao.IStudentDao;
import student.entity.Student;
import student.util.DBUtil;public class StudentDaoImpl implements IStudentDao{private final String URL = "jdbc:mysql://localhost:3306/STUDENT?useSSL=false&serverTimezone=UTC";private final String UserName = "root";private final String Pwd = "123456";String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";//查询全部学生信息public List<Student> queryAllStudents(){PreparedStatement pstmt = null;Student student = null;List<Student> students = new ArrayList<>();ResultSet rs = null;try {String sql = "select * from student1";rs = DBUtil.executeQuery(sql, null);while(rs.next()) {int sno= rs.getInt("sno");String name = rs.getString("name");int age = rs.getInt("age");String dept = rs.getString("dept");student = new Student(name, sno, age, dept);students.add(student);}return students;} catch(Exception e) {e.printStackTrace();return null;}finally {DBUtil.closeAll(rs, pstmt, DBUtil.connection);}}//判断此人是否存在public boolean isExist(int sno) {return queryStudentBySno(sno) == null? false:true;}//增加学生信息public boolean addStudent(Student student) {String sql = "insert into student1(name,sno,age,dept) values(?,?,?,?)";Object[] params = {student.getName(),student.getSno(),student.getAge(),student.getDept()};return DBUtil.executeUpdate(sql, params);}//删除学生信息public boolean deleteStudentBySno(int sno) {String sql = "delete from student1 where sno =?";Object[] params = {sno};return DBUtil.executeUpdate(sql, params);}//根据sno找到要修改的学生,然后再进行修改public boolean  updateStudentBySno(int sno,Student student) {String sql = "update student1 set name =?,age=?,dept=? where sno=?";Object[] params = {student.getName(),student.getAge(),student.getDept(),sno};return DBUtil.executeUpdate(sql, params);}//根据学号查询学生信息public Student queryStudentBySno(int sno){PreparedStatement pstmt = null;Student student = null;Connection connection = null;ResultSet rs = null;try {Class.forName(JDBC_DRIVER);connection = DriverManager.getConnection(URL,UserName,Pwd);String sql = "select * from student1 where sno = ?";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, sno);rs = pstmt.executeQuery();if(rs.next()) {int no= rs.getInt("sno");String name = rs.getString("name");int age = rs.getInt("age");String dept = rs.getString("dept");student = new Student(name, no, age, dept);}return student;} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;} catch(SQLException e) {e.printStackTrace();return null;}catch(Exception e) {e.printStackTrace();return null;}finally {DBUtil.closeAll(rs, pstmt, DBUtil.connection);}}@Overridepublic int getTotalCount() {//查询总数据数String sql = "select count(1) from student1";return DBUtil.getTotalCount(sql);}@Overridepublic List<Student> queryStudentByPage(int currentPage, int pageSize) {String sql = "select * from student1 order by sno asc limit ?,?";Object[] params = {currentPage*pageSize,pageSize};List<Student> students = new ArrayList<>();ResultSet rs = DBUtil.executeQuery(sql, params);try {while(rs.next()) {Student student = new Student(rs.getString("name"),rs.getInt("sno"),rs.getInt("age"),rs.getString("dept"));students.add(student);}} catch (SQLException e) {e.printStackTrace();}catch (Exception e) {e.printStackTrace();}return students;}@Overridepublic boolean checkLoginID(String ID, String pwd){int count = 0;String sql = "select * from login where ID=? and pwd=?";Object[] params = {ID,pwd};ResultSet rs = DBUtil.executeQuery(sql, params);try {while(rs.next()) {count++;}if(count>0)return true;elsereturn false;} catch (SQLException e) {e.printStackTrace();}return false;}@Overridepublic boolean addLoginID(String ID, String pwd) {// TODO Auto-generated method stubString sql = "insert into login(ID,pwd) values(?,?)";Object[] params = {ID,pwd};return DBUtil.executeUpdate(sql, params);}@Overridepublic boolean updateLoginPwd(String ID, String pwd1) {String sql = "update login set pwd =? where ID=?";Object[] params = {pwd1,ID};return DBUtil.executeUpdate(sql, params);}@Overridepublic boolean deleteLoginID(String ID) {String sql = "delete from login where ID =?";Object[] params = {ID};return DBUtil.executeUpdate(sql, params);}@Overridepublic boolean IDExist(String ID) {String sql = "select *from login where ID = ?";Object[] params = {ID};return DBUtil.executeUpdate(sql, params);}@Overridepublic boolean upLoadWork(int sno, String name) {int count = 0;String sql = "select *from student1 where sno = ? and name = ?";Object[] params = {sno,name};ResultSet rs = DBUtil.executeQuery(sql, params);try {while(rs.next()) {count++;}if(count>0)return true;elsereturn false;} catch (SQLException e) {e.printStackTrace();}return false;}
}

④通用的数据库操作(DBUtils.java)

package student.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;import student.entity.Student;//通用的数据库操作方法
public class DBUtil {private static final String URL = "jdbc:mysql://localhost:3306/STUDENT?useSSL=false&serverTimezone=UTC";private static final String UserName = "root";private static final String Pwd = "123456";private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";public static Connection connection = null;public static PreparedStatement pstmt = null;public static ResultSet rs = null;//查询总数public static int getTotalCount(String sql){int count = -1;try {pstmt = createPreParedStatement(sql,null);rs = pstmt.executeQuery();if(rs.next()) {count = rs.getInt(1);}} catch (SQLException e) {e.printStackTrace();}catch (Exception e) {e.printStackTrace();}finally {closeAll(rs,pstmt,connection);}return count;}//增删改public static boolean executeUpdate(String sql,Object[] params) {try {pstmt = createPreParedStatement(sql,params);int count = pstmt.executeUpdate();System.out.println(count);if(count>0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch(SQLException e) {e.printStackTrace();return false;}catch(Exception e) {e.printStackTrace();return false;}finally {closeAll(null,pstmt,connection);}}public static void closeAll(ResultSet rs,Statement stmt,Connection connection){try{if(rs!=null)rs.close();if(pstmt!=null)pstmt.close();if(connection!=null)connection.close();}catch(SQLException e) {e.printStackTrace();}}public static PreparedStatement createPreParedStatement(String sql,Object[] params) throws ClassNotFoundException, SQLException {pstmt = getConnection().prepareStatement(sql);if(params!=null) {for(int i = 0;i<params.length;i++) {pstmt.setObject(i+1, params[i]);}}return pstmt;}public static Connection getConnection() throws ClassNotFoundException, SQLException {Class.forName(JDBC_DRIVER);return DriverManager.getConnection(URL,UserName,Pwd);}//通用的查public static ResultSet executeQuery(String sql,Object[] params){List<Student> students = new ArrayList<>();Student student = null;try {pstmt = createPreParedStatement(sql,params);rs = pstmt.executeQuery();return rs;} catch(SQLException e) {e.printStackTrace();return null;}catch(Exception e) {e.printStackTrace();return null;}}}

3.JavaBean封装数据

①分页帮助类(Page.java)

package student.entity;import java.util.List;//分页帮助类
public class Page {private int currentPage;private int pageSize;private int totalCount;private int totalPage;private List<Student> students;public Page() {}public Page(int currentPage, int pageSize, int totalCount, int totalPage, List<Student> students) {this.currentPage = currentPage;this.pageSize = pageSize;this.totalCount = totalCount;this.totalPage = totalPage;this.students = students;}public int getCurrentPage() {return currentPage;}public void setCurrentPage(int currentPage) {this.currentPage = currentPage;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;this.totalPage = this.totalCount%this.pageSize==0?this.totalCount/this.pageSize:this.totalCount/this.pageSize+1;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getTotalPage() {return totalPage;}public List<Student> getStudents() {return students;}public void setStudents(List<Student> students) {this.students = students;}
}

②封装学生信息(Student.java)

package student.entity;public class Student {private String name;private int sno;private int age;private String dept;public Student(int sno) {this.sno = sno;}public Student() {}public Student(String name, int age, String dept) {this.name = name;this.age = age;this.dept = dept;}public Student(String name, int sno, int age, String dept) {this.name = name;this.sno = sno;this.age = age;this.dept = dept;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getSno() {return sno;}public void setSno(int sno) {this.sno = sno;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getDept() {return dept;}public void setDept(String dept) {this.dept = dept;}public String toString() {return this.getSno()+"-"+this.getName()+"-"+this.getAge()+"-"+this.getDept();}
}

4.项目所需jar包

项目需要3个jar包,前两个jar包属于文件上传所需,最后一个为连接数据库的jar包

下载官网地址:https://mvnrepository.com/

五.数据库表格

本人用的是mysql数据库,直接在mysql数据库中新建表格

①登录注册表格login

②学生信息表格student1

Javaweb学生信息管理系统(Mysql+JSP+MVC+CSS)相关推荐

  1. python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~

    学生信息管理系统 1.系统说明 python 编写的学生信息管理系统+MySQL数据库,实现了增删改查的基本功能. 2.数据库说明 本人使用的是 MySQL8.0 版本 数据库端口号为:3306 数据 ...

  2. PHP 学生信息管理系统mysql数据库web结构apache计算机软件工程网页wamp

    一.源码特点     PHP 学生信息管理系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 代码下载 https://dow ...

  3. Java 学生信息管理系统 (mysql版)

    引言:如果需要定制类似的图形界面版的Java 管理系统,比如控制台版的,Java web版的,ssm版,开发工具为idea和eclipse.myEclipse的,提供远程服务,需要源码,或者需要项目实 ...

  4. 学生信息管理系统MySql课程设计

    本篇文章是第一次发布在这个平台上,文章的内容是平时课程的一个小作业,由于时间不足,还有很多内容没有完善好,会继续下一次的修改,对该学生管理系统进行修改和创新, 学生信息管理系统 一.分析 1.1 业务 ...

  5. JavaWeb课程设计-学生信息管理系统(Jsp+Servlet+MySql

    用户操作的DAO */ public interface UserDao { } 实现持久层接口: public class UserDaoImpl implements UserDao { priv ...

  6. JavaWeb学生信息管理系统_查询V1.0

    项目简介 1)在MySQL数据库中创建一个StudentGradeTable数据表,添加字段FlowId,Type,IdCard,ExamCard,StudentName,Location,Grade ...

  7. Javaweb学生信息管理系统(源码)

                              关注微信公众号:小诸葛的博客 回复101获取项目源码 1.项目名称:学生成绩管理系统 主要管理学生信息及成绩.教师信息.考试信息等. 2.系统环境: ...

  8. 信息管理系统(Servlet+jsp+mvc+jdbc)

    技术需求: Servlet+jsp+mvc+jdbc 软件需求:开发工具:myEclipse 数据库: mySql 服务器:tomcat 浏览器:Firefox 硬件需求: 一台电脑 功能需求: 完成 ...

  9. JavaWeb学生信息管理系统

    提取码: 7sm3 https://www.aliyundrive.com/s/f6tULruwfUx 直接放上代码 · 知识储备:java.mysql.Servlet.HTML.Jquery.Jsc ...

最新文章

  1. 用 Redis 处理 jsonwebtoken 生成的 Token
  2. vant UI库组件, 与HTML 标签冲突
  3. VBA编程常用词汇英汉对照表
  4. 不止代码:生日欢唱(ybtoj-区间dp)
  5. 【CodeForces - 632B】Alice, Bob, Two Teams (预处理,思维,前缀和后缀和)
  6. STL之deque和其他容器
  7. 红色Bootstrap自适应帝国cms7.5会员中心模板
  8. java list 去空字符串_从字符串列表中删除空字符串
  9. 创建企业级地理数据库
  10. 【转】新方法打造自己的N合一 XP系统盘
  11. LaTex常用技巧6:矩阵编写总结
  12. 计算机网络安全技术复习知识点总结
  13. 加快数字创新赋能实体经济 CDEC2021中国数字智能生态大会成都站今日举行
  14. Linux操作系统中的挂载和卸载U盘
  15. Bhuman应用篇——守门员防守之SpecialAction
  16. 2023最新泛站群系统,一键搭建泛目录,泛二级
  17. iphone已停用解锁大概多少钱_iPhone已停用怎么办 iPhone已停用解决方案汇总
  18. (长文)Java后端从入门到放弃
  19. 12. 直流电机调速(PWM)
  20. 北邮2020年计算机学院分数线,2020北京邮电大学录取分数线

热门文章

  1. 在eclipse启动tomcat运行一个web程序,报java.lang.OutOfMemoryError: PermGen space
  2. Linux sar命令实战
  3. appinventor数学小程序计算机,APP inventor中的颜色
  4. VC++ 中主线程等待子线程结束的方法
  5. [剑指offer] -- 46.扑克牌顺子
  6. LeetCode42题动态规划 - 接雨水
  7. 【UVM基础】uvm_resource_db 使用介绍
  8. python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例
  9. 从来不敷面膜的人_女人一旦过了40岁,敷面膜要记住“3不要”,否则还不如不敷!...
  10. 原创工具14Finger-全能web指纹识别与分享平台