StudentServlet.java
package com.yj.servlet;
import com.yj.entity.Student;
import com.yj.reposity.StudentRepository;
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.util.List;
@WebServlet("/student")
public class StudentServlet extends HttpServlet {
private StudentRepository studentRepository = new StudentRepository();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if (method == null) {
method = "findAll";
}
switch (method) {
case "findAll":
//返回视图加数据
List<Student> list = studentRepository.findAll();
req.setAttribute("list", list);
req.getRequestDispatcher("index.jsp").forward(req, resp);
break;
case "deleteById":
String idStr = req.getParameter("id");
int id = Integer.parseInt(idStr);
studentRepository.deleteById(id);
resp.sendRedirect("/student");
break;
case "findById":
idStr = req.getParameter("id");
id = Integer.parseInt(idStr);
req.setAttribute("student", studentRepository.findById(id));
req.getRequestDispatcher("update.jsp").forward(req, resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
switch (method) {
case "add":
String name = req.getParameter("name");
String scoreStr = req.getParameter("score");
double score = Double.parseDouble(scoreStr);
studentRepository.add(name, score);
break;
case "update":
String idStr = req.getParameter("id");
Integer id = Integer.parseInt(idStr);
name = req.getParameter("name");
scoreStr = req.getParameter("score");
score = Double.parseDouble(scoreStr);
studentRepository.update(id, name, score);
System.out.println(id + name + score);
break;
}
resp.sendRedirect("/student");
}
}
StudentRepository.java
package com.yj.reposity;
import com.yj.entity.Student;
import com.yj.util.JDBCTools;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class StudentRepository {
public List<Student> findAll() {
List<Student> list = new ArrayList<>();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = JDBCTools.getConnection();
String sql = "select * from student";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
Student student = null;
while (resultSet.next()) {
Integer id = resultSet.getInt(1);
String name = resultSet.getString(2);
Double score = resultSet.getDouble(3);
Date date = resultSet.getDate(4);
student = new Student(id, name, score, date);
list.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCTools.release(connection, preparedStatement, null);
}
return list;
}
public void add(String name, Double score) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = JDBCTools.getConnection();
String sql = "insert into student(name,score,date ) values(?,?,?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, name);
preparedStatement.setDouble(2, score);
preparedStatement.setDate(3, new java.sql.Date(1));
preparedStatement.executeUpdate();
Student student = null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCTools.release(connection, preparedStatement, null);
}
}
public void deleteById(Integer id) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = JDBCTools.getConnection();
String sql = "delete from student where id = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCTools.release(connection, preparedStatement, null);
}
}
public Student findById(Integer id) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
Student student = null;
try {
connection = JDBCTools.getConnection();
String sql = "select * from student where id = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
Integer id2 = resultSet.getInt(1);
String name = resultSet.getString(2);
Double score = resultSet.getDouble(3);
Date date = resultSet.getDate(4);
student = new Student(id2, name, score, date);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCTools.release(connection, preparedStatement, resultSet);
}
return student;
}
public void update(Integer id, String name, Double score) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = JDBCTools.getConnection();
String sql = "update student set name = ?,score = ? where id = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, name);
preparedStatement.setDouble(2, score);
preparedStatement.setInt(3,id);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCTools.release(connection, preparedStatement, null);
}
}
}
Student.java
package com.yj.entity;
import java.util.Date;
public class Student {
private Integer id;
private String name;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", score=" + score +
", data=" + data +
'}';
}
private Double score;
public Student(Integer id, String name, Double score, Date data) {
this.id = id;
this.name = name;
this.score = score;
this.data = data;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
private Date data;
}
CharacterFilter.java
package com.yj.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/student")
public class CharacterFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("UTF-8");
filterChain.doFilter(servletRequest,servletResponse);
}
}
JDBCTools.java
package com.yj.util;
import java.sql.*;
public class JDBCTools {
private static Connection connection;
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
String url = "jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8";
String user = "root";
String password = "123456";
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void release(Connection connection, Statement statement, ResultSet resultSet){
try {
if(connection!=null){
connection.close();
}
if(statement!=null){
statement.close();
}
if(resultSet!=null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
add.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/2/15
Time: 16:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>wdw
<head>
<title>Title</title>
</head>
<body>
<form action="/student" method="post">
姓名: <input type="text" name="name"><br>
成绩: <input type="text" name="score"><br>
<input type="hidden" name="method" value="add">
<input type="submit" value="提交">
</form>
</body>
</html>
index.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/2/15
Time: 15:56
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>学生管理系统</h1>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>成绩</th>
<th>注册日期</th>
<th>操作</th>
</tr>
<c:forEach items="${requestScope.list}" var="student">
<tr>
<td>${student.id}</td>
<td>${student.name}</td>
<td>${student.score}</td>
<td>${student.data}</td>
<td>
<a href="${pageContext.request.contextPath}/student?method=deleteById&id=${student.id}">删除</a>
<a href="${pageContext.request.contextPath}/student?method=findById&id=${student.id}">修改</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
update.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/2/15
Time: 16:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/student" method="post">
编号: <input type="text" name="id" value="${requestScope.student.id}" readonly><br>
姓名: <input type="text" name="name" value="${requestScope.student.name}"><br>
成绩: <input type="text" name="score" value="${requestScope.student.score}"><br>
<input type="hidden" name="method" value="update">
<input type="submit" value="修改">
</form>
</body>
</html>
因为是自己是初学,所以很多地方都还可以进行优化。