JavaWeb MySQL增删实现:Servlet、JDBC与HTML表单完整教程

苏见山
苏见山
发布时间:2026-10-16 | 5人浏览过
原创

本文详细讲解如何利用JavaWeb中的Servlet技术结合JDBC驱动,实现对MySQL数据库数据的添加与删除操作。文章梳理了从环境准备、项目结构搭建、代码编写到最终部署验证的完整流程,帮助开发者快速掌握基础的Web层与数据库交互方法。

操作结果与目标

完成本教程后,你将能够构建一个简易的员工管理系统(EMS),实现以下核心功能:

  • 数据展示:从数据库读取员工信息并渲染至浏览器表格。
  • 数据添加:通过HTML表单提交新员工数据并存入MySQL数据库。
  • 数据删除:根据工号标识,精准删除指定员工的数据库记录。

准备条件

在开始编码之前,需确保开发环境满足以下要求:本地已安装并运行MySQL服务,创建名为 ems 的数据库及对应的 user 表;开发工具(如Eclipse或IntelliJ IDEA)中已建立标准的Java Web (Dynamic Web Project) 工程,并导入JDBC驱动的依赖JAR包。

第1步:创建Servlet工程与包结构

首先,在开发工具中创建一个基于Java EE的动态Web项目。为了保持代码规范,建议在 src 目录下新建一个专门的Java包用于存放业务逻辑,例如命名为 EMS。

接着,在该包下分别创建三个继承自 HttpServlet 的类文件:UserListServlet(负责查询并展示数据)、UserAddServlet(处理新增请求)以及 UserDeleteServlet(执行删除操作)。

第2步:配置Web部署描述符 (web.xml)

为了让Tomcat服务器能够识别并路由HTTP请求,需要在项目的 WEB-INF 目录下的 web.xml 文件中注册上述三个Servlet,并设置其对应的URL访问模式(url-pattern)。

<servlet>
    <servlet-name>UserListServlet</servlet-name>
    <servlet-class>EMS.UserListServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>UserDeleteServlet</servlet-name>
    <servlet-class>EMS.UserDeleteServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>UserAddServlet</servlet-name>
    <servlet-class>EMS.UserAddServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UserListServlet</servlet-name>
    <url-pattern>/list</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
		<servlet-name>UserDeleteServlet</servlet-name>
		<url-pattern>/delete</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>UserAddServlet</servlet-name>
    <url-pattern>/addUser</url-pattern>
  </servlet-mapping>

第3步:设计前端交互页面 (addUser.html)

在Web根目录创建一个 addUser.html 文件,用于接收用户输入。该表单采用 POST 方法向 addUser 地址发起请求,这与上面配置的url-pattern相匹配。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>添加员工</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  
  <body>
    <center>
    	<h1>添加员工信息</h1>
    	<form action="addUser" method="post">
			工号:<input type="text" name="id"/><br/>
			姓名:<input type="text" name="name"/><br/>
			工资:<input type="text" name="salary"/><br/>
			年龄:<input type="text" name="age"/><br/>
			<input type="submit" name="smt" value="提交"/>
    	</form>
    </center>
  </body>
</html>

真实操作顺序:核心代码编写

以下是各部分 Servlet 的具体实现逻辑。请注意实际项目中建议将数据库连接参数封装为工具类(如DBUtil),此处为展示原理保留了直连方式或简略写法。

第4步:编写列表查询 Servlet (UserListServlet)

此类主要重写 doGet 方法。通过JDBC加载驱动、获取连接、预编译查询语句 select * from user,并将结果集遍历打印为HTML表格返回给浏览器。同时,在每行末尾附加带有删除链接的锚点。

package EMS;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//员工信息查询的Servlet
public class UserListServlet extends HttpServlet {

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//使用JDBC连接mysql数据库,将user表中的输出查询处理
		ResultSet result=null;
		Connection con=null;
		try {
			//(1)注册加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//(2)获得数据库的链接
			//(1).连接mysql的url地址
			String url="jdbc:mysql://localhost:3306/ems";
			//(2).连接mysql的用户名
			String username="root";
			//(3).连接mysql的密码
			String pwd="123456";
			con=DriverManager.getConnection(url, username, pwd);
			//(3)预编译sql语句
			System.out.println("MySQL连接成功!"+con);
			
			//3.预编译SQL语句
			String sql="select * from user";
			PreparedStatement prep=con.prepareStatement(sql);
			//(4)执行sql语句
			result=prep.executeQuery();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//使用response,获得字符输出流PrintWriter,将查询出的结果输出到浏览器端
		//设置格式编码
		response.setContentType("text/html;charset=utf-8");
		
		//向浏览器端输出一个表格
		PrintWriter pw=response.getWriter();
		pw.println("<table border='1' cellspacing='0' width='400' height='80' align='center'>");
		pw.println("<caption>员工信息表</caption>");
		pw.println("<tr align='center'>");
		pw.println("<td>工号</td><td>姓名</td><td>工资</td><td>年龄</td>");
		pw.println("</tr>");
		try {
			while(result.next())
			{
				pw.println("<tr align='center'><td>"+result.getInt("id")+"</td><td>"
				+result.getString("name")+"</td><td>"+result.getDouble("salary")+"</td><td>"
				+result.getInt("age")+"</td><td><a href='delete?id="+result.getInt("id")+"'>删除</a></td></tr>");
				System.out.println(result.getInt("id")+"---"+result.getString("name")+"---"+
						result.getDouble("salary")+"---"+result.getInt("age"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		//表格的最后一行
		pw.println("<tr><td colspan='5'><a href='addUser.html'>添加员工信息</a></td></tr>");
		pw.println("</table>");
		//关闭
		try {
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

}

第5步:编写添加功能 Servlet (UserAddServlet)

此类重写 doPost 方法,从 request 对象中获取表单传递的参数。随后利用 PreparedStatement 预处理插入语句 insert into user values(?,?,?,?),绑定参数并执行更新。完成后重定向回列表页以显示最新数据。

package EMS;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DBUtil.DBUtil;
//添加员工信息的Servlet
public class UserAddServlet extends HttpServlet {

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String strId=request.getParameter("id");
		String strName=request.getParameter("name");
		String strSal=request.getParameter("salary");
		String strAge=request.getParameter("age");
		System.out.print(strId+strName+strSal+strAge);
	
		
		try {
			//使用jdbc连接数据库
			Connection con=DBUtil.getCon("ems");
			//预编译sql语句
			String sql="insert into user values(?,?,?,?)";
			PreparedStatement prep=con.prepareStatement(sql);
			prep.setInt(1, Integer.parseInt(strId));
			prep.setString(2, strName);
			prep.setDouble(3, Double.parseDouble(strSal));
			prep.setInt(4, Integer.parseInt(strAge));
			//执行sql语句
			prep.executeUpdate();
			//关闭数据库的连接
			con.close();
		} catch (Exception e) {	
			e.printStackTrace();
		}
		//插入成功后,回到list首页
		//重定向
		response.sendRedirect("list");
	}

}

第6步:编写删除功能 Servlet (UserDeleteServlet)

此类重写 doGet 方法,解析URL参数中的 id。构建删除SQL delete from user where id=?,设置预编译参数并执行 executeUpdate()。删除操作结束后同样重定向回列表页面。

package EMS;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DBUtil.DBUtil;
//员工信息删除的Servlet
public class UserDeleteServlet extends HttpServlet {

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//接收请求中的参数
		//http://localhost:8080/Servlet/delete?id=2
		String strId=request.getParameter("id");
		//System.out.println("工号:"+strId);
		try {
			//2~3,使用JDBC连接mysql数据库,完成删除的操作
			Connection con=DBUtil.getCon("ems");
			//System.out.println(con);//com.mysql.jdbc.JDBC4Connection@64dfeb
			//预编译sql语句
			String sql="delete from user where id=?";
			PreparedStatement prep=con.prepareStatement(sql);
			//设置sql语句中的问号   参数1:表示第几个问好   参数2:对问号设置的内容
			prep.setInt(1,Integer.parseInt(strId));
			//执行sql语句
			//executeUpdate()适用于删除delete、修改update、插入insert     executeQuery()适用于查询select
			prep.executeUpdate();
			//关闭数据库的连接
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		//4,删除成功以后,回到http://localhost:8080/ems-servlet/list首页地址
		//转发技术:将未完成的工作交给下一个组件继续完成,浏览器地址栏的地址不会发生变化,它是一次请求
		//重定向技术:已经完成了工作,只是为了跳转到下一个地址显示,浏览器地址栏的地址会发生变化,是两次请求
		//写一个Servlet对应的url-pattern地址,会重定向到对应的Servlet来执行
		response.sendRedirect("list");
	}
	

}

完成判断与效果展示

代码编写完毕后,需在集成开发环境中启动Tomcat服务器。若控制台无报错且显示Server start successed即为部署成功。

此时打开浏览器访问对应路径,即可进入系统主界面验证各项功能:

显示数据库数据

删除数据库数据

添加数据库数据

简要总结

以上就是JavaWeb结合JDBC与Servlet实现MySQL数据库数据的添加和删除的详细内容,更多关于JavaWeb基础实战的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表