前言

本次作业工具的使用版本:idea2023        tomcat 10.0        mysql 8.0   mysql连接驱动8.0    jdk 11

本文代码的登录修改增加有很多数据和异常未处理,可能会出现数据有误或报空指针异常,登录也没有使用过滤器拦截,需要可以自行添加

数据库用户名和密码需要在DB类中改为自己的用户名和密码

一、环境搭建:

1.创建空项目

2.创建模块

3.添加框架支持

3.添加web应用程序

4.编辑配置

选择本地tomcat服务器

配置tomcat服务器

5.编辑项目结构

添加依赖

6.运行

弹出此页面表示成功

二、工具类及实体

1.数据库连接类DB.java

package com.example.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DB {
    private static final String URL = "jdbc:mysql://localhost:3306/db_student";
    private static final String USER = "root";
    private static final String PASSWORD = "1234";

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException("Unable to load MySQL JDBC driver. Check your classpath.");
        }
    }

    public static Connection getConnection() throws SQLException {
        Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
        return connection;
    }
}

2. PageHelper.java 

package com.example.util;

public class PageHelper {
    private Integer pageNo;//页码
    private Integer pageSize=10;//默认每页显示10条数
    private Integer pageCount;//总条数
    private Integer pageTotal;//总页数


    public Integer getPageTotal() {
        return pageTotal;
    }


    public PageHelper() {
    }

    public PageHelper(int pageSize, int pageCount){
        this.pageSize = pageSize;
        this.pageCount = pageCount;
        if (this.pageCount % this.pageSize == 0) {
            // 计算总页数
            this.pageTotal = this.pageCount / this.pageSize;
        } else {
            this.pageTotal = this.pageCount / this.pageSize + 1;
        }
    }

    public Integer getPageNo() {
        return pageNo;
    }

    public void setPageNo(Integer pageNo) {
        this.pageNo = pageNo;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getPageCount() {
        return pageCount;
    }

    public void setPageCount(Integer pageCount) {
        this.pageCount = pageCount;
    }
}

3.Student.java 

package com.example.entity;

import java.time.LocalDateTime;

public class Student {
    Integer studentId; //学生id
    String studentNo ;//学生学号
    String studentName;//学生姓名
    String sex ; //学生性别
    Integer age ;//学生年龄
    String className ;//学生班级
    String note ;//注释
    LocalDateTime timeRenew;//时间

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "studentId=" + studentId +
                ", studentNo='" + studentNo + '\'' +
                ", studentName='" + studentName + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", className='" + className + '\'' +
                ", note='" + note + '\'' +
                ", timeRenew=" + timeRenew +
                '}';
    }

    public Integer getStudentId() {
        return studentId;
    }

    public void setStudentId(Integer studentId) {
        this.studentId = studentId;
    }

    public String getStudentNo() {
        return studentNo;
    }

    public void setStudentNo(String studentNo) {
        this.studentNo = studentNo;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public LocalDateTime getTimeRenew() {
        return timeRenew;
    }

    public void setTimeRenew(LocalDateTime timeRenew) {
        this.timeRenew = timeRenew;
    }

    public Student(String studentNo, String studentName, String sex, Integer age, String className, String note) {
        this.studentNo = studentNo;
        this.studentName = studentName;
        this.sex = sex;
        this.age = age;
        this.className = className;
        this.note = note;
    }
}

三、功能实现

jsp文件放在web目录下

java文件放在src目录下

1.登录功能

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
    <style>
        form{
            margin: 0 30% ;
        }
    </style>
</head>
<body>
<form action="/loginServlet" method="post">
    学号:<input type="text" name="studentNo" value="123456" ><br>
    姓名:<input type="text" name="studentName" value="admin" ><br>
    <input type="submit" value="登录">
</form>

</body>
</html>

 LoginServlet.java

import com.example.mapper.StudentMapper;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

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

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    StudentMapper studentMapper;

    {
        try {
            studentMapper = new StudentMapper();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        String studentNo = req.getParameter("studentNo");
        String studentName = req.getParameter("studentName");

        try {
            if(studentMapper.loginCheck(studentNo,studentName)){
                req.getSession().setAttribute("studentName",studentName);
                req.getRequestDispatcher("functionPage.jsp").forward(req,resp);
            }else {
                req.getRequestDispatcher("login.jsp").forward(req,resp);
            }

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


    }
}

StudentMapper 

import com.example.entity.Student;
import com.example.util.DB;
import com.example.util.PageHelper;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class StudentMapper {
    private Connection conn;

    //重写无参构造方法来获取数据库连接
    public StudentMapper() throws SQLException {
        this.conn = DB.getConnection();  //获取数据库连接对象
    }

    //根据Id修改学生数据
    public boolean updateById(String studentId, Student student) throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }
        //查询学号是否重复
        PreparedStatement preparedStatement = conn.prepareStatement("select * from tb_student where studentNo=?");
        preparedStatement.setString(1, student.getStudentNo());
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            return false;
        }


        preparedStatement = conn.prepareStatement("update tb_student set studentNo=?,studentName=?,sex=?,age=?,className=?," +
                "note=?,timeRenew=? where studentId=?");
        preparedStatement.setString(1, student.getStudentNo());
        preparedStatement.setString(2, student.getStudentName());
        preparedStatement.setString(3, student.getSex());
        preparedStatement.setInt(4, student.getAge());
        preparedStatement.setString(5, student.getClassName());
        preparedStatement.setString(6, student.getNote());
        preparedStatement.setTimestamp(7, new Timestamp(System.currentTimeMillis()));
        preparedStatement.setString(8, studentId);

        int i = preparedStatement.executeUpdate();
        System.out.println("更新了" + i + "条数据");
        //关闭连接
        conn.close();
        preparedStatement.close();

        return true;
    }

    //根据ID查询学生数据
    public Student getById(String studentNo) throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }
        Student student = new Student();
        PreparedStatement preparedStatement = conn.prepareStatement("select * from tb_student where studentNo = ?");
        preparedStatement.setString(1, studentNo);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            student.setStudentId(resultSet.getInt("studentId"));
            student.setStudentNo(resultSet.getString("studentNo"));
            student.setStudentName(resultSet.getString("studentName"));
            student.setSex(resultSet.getString("sex"));
            student.setAge(Integer.parseInt(resultSet.getString("age")));
            student.setClassName(resultSet.getString("className"));
            student.setNote(resultSet.getString("note"));
            student.setTimeRenew(resultSet.getTimestamp("timeRenew").toLocalDateTime());
        }

        //关闭连接
        conn.close();
        preparedStatement.close();
        resultSet.close();
        return student;
    }

    //查询总记录数
    public int getCount() throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }
        //查询总记录数
        PreparedStatement preparedStatement = conn.prepareStatement("select count(1) from tb_student");
        ResultSet resultSet = preparedStatement.executeQuery();
        int pageCount = 0;

        while (resultSet.next()) {
            pageCount = Integer.parseInt(resultSet.getString(1));
        }

        conn.close();
        preparedStatement.close();
        resultSet.close();

        return pageCount;
    }


    //分页查询
    public List<Student> getPage(PageHelper page) throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }

        conn = DB.getConnection();
        //创建学生列表,存储学生信息
        List<Student> list = new ArrayList<>();
        //获取创建pageHelper对象并生成总页数

        PreparedStatement pre = conn.prepareStatement("select *" +
                "from tb_student limit ?,?");
        pre.setInt(1, (page.getPageNo() - 1) * page.getPageSize());
        pre.setInt(2, page.getPageSize());
        //执行查询
        ResultSet resultSet = pre.executeQuery();

        while (resultSet.next()) {
            //将数据装入学生列表
            Student student = new Student();
            student.setStudentId(resultSet.getInt("studentId"));
            student.setStudentNo(resultSet.getString("studentNo"));
            student.setStudentName(resultSet.getString("studentName"));
            student.setSex(resultSet.getString("sex"));
            student.setAge(resultSet.getInt("age"));
            student.setClassName(resultSet.getString("className"));
            student.setNote(resultSet.getString("note"));
            student.setTimeRenew(resultSet.getTimestamp("timeRenew").toLocalDateTime());
            list.add(student);
        }

        //关闭连接
        conn.close();
        pre.close();
        resultSet.close();

        return list;
    }

    //登录校验
    public boolean loginCheck(String studentNo, String studentName) throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }
        PreparedStatement preparedStatement = conn.prepareStatement("select * from tb_student where studentNo=? and " +
                "studentName=?");
        preparedStatement.setString(1, studentNo);
        preparedStatement.setString(2, studentName);
        ResultSet res = preparedStatement.executeQuery();
        while (!res.next()) {
            System.out.println("登录失败");
            return false;
        }
        conn.close();
        preparedStatement.close();
        res.close();
        System.out.println("登录成功");
        return true;
    }

    //添加学生
    public boolean addStudent(Student student) throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }

        //查询学号是否重复
        PreparedStatement preparedStatement = conn.prepareStatement("select * from tb_student where studentNo=?");
        preparedStatement.setString(1, student.getStudentNo());
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            return false;
        }

        preparedStatement = conn.prepareStatement("insert into tb_student(studentNo, studentName, sex, age, " +
                "className, note, timeRenew) VALUES(?,?,?,?,?,?,?)");
        preparedStatement.setString(1, student.getStudentNo());
        preparedStatement.setString(2, student.getStudentName());
        preparedStatement.setString(3, student.getSex());
        preparedStatement.setInt(4, student.getAge());
        preparedStatement.setString(5, student.getClassName());
        preparedStatement.setString(6, student.getNote());
        preparedStatement.setTimestamp(7, new Timestamp(System.currentTimeMillis()));

        int i = preparedStatement.executeUpdate();

        conn.close();
        preparedStatement.close();

        if (i == 0) {
            System.out.println("添加失败");
            return false;
        }
        return true;
    }

    //删除学生信息
    public void deleteStudent(int studentNo) throws SQLException {
        if (conn.isClosed()) {
            conn = DB.getConnection();
        }
        PreparedStatement preparedStatement = conn.prepareStatement("delete from tb_student where studentId=?");
        preparedStatement.setInt(1, studentNo);
        int i = preparedStatement.executeUpdate();
        System.out.println("删除了学号为:" + studentNo + "的学生数据");

        conn.close();
        preparedStatement.close();
    }


    //查询学生信息
    public List<Student> query(String studentNo, String studentName) throws SQLException {
        if (conn.isClosed()){
            conn = DB.getConnection();
        }
        PreparedStatement preparedStatement = conn.prepareStatement("select * from tb_student where studentNo like concat('%',?,'%') and studentName like concat('%',?,'%') ");
        preparedStatement.setString(1,studentNo);
        preparedStatement.setString(2,studentName);
        ResultSet resultSet = preparedStatement.executeQuery();

        List<Student> list = new ArrayList<>();
        while (resultSet.next()){
            //将数据装入学生列表
            Student student = new Student();
            student.setStudentId(resultSet.getInt("studentId"));
            student.setStudentNo(resultSet.getString("studentNo"));
            student.setStudentName(resultSet.getString("studentName"));
            student.setSex(resultSet.getString("sex"));
            student.setAge(resultSet.getInt("age"));
            student.setClassName(resultSet.getString("className"));
            student.setNote(resultSet.getString("note"));
            student.setTimeRenew(resultSet.getTimestamp("timeRenew").toLocalDateTime());
            list.add(student);
        }


        conn.close();
        preparedStatement.close();
        resultSet.close();
        return list;
    }
}

2.功能页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生管理</title>
    <style>

        .container{
            /*margin: auto;*/
            padding-left: inherit;
        }
        .table_title {
            background: cornflowerblue;
        }

        td {
            /*width: 500px;*/
            border: 1px solid black;
            text-align: center;
            border-collapse: collapse;
        }
        .aa{
            margin:0 auto;
            width:500px;
            height: 150px;
            border-collapse: collapse;
        }
        .welcome{
            margin: auto;
            padding-left: 47%;
            color: red;
        }
        .exit{
            font-size: 30px;
        }
    </style>
</head>
<body>

<div class="container">

    <h1 align="center">用户功能</h1>
    <span class="welcome">欢迎${studentName}登录</span>
    <span class="exit" ><a href="login.jsp">退出</a></span>

    <table class="aa">
        <tr>
            <th class="table_title" colspan="3"> 用户功能列表</th>
        </tr>

        <tr>
            <td>学生管理</td>
            <td colspan="3">
                <a href="addStudent.jsp">新添</a>
                <a href="query.jsp">列表/查询</a>
                <a href="studentPageQuery.jsp">学生分页 删除 修改</a>
            </td>
        </tr>

    </table>

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

3.分页查询

StudentPageQuery.jsp


<%@ page import="com.example.entity.Student" %>
<%@ page import="com.example.util.PageHelper" %>
<%@ page import="com.example.mapper.StudentMapper" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生分页</title>
    <style>
        .pageInfo{
            margin:0 auto;
            height: 100px;
            border-collapse: collapse;
            border: 1px solid black;
            text-align: center;

        }
        th{
            text-align: left;
        }
        .pageInfo_th,.pageInfo_td,.pageInfo_tr{
            width: 100px;
            border: 1px solid black;
            text-align: center;
            border-collapse: collapse;
        }

        .page{
            margin:0 auto;
        }

    </style>
</head>
<body>

<table class="pageInfo" cellpadding="10px">
    <tr class="pageInfo_tr">
        <th class="pageInfo_th">学号</th>
        <th class="pageInfo_th">姓名</th>
        <th class="pageInfo_th">性别</th>
        <th class="pageInfo_th">年龄</th>
        <th class="pageInfo_th">班级</th>
        <th class="pageInfo_th">描述</th>
        <th class="pageInfo_th">更新时间</th>
        <th class="pageInfo_th" colspan="2">管理</th>
    </tr>


    <%
        //获取页码
        String pageNo = request.getParameter("page");
        //初始页第一页
        int pno = 1;
        if (pageNo != null && !pageNo.equals("")) {
            try {
                pno = Integer.parseInt(pageNo);
            } catch (Exception e) {
                pno = 1;
            }
        }

        //每次页面跳转都需要刷新页面
        StudentMapper studentMapper = new StudentMapper();
        //10 表示每页显示10条记录数
        PageHelper pageHelper = new PageHelper(5, studentMapper.getCount());
        //设置页码
        pageHelper.setPageNo(pno);
        //获取本页数据
        List<Student> list = studentMapper.getPage(pageHelper);
        //使用迭代器进行遍历
        for (Student s : list) {
            out.print("<tr class=\"pageInfo_tr\">");
            out.print("<td class=\"pageInfo_td\">" + s.getStudentNo() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + s.getStudentName() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + s.getSex() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + s.getAge() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + s.getClassName() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + s.getNote() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + s.getTimeRenew() + "</td>");
            out.print("<td class=\"pageInfo_td\">" + "<a href=\"/deleteStudent?studentId="+s.getStudentId()+"\">" + "删除" + "</a></td>");
            out.print("<td class=\"pageInfo_td\">" + "<a href=\"/update.jsp?studentId="+s.getStudentId()+"\">" + "修改" + "</a></td>");
            out.print("</tr>");
        }
    %>

</table>


<table  cellspacing="10px" class="page">
    <tr>
        <td>共<% out.print(pageHelper.getPageTotal()); %>页</td>
        <%
            out.print("<td><a href=\"studentPageQuery.jsp?page=" + 1 + "\"" + ">首页</a></td>");

            if (pageHelper.getPageNo() > 1) {
                out.print("<td><a href=\"studentPageQuery.jsp?page=" + (pageHelper.getPageNo() - 1) + "\"" + ">上一页</a></td>");
            }
            if (pageHelper.getPageNo() < pageHelper.getPageTotal()) {
                out.print("<td><a href=\"studentPageQuery.jsp?page=" + (pageHelper.getPageNo() + 1) + "\"" + ">下一页</a></td>");
            }
            out.print("<td><a href=\"studentPageQuery.jsp?page=" + (pageHelper.getPageTotal()) + "\"" + ">尾页</a></td>");
        %>
        <td><a href="functionPage.jsp">返回功能页</a></td>
    </tr>
</table>

</body>
</html>

4.增删改查

a.增删改查jsp代码

add.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>新增学生</title>
    <style>
        div{
            font-size: larger;

        }
        form{
            width: 300px;
            margin: auto;
        }
    </style>
</head>
<body>
<div>
    <h1 align="center">新增学生</h1>
    <form action="/addStudent" method="post">
        学号:<input type="text" name="studentNo"><br>
        姓名:<input type="text" name="studentName"><br>
        男:<input type="radio" name="sex"> 女:<input type="radio" name="sex"><br>
        年龄:<input type="number" name="age"><br>
        班级:<input type="text" name="className"><br>
        记录:<input type="text" name="note"><br>
        <input type="submit" value="添加" style="margin-left: 80px;width: 100px"><br>
    </form>
    <a href="functionPage.jsp" style="margin:0 40%;">返回功能页</a>
</div>


</body>
</html>

query.jsp

<%@ page import="com.example.entity.Student" %>
<%@ page import="java.util.List" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>查询学生信息</title>
    <style>
        table{
            margin:0 auto;
            height: 100px;
            border-collapse: collapse;
            border: 1px solid black;
            text-align: center;

        }
        th{
            text-align: left;
        }
        th,tr,td{
            width: 100px;
            border: 1px solid black;
            text-align: center;
            border-collapse: collapse;
        }

        form{
            float: left;
            margin: 0 15%;
        }
    </style>
</head>
<body>
<div>
    <form action="/query" method="post">
        学号搜索框:<input type="text" name="sno">
        姓名搜索框:<input type="text" name="sName">
        <input type="submit" value="查询">
    </form>
    <a href="functionPage.jsp">返回功能页</a>
</div>
<br>


<%
    Object list = request.getAttribute("list");
    if (list != null) {
        out.print("<table cellpadding=\"10px\">");
        out.print("<tr>" +
                "        <th>学号</th>" +
                "        <th>姓名</th>" +
                "        <th>性别</th>" +
                "        <th>年龄</th>" +
                "        <th>班级</th>" +
                "        <th>描述</th>" +
                "        <th>更新时间</th>" +
                "    </tr>");
        List<Student> studentList = (List<Student>) list;
        for (Student s : studentList) {
            out.print("<tr>");
            out.print("<td>"+s.getStudentNo()+"</td>");
            out.print("<td>"+s.getStudentName()+"</td>");
            out.print("<td>"+s.getSex()+"</td>");
            out.print("<td>"+s.getAge()+"</td>");
            out.print("<td>"+s.getClassName()+"</td>");
            out.print("<td>"+s.getNote()+"</td>");
            out.print("<td>"+s.getTimeRenew()+"</td>");
            out.print("</tr>");

        }
        out.print("<table>");

    }
%>


</table>
</body>
</html>

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改学生数据</title>
</head>
<body>
<%out.print("<form action=\"/update?studentId="+request.getParameter("studentId")+ "\"method=\"post\">");%>
    学号:<input type="text" name="studentNo"><br>
    姓名:<input type="text" name="studentName"><br>
    男:<input type="radio" name="sex" value="男"> 女:<input type="radio" name="sex" value="女"><br>
    年龄:<input type="number" name="age"><br>
    班级:<input type="text" name="className"><br>
    记录:<input type="text" name="note"><br>
    <input type="submit" value="修改" style="margin-left: 80px;width: 100px"><br>
</form>

</body>
</html>

b.增删改查java代码 

AddStudent.java

package com.example.controller;

import com.example.entity.Student;
import com.example.mapper.StudentMapper;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.sql.SQLException;
import java.time.LocalDateTime;

@WebServlet("/addStudent")
public class AddStudent extends HttpServlet {
    StudentMapper studentMapper;

    {
        try {
            studentMapper = new StudentMapper();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //防止中文乱码,设置解码方式为UTF-8
        req.setCharacterEncoding("UTF-8");
        //将用户输入内容装进student实体中
        Student student = new Student();
        try {
            student.setStudentNo(req.getParameter("studentNo"));
            student.setStudentName(req.getParameter("studentName"));
            student.setSex(req.getParameter("sex"));
            System.out.println(student.getSex());
            student.setAge(Integer.parseInt(req.getParameter("age")));
            student.setClassName(req.getParameter("className"));
            student.setNote(req.getParameter("note"));
            student.setTimeRenew(LocalDateTime.now());
        }catch (Exception e){
            req.setAttribute("msg","数据不完整,请输入数据!!!");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }


        try {
            if(studentMapper.addStudent(student)){
                req.setAttribute("msg","登录成功!!!");
                req.getRequestDispatcher("success.jsp").forward(req,resp);
            }else {
                req.setAttribute("msg","操作失败,学号重复");
                req.getRequestDispatcher("error.jsp").forward(req,resp);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }


        //req.getParameter("")
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

DeleteStudentServlet.java

package com.example.controller;

import com.example.mapper.StudentMapper;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

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

@WebServlet("/deleteStudent")
public class DeleteStudentServlet extends HttpServlet {
    StudentMapper studentMapper;

    {
        try {
            studentMapper = new StudentMapper();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");

        int studentNo = 0;
        try {
            studentNo = Integer.parseInt(req.getParameter("studentId"));
        } catch (NumberFormatException e) {
            req.setAttribute("msg","删除失败,请重新尝试!");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }

        try {
            studentMapper.deleteStudent(studentNo);
            req.getRequestDispatcher("studentPageQuery.jsp").forward(req,resp);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

}

QueryServlet.java 

package com.example.controller;

import com.example.entity.Student;
import com.example.mapper.StudentMapper;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet("/query")
public class QueryServlet extends HttpServlet {
    StudentMapper studentMapper;

    {
        try {
            studentMapper = new StudentMapper();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String studentNo = req.getParameter("sno");
        String studentName = req.getParameter("sName");

        try {
            List<Student> list = studentMapper.query(studentNo, studentName);
            req.setAttribute("list",list);
            req.getRequestDispatcher("query.jsp").forward(req,resp);
        } catch (SQLException e) {
            req.setAttribute("msg","查询失败,请重新操作!!!");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

 UpdateServlet.java

package com.example.controller;

import com.example.entity.Student;
import com.example.mapper.StudentMapper;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

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

@WebServlet("/update")
public class UpdateServlet extends HttpServlet {
    StudentMapper studentMapper;

    {
        try {
            studentMapper = new StudentMapper();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        try {
            //获取学号及要更新的数据
            String studentId = req.getParameter("studentId");
            Student student = studentMapper.getById(studentId);
            System.out.println(studentId);

            student.setStudentNo(req.getParameter("studentNo"));
            student.setStudentName(req.getParameter("studentName"));
            student.setSex(req.getParameter("sex"));
            student.setAge(Integer.parseInt(req.getParameter("age")));
            student.setClassName(req.getParameter("className"));
            student.setNote(req.getParameter("note"));

            studentMapper.updateById(studentId, student);

            req.getRequestDispatcher("studentPageQuery.jsp").forward(req,resp);

        } catch (Exception e) {
            req.setAttribute("msg","学号不能重复");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

}

 四.运行效果

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐