纯Servlet管理系统,删除或新增数据到数据库时报错500,但成功删除或保存数据。报错内容如下:
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);
}
}
}