1、数据库设计
学生表的表结构如图1所示:
图1 student表结构
2、项目架构
项目架构所示:
学生表
用户表
登录页面
学生信息显示页面
点击删除则删除数据
增加页面
修改页面
代码部分:
bean包:
package bean;
//学生表student对应的实体类Student
public class Student {
private int sid;
private String sname;
private int sage;
private String ssex;
private String snativeplace;
private String smajor;
private String sclass;
private String snative;
@Override
public String toString() {
return "student{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", sage=" + sage +
", ssex='" + ssex + '\'' +
", snativeplace='" + snativeplace + '\'' +
", smajor='" + smajor + '\'' +
", sclass='" + sclass + '\'' +
", snative='" + snative + '\'' +
'}';
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getSage() {
return sage;
}
public void setSage(int sage) {
this.sage = sage;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public String getSnativeplace() {
return snativeplace;
}
public void setSnativeplace(String snativeplace) {
this.snativeplace = snativeplace;
}
public String getSmajor() {
return smajor;
}
public void setSmajor(String smajor) {
this.smajor = smajor;
}
public String getSclass() {
return sclass;
}
public void setSclass(String sclass) {
this.sclass = sclass;
}
public String getSnative() {
return snative;
}
public void setSnative(String snative) {
this.snative = snative;
}
public Student() {
}
public Student(int sid, String sname, int sage, String ssex, String snativeplace, String smajor, String sclass, String snative) {
this.sid = sid;
this.sname = sname;
this.sage = sage;
this.ssex = ssex;
this.snativeplace = snativeplace;
this.smajor = smajor;
this.sclass = sclass;
this.snative = snative;
}
}
package bean;
//user表对应的实体类user
public class User {
String name;
String psaaworld;
@Override
public String toString() {
return "user{" +
"name='" + name + '\'' +
", psaaworld='" + psaaworld + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPsaaworld() {
return psaaworld;
}
public void setPsaaworld(String psaaworld) {
this.psaaworld = psaaworld;
}
public User(String name, String psaaworld) {
this.name = name;
this.psaaworld = psaaworld;
}
}
servlet包
package servlet;
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 java.io.IOException;
import bean.Student;
import utils.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/add")
public class StndentAdd extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Student> studentsid=new ArrayList<>();
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection=DBUtil.getConnection();
preparedStatement=connection.prepareStatement("select sid from student");
resultSet=preparedStatement.executeQuery();
while (resultSet.next()){
Student student=new Student();
int sid=resultSet.getInt("sid");
student.setSid(sid);
studentsid.add(student);
}
}catch (Exception e){
e.printStackTrace();
}finally {
DBUtil.close(connection,preparedStatement,resultSet);
}
req.setAttribute("studentsid",studentsid);
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
}
package servlet;
import utils.DBUtil;
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 java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
@WebServlet("/add2")
public class StndentAdd2 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String sid=req.getParameter("sid");
String sname = req.getParameter("sname");
String sage = req.getParameter("sage");
String snataiveplace = req.getParameter("snataiveplace");
String smajor = req.getParameter("smajor");
String sclass = req.getParameter("sclass");
String snative = req.getParameter("snative");
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement("insert into student values (?,?,?,?,?,?,?)");
preparedStatement.setString(1, sid);
preparedStatement.setString(2, sname);
preparedStatement.setString(3, sage);
preparedStatement.setString(4, snataiveplace);
preparedStatement.setString(5, smajor);
preparedStatement.setString(6, sclass);
preparedStatement.setString(7, snative);
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(connection, preparedStatement, null);
}
resp.sendRedirect(req.getContextPath()+"/show");
}
}
package servlet;
import utils.DBUtil;
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 java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
@WebServlet("/deleta")
public class StudentDeleta extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sid = req.getParameter("sid");
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement("delete from student where sid=?");
preparedStatement.setString(1, sid);
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(connection, preparedStatement, null);
}
req.getRequestDispatcher("/show").forward(req, resp);
}
}
package servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter({"/add","/add2","/select","/show","/deleta","/updata"})
public class StudentFilters implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String requestServletPath = request.getServletPath();
HttpSession session = request.getSession(false);
String name = (String) session.getAttribute("username");
if (session != null && name != null) {
filterChain.doFilter(request,response);
}else{
response.sendRedirect("/student/Login.jsp");
}
}
@Override
public void destroy() {
}
}
package servlet;
import utils.DBUtil;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@WebServlet("/login")
public class StudentOaLogin extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String userpassword = req.getParameter("userpassword");
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
boolean login=false;
try {
connection=DBUtil.getConnection();
preparedStatement=connection.prepareStatement("select name,password from user where name=?and password=?");
preparedStatement.setString(1,username);
preparedStatement.setString(2,userpassword);
resultSet=preparedStatement.executeQuery();
if(resultSet.next()){
login=true;
}
}catch (Exception e){
e.printStackTrace();
}finally {
DBUtil.close(connection,preparedStatement,resultSet);
}
if(login){
HttpSession session = req.getSession();
session.setAttribute("username",username);
resp.sendRedirect(req.getContextPath()+"/show");
}else {
resp.sendRedirect(req.getContextPath()+"/NotLogin.jsp");
}
}
}
package servlet;
import bean.Student;
import utils.DBUtil;
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 java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/select")
public class StudentSelect extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String studentname = req.getParameter("studentname");
List<Student> students=new ArrayList<>();
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection=DBUtil.getConnection();
preparedStatement=connection.prepareStatement("select * from student where sname like ? ");
preparedStatement.setString(1, "%"+studentname+"%");
resultSet=preparedStatement.executeQuery();
while (resultSet.next()){
int sid = resultSet.getInt("sid");
String sname = resultSet.getString("sname");
int sage = resultSet.getInt("sage");
String snataiveplace = resultSet.getString("snataiveplace");
String smajor = resultSet.getString("smajor");
String sclass = resultSet.getString("sclass");
String snative = resultSet.getString("snative");
Student student = new Student();
student.setSage(sage);
student.setSclass(sclass);
student.setSmajor(smajor);
student.setSid(sid);
student.setSnative(snative);
student.setSname(sname);
student.setSnativeplace(snataiveplace);
students.add(student);
}
}catch (Exception e){
e.printStackTrace();
}finally {
DBUtil.close(connection,preparedStatement,resultSet);
}
req.setAttribute("students",students);
req.getRequestDispatcher("show.jsp").forward(req,resp);
}
}
package servlet;
import bean.Student;
import utils.DBUtil;
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 java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/show")
public class StudentShow extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Student> students=new ArrayList<>();
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection=DBUtil.getConnection();
preparedStatement=connection.prepareStatement("select *from student");
resultSet=preparedStatement.executeQuery();
while (resultSet.next()){
int sid = resultSet.getInt("sid");
String sname = resultSet.getString("sname");
int sage = resultSet.getInt("sage");
String snataiveplace = resultSet.getString("snataiveplace");
String smajor = resultSet.getString("smajor");
String sclass = resultSet.getString("sclass");
String snative = resultSet.getString("snative");
Student student = new Student();
student.setSage(sage);
student.setSclass(sclass);
student.setSmajor(smajor);
student.setSid(sid);
student.setSnative(snative);
student.setSname(sname);
student.setSnativeplace(snataiveplace);
students.add(student);
}
}catch (Exception e){
e.printStackTrace();
}finally {
DBUtil.close(connection,preparedStatement,resultSet);
}
req.setAttribute("students",students);
req.getRequestDispatcher("show.jsp").forward(req,resp);
}
}
package servlet;
import utils.DBUtil;
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 java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
@WebServlet("/updata")
public class StudentUpdate extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String sid=req.getParameter("sid");
String sname = req.getParameter("sname");
String sage = req.getParameter("sage");
String snataiveplace = req.getParameter("snataiveplace");
String smajor = req.getParameter("smajor");
String sclass = req.getParameter("sclass");
String snative = req.getParameter("snative");
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = DBUtil.getConnection();
preparedStatement = connection.prepareStatement("update student set sname=?,sage=?,snataiveplace=?,smajor=?,sclass=?,snative=? where sid=?");
preparedStatement.setString(1, sname);
preparedStatement.setString(2, sage);
preparedStatement.setString(3, snataiveplace);
preparedStatement.setString(4, smajor);
preparedStatement.setString(5, sclass);
preparedStatement.setString(6, snative);
preparedStatement.setString(7, sid);
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(connection, preparedStatement, null);
}
resp.sendRedirect(req.getContextPath()+"/show");
}
}
jdbc工具类
package utils;
import java.sql.*;
import java.util.ResourceBundle;
/**
* JDBC的工具类
*/
public class DBUtil {
// 静态变量:在类加载时执行 并且是自上而下的顺序
// 属性资源文件绑定
public static ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
// 根据属性文件的key获取value
private static String driver = bundle.getString("driver");
private static String url = bundle.getString("url");
private static String user = bundle.getString("user");
private static String password = bundle.getString("password");
static {
// 注册驱动(注册驱动只需要注册一次 放在静态代码块当中 DBUtil类加载的时候执行)
try {
// "com.mysql.jdbc.Driver"是连接MySQL数据库的驱动 不能写死 因为以后可能还会连接其他数据库
// Class.forName("com.mysql.jdbc.Driver");
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接对象
* @return conn 连接对象
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
// 获取连接
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
/**
* 释放资源
* @param conn 连接对象
* @param ps 数据库操作对象
* @param rs 结果集对象
*/
public static void close(Connection conn, Statement ps, ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
资源配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/gsq
user=root
password=123456
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
function yes() {
if (window.confirm("确认要增加吗")) {
document.getElementById("input").onsubmit;
}
}
window.onload = function () {
var sid = document.getElementById("sid");
var span = document.getElementById("span");
sid.onfocus = function () {
span.innerText = ""
}
sid.onblur = function () {
<c:forEach items="${studentsid}" var="s">
if (sid.value == "${s.sid}") {
span.innerText = "学号重复"
}
</c:forEach>
}
}
</script>
</head>
<body>
<form action="${pageContext.request.contextPath}/add2" style="margin-left: 630px;margin-top: 50px" method="post">
学号:<input id="sid" style="margin: 10px" type="text" name="sid"><span id="span"
style="color: red;font-size: 20px"></span><br>
姓名:<input style="margin: 10px" type="text" name="sname"><br>
年龄:<input style="margin: 10px" type="text" name="sage"><br>
性别:<input style="margin: 10px" type="text" name="snataiveplace"><br>
籍贯:<input style="margin: 10px" type="text" name="smajor"><br>
专业:<input style="margin: 10px" type="text" name="sclass"><br>
班级:<input style="margin: 10px" type="text" name="snative"><br>
<input id="input" type="submit" value="确认增加" onclick="yes()">
</form>
</body>
</html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
background: url('https://cdn.pixabay.com/photo/2018/08/14/13/23/ocean-3605547_1280.jpg') no-repeat;
background-size: 100% 130%;
}
#login_box {
width: 20%;
height: 400px;
background-color: #00000060;
margin: auto;
margin-top: 10%;
text-align: center;
border-radius: 10px;
padding: 50px 50px;
}
h2 {
color: #ffffff90;
margin-top: 5%;
}
#input-box {
margin-top: 5%;
}
span {
color: #fff;
}
input {
border: 0;
width: 60%;
font-size: 15px;
color: #fff;
background: transparent;
border-bottom: 2px solid #fff;
padding: 5px 10px;
outline: none;
margin-top: 10px;
}
button {
margin-top: 50px;
width: 60%;
height: 30px;
border-radius: 10px;
border: 0;
color: #fff;
text-align: center;
line-height: 30px;
font-size: 15px;
background-image: linear-gradient(to right, #30cfd0, #330867);
}
#sign_up {
margin-top: 45%;
margin-left: 60%;
}
a {
color: #b94648;
}
</style>
</head>
<body>
<div id="login_box">
<h2>学生信息管理系统</h2>
<form action="${pageContext.request.contextPath}/login" method="post">
<div id="input_box">
<input type="text" placeholder="请输入用户名" name="username">
</div>
<div class="input_box">
<input type="password" placeholder="请输入密码" name="userpassword">
</div>
<button type="submit">登录</button>
<br>
</form>
</div>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
background: url('https://cdn.pixabay.com/photo/2018/08/14/13/23/ocean-3605547_1280.jpg') no-repeat;
background-size: 100% 130%;
}
#login_box {
width: 20%;
height: 400px;
background-color: #00000060;
margin: auto;
margin-top: 10%;
text-align: center;
border-radius: 10px;
padding: 50px 50px;
}
h2 {
color: #ffffff90;
margin-top: 5%;
}
#input-box {
margin-top: 5%;
}
span {
color: #fff;
}
input {
border: 0;
width: 60%;
font-size: 15px;
color: #fff;
background: transparent;
border-bottom: 2px solid #fff;
padding: 5px 10px;
outline: none;
margin-top: 10px;
}
button {
margin-top: 50px;
width: 60%;
height: 30px;
border-radius: 10px;
border: 0;
color: #fff;
text-align: center;
line-height: 30px;
font-size: 15px;
background-image: linear-gradient(to right, #30cfd0, #330867);
}
#sign_up {
margin-top: 45%;
margin-left: 60%;
}
a {
color: #b94648;
}
</style>
<script>
window.alert("登录失败请输入正确的用户名和密码")
</script>
</head>
<body on>
<div id="login_box">
<h2>学生信息管理系统</h2>
<form action="/student/login" method="post">
<div id="input_box">
<input type="text" placeholder="请输入用户名" name="username">
</div>
<div class="input_box">
<input type="password" placeholder="请输入密码" name="userpassword">
</div>
<button type="submit">登录</button>
<br>
</form>
</div>
</body>
</html>
<%@ page import="java.util.List" %>
<%@ page import="bean.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学生信息</title>
</head>
<body>
<h1 align="center">学生信息</h1>
<form action="${pageContext.request.contextPath}/select" style="margin-left: 650px;margin-top: 20px;margin-bottom: 20px">
<input type="text" name="studentname" placeholder="按姓名查询">
<input type="submit" value="查询">
<a href="${pageContext.request.contextPath}/add"><button type="button">添加学生</button></a>
<a href="${pageContext.request.contextPath}/show"><button type="button">查看所有学生</button></a>
</form>
<table align="center" width="50%" border="1px">
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>籍贯</th>
<th>专业</th>
<th>班级</th>
<th colspan="2">操作</th>
</tr>
<c:forEach items="${students}" var="s">
<tr align="center">
<td>${s.sid}</td>
<td>${s.sname}</td>
<td>${s.sage}</td>
<td>${s.snativeplace}</td>
<td>${s.smajor}</td>
<td>${s.sclass}</td>
<td>${s.snative}</td>
<td><a href="${pageContext.request.contextPath}/deleta?sid=${s.sid}">删除</a></td>
<td><a href="${pageContext.request.contextPath}/updata.jsp?sid=${s.sid}">修改</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
function yes(){
if(window.confirm("确认要修改吗")){
document.getElementById("input").onsubmit;
}
}
</script>
</head>
<body>
<h3 align="center" style="color: red">*代表不可修改</h3>
<form action="${pageContext.request.contextPath}/updata" style="margin: 0 630px" method="post">
学号:<input style="margin: 10px" type="text" name="sid" value="${param.sid}" readonly><span style="color: red;font-size: 20px">*</span><br>
姓名:<input style="margin: 10px" type="text" name="sname"><br>
年龄:<input style="margin: 10px" type="text" name="sage"><br>
性别:<input style="margin: 10px" type="text" name="snataiveplace"><br>
籍贯:<input style="margin: 10px" type="text" name="smajor"><br>
专业:<input style="margin: 10px" type="text" name="sclass"><br>
班级:<input style="margin: 10px" type="text" name="snative"><br>
<input id="input" type="submit" value="确认修改" onclick="yes()">
</form>
</body>
</html>