又是江滨 2023-04-17 01:14 采纳率: 0%
浏览 42
已结题

Servlet管理系统,删除或新增数据到数据库时报错500

纯Servlet管理系统,删除或新增数据到数据库时报错500,但成功删除或保存数据。报错内容如下:

img

img


list页面java代码

package Servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import util.DButil;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//编写DeplistServlet类继承HttpServlet类
public class DeplistServlet extends HttpServlet {

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

    //Ctrl + O 快捷键重写doGet方法
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //获取webapp根路径
        String contextPath = request.getContextPath();

        //设置相应的内容类型以及字符集
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print("<!DOCTYPE html>");
        out.print("<html lang='en'>");
        out.print("<head>");
        out.print("    <meta charset='UTF-8'>");
        out.print("    <meta http-equiv='X-UA-Compatible' content='IE=edge'>");
        out.print("    <meta name='viewport' content='width=device-width, initial-scale=1.0'>");
        out.print("    <title>部门列表页面</title>");

        //一段js脚本,写del函数
        out.print("<script type='text/javascript'> ");
        out.print("function del(dno){ ");
        out.print("if(window.confirm('确认删除?')){ ");
        out.print("document.location.href ='"+contextPath+"/dept/delete?deptno='+dno");
        out.print("} ");
        out.print("} ");
        out.print("</script> ");

        out.print("</head>");
        out.print("<body>");
        out.print("    <h1 align='center'>部门列表</h1>");
        out.print("    <hr>");
        out.print("    <table border='=1px' align='center' width='50%'>");
        out.print("        <tr>");
        out.print("            <th>序号</th>");
        out.print("            <th>部门编号</th>");
        out.print("            <th>部门名称</th>");
        out.print("            <th>操作</th>");
        out.print("        </tr>");

        //连接数据库,查询所有的部门
        Connection coon = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //获取链接
            coon = DButil.getConnection();
            //获取预编译的数据库操作对象
            String sql = "select deptno,dname,loc from dept";
            ps = coon.prepareStatement(sql);
            //执行sql语句
            rs = ps.executeQuery();
            //处理结果集
            int i = 0;  //用来递增
            while (rs.next()) {
                String deptno = rs.getString("deptno");
                String dname = rs.getString("dname");
                String loc = rs.getString("loc");
                out.print("        <tr>");
                out.print("            <td>"+(++i)+"</td>");
                out.print("            <td>"+deptno+"</td>");
                out.print("            <td>"+dname+"</td>");
                out.print("            <td><a href='javascript:void(0)' onclick='del("+deptno+")'>删除</a>");
                out.print("                <a href='edit.html'>修改</a>");
                out.print("                <a href='"+contextPath+"/dept/detail?deptno="+deptno+"'>详情</a></td>");
                out.print("        </tr>");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            //释放资源
            DButil.close(coon,ps,rs);
        }

        out.print("    </table>");
        out.print("    <hr>");
        out.print("    <a href='"+contextPath+"/add.html'>新增部门</a>");
        out.print("</body>");
        out.print("</html>");
    }
}

del页面java代码

package Servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import util.DButil;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DepDelServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //根据部门编号删除部门
        //获取部门编号
        String deptno = request.getParameter("deptno");
        //连接数据库删除数据
        Connection coon = null;
        PreparedStatement ps = null;
        int count = 0;
        try {
            coon = DButil.getConnection();
            //开启事务(自动提交机制关闭)
            coon.setAutoCommit(false);
            String sql = "delete from dept where deptno = ?";
            ps = coon.prepareStatement(sql);
            ps.setString(1,deptno);
            //返回值是:影响了数据库表中多少条记录
            count = ps.executeUpdate();
            //事务提交
            coon.commit();
        } catch (SQLException e) {
            //遇到异常要回滚
            if(coon != null){
                try {
                    coon.rollback();
                } catch (SQLException ex) {
                    throw new RuntimeException(ex);
                }
            }
            throw new RuntimeException(e);
        }finally {
            DButil.close(coon,ps,null);
        }
        //判断删除成功还是失败
        if (count == 1) {
            //删除成功,仍然跳回到部门列表页面,他的显示需要执行另一个servlet,怎么办?用转发或重定向
            request.getRequestDispatcher("/dept/list").forward(request,response);
        }else{
            //删除失败
        }
    }
}


save页面java代码

package Servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import util.DButil;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DepSaveServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //获取部门信息
        String deptno = request.getParameter("deptno");
        String dname = request.getParameter("dname");
        String loc = request.getParameter("loc");
        //连接数据库
        Connection coon = null;
        PreparedStatement ps = null;
        int count = 0;
        try {
            coon = DButil.getConnection();
            String sql = "insert into dept(deptno,dname,loc) values(?,?,?)";
            ps = coon.prepareStatement(sql);
            ps.setString(1,deptno);
            ps.setString(2,dname);
            ps.setString(3,loc);
            count = ps.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            DButil.close(coon,ps,null);
        }
        //保存成功跳转到列表页面
        if (count == 1) {
            request.getRequestDispatcher("/dept/list").forward(request,response);
        }
    }
}


  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-17 02:06
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月19日
  • 修改了问题 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?