目录
2、java代码-删除个人员工数据:DelEmpServlet.java
2、java代码-删除所有员工数据:DelAllEmpServlet.java
1、java代码-员工信息列表显示页:ListEmpServlet.java
2、java代码-添加员工信息页:AddEmpServlet.java
一、前言
上几篇文章介绍了如何添加员工数据、查询员工数据、重定向等知识点,详细了解可参考博文:
原创 java服务器端开发-servlet:3、Servlet使用jdbc访问数据库、mysql的简单使用、重定向
原创 java服务器端开发-servlet:3_1、Servlet使用jdbc访问数据库:增加员工信息插入mysql数据库
原创 java服务器端开发-servlet:3_2、Servlet使用jdbc访问数据库:查询员工信息
原创 java服务器端开发-servlet:3_3、Servlet使用jdbc访问数据库:循环查询添加员工信息
原创 java服务器端开发-servlet:3_4、Servlet使用jdbc访问数据库:重定向
这篇文章我们将介绍的案例是:Servlet使用jdbc访问数据库,如何删除个人、所有员工信息,然后重定向到员工列表
二、效果演示
1、查询员工数据列表
启动tomact,部署web项目,在谷歌浏览器输入:http://localhost:8080/web05/show
2、增加新雇员
点击“增加新雇员”,我依次添加了5条数据
3、删除指定员工数据
点击右边的“删除”,如:把第3条和第5条数据删掉
然后添加数据,ID为5的数据没有了,但是新增的数据的ID依然是在它的基础上加1,
也就是主键自增长: id int primary key auto_increment
4、删除所有雇员
点击“删除所有雇员”即可,这个就不贴图演示了
三、删除个人员工信息
1、ListEmpServlet 类关键代码
首先我们来看看 ListEmpServlet 类关键代码:
out.println("<tr><td>" + id
+ "</td><td>" + name
+ "</td><td>" + salary
+"</td><td>" + age
+ "</td><td>"
+"<a href='del?id=" + id + "'>删除</a> ");
//匹配web.xml的 /del,
//找到 DelEmpServlet类,进行数据库操作
//然后其实最终是执行如下链接:
//http://localhost:8080/web05/del?id=xxx
2、java代码-删除个人员工数据:DelEmpServlet.java
package t09_删除员工信息_重定向到员工列表;
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;
/**
* 删除个人员工数据【主要功能】
* @UpdateTime:2011年02月28日 下午17:30:00
* @ProjectName: 【项目名】
* @ClassName:【类名】
* @CategoryName:【类型】如:Activity
* @author:luminal、邮箱 luminal_yyh@163.com
* @since 1.0【版本】
* @Description:(可以在这里描述这个类的作用)
*
* 查询显示
* http://localhost:8080/web05/show
* --- 手动删除 ---
* 删除:根据最左边的id,进行删除
* http://localhost:8080/web05/del?id=xxx
*删除表内所有数据【谨慎使用,测试数据还得自己再次添加】
* http://localhost:8080/web05/delAll
*
*/
public class DelEmpServlet extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
int id = Integer.parseInt(request.getParameter("id"));
Connection conn = null;
PreparedStatement prep = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db",
"root","你的mysql密码");
//删除指定id的一行数据
prep = conn.prepareStatement(
"delete from t_emp where id=?");
prep.setInt(1, id);
prep.executeUpdate();
response.sendRedirect("show");
}catch(Exception e){
e.printStackTrace();
out.println("系统繁忙,稍后重试");
}finally{
if( prep != null){
try {
prep.close();
} catch (SQLException e) {
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
四、删除所有员工信息
1、ListEmpServlet 类 关键代码
首先我们来看看 ListEmpServlet 类 关键代码:
//找到 DelAllEmpServlet类,进行数据库操作
//然后其实最终是执行如下链接:
//http://localhost:8080/web05/delAll
out.println("<a href='delAll'>" + "删除所有雇员</a>");
2、java代码-删除所有员工数据:DelAllEmpServlet.java
与 DelEmpServlet.java 类比较,其实就是修改了一下 sql 语句
package t09_删除员工信息_重定向到员工列表;
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;
/**
* 删除所有员工数据【主要功能】
* @UpdateTime:2011年02月28日 下午17:30:00
* @ProjectName: 【项目名】
* @ClassName:【类名】
* @CategoryName:【类型】如:Activity
* @author:luminal、邮箱 luminal_yyh@163.com
* @since 1.0【版本】
* @Description:(可以在这里描述这个类的作用)
*
* 查询显示
* http://localhost:8080/web05/show
* --- 手动删除 ---
* 删除:根据最左边的id,进行删除
* http://localhost:8080/web05/del?id=xxx
*删除表内所有数据【谨慎使用,测试数据还得自己再次添加】
* http://localhost:8080/web05/delAll
*
*/
public class DelAllEmpServlet extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// int id = Integer.parseInt(request.getParameter("id"));
Connection conn = null;
PreparedStatement prep = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db",
"root","你的mysql密码");
//删除指定id的一行数据
// prep = conn.prepareStatement(
// "delete from t_emp where id=?");
// prep.setInt(1, id);
//删除表里所有数据
prep = conn.prepareStatement(
"delete from t_emp");
//需把前面id的获取代码,注释掉。
//否则报异常:java.lang.NumberFormatException: null
prep.executeUpdate();
response.sendRedirect("show");
}catch(Exception e){
e.printStackTrace();
out.println("系统繁忙,稍后重试");
}finally{
if( prep != null){
try {
prep.close();
} catch (SQLException e) {
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
五、其他代码
1、java代码-员工信息列表显示页:ListEmpServlet.java
package t09_删除员工信息_重定向到员工列表;
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 java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 查询所有员工信息【主要功能】
* @UpdateTime:2011年02月28日 下午17:30:00
* @ProjectName: 【项目名】
* @ClassName:【类名】
* @CategoryName:【类型】如:Activity
* @author:luminal、邮箱 luminal_yyh@163.com
* @since 1.0【版本】
* @Description:(可以在这里描述这个类的作用)
*
* http://localhost:8080/web05/show
*/
public class ListEmpServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//访问数据库
Connection conn = null;
PreparedStatement prep = null;
ResultSet rst = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db",
"root",
"你的mysql密码");
/*Statement stat = conn.createStatement();
ResultSet rst = stat.executeQuery("select * from t_emp");*/
prep = conn.prepareStatement("select *from t_emp");
rst = prep.executeQuery();
//使用查询得到的结果,生成一个表格
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<table border='1' " + "width='60%' "
+ "cellpadding='0' " + "cellspacing='0'"+">");
out.println("<caption>"+"员工信息表"+"</caption>");//表头
//id 在中间,其它可类似
// out.println("<tr>" + "<td align='center'>id</td>" + "<td>姓名</td>" + "<td>薪水</td>"
// + "<td>年龄</td></tr>");
out.println("<tr><td>ID</td><td>姓名</td>" +
"<td>薪水</td><td>年龄</td>" +
"<td>操作</td></tr>");
// while (rst.next()) {
// long id = rst.getLong("id");
// String name = rst.getString("name");
// double salary = rst.getDouble("salary");
// int age = rst.getInt("age");
// out.println("<tr><td>" + id + "</td><td> " + name + "</td><td>"
// + salary + "</td><td> " + age + "</td></tr>");
// }
while(rst.next()){
int id = rst.getInt("id");
String name = rst.getString("name");
double salary =rst.getDouble("salary");
int age = rst.getInt("age");
out.println("<tr><td>" + id
+ "</td><td>" + name
+ "</td><td>" + salary
+"</td><td>" + age
+ "</td><td>"
+"<a href='del?id=" + id + "'>删除</a> ");
//匹配web.xml的 /del,
//找到 DelEmpServlet类,进行数据库操作
//然后其实最终是执行如下链接:
//http://localhost:8080/web05/del?id=xxx
}
out.println("</table>");
out.println("<a href='addEmp.html'>" + "增加新雇员</a>");
//匹配web.xml的 /delAll,
//找到 DelAllEmpServlet类,进行数据库操作
//然后其实最终是执行如下链接:
//http://localhost:8080/web05/delAll
out.println("<a href='delAll'>" + "删除所有雇员</a>");
//out.close();
} catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
2、java代码-添加员工信息页:AddEmpServlet.java
package t09_删除员工信息_重定向到员工列表;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 员工信息插入mysql【主要功能】
* @UpdateTime:2011年02月28日 下午17:30:00
* @ProjectName: 【项目名】
* @ClassName:【类名】
* @CategoryName:【类型】如:Activity
* @author:luminal、邮箱 luminal_yyh@163.com
* @since 1.0【版本】
* @Description:(可以在这里描述这个类的作用)
*/
public class AddEmpServlet extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
request.setCharacterEncoding("utf-8");
//读请求参数
String name = request.getParameter("name");
String salary = request.getParameter("salary");
String age = request.getParameter("age");
//服务端验证一定要有,此处省略...
response.setContentType(
"text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//将员工信息插入数据库【详见JDBC知识点】
//首先要在mysql里面,建数据库jsd1308db,
//建表t_emp,才能进行如下操作【mySql建库、表,详见文档】
Connection conn = null;
PreparedStatement prep = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn =
DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db",
"root","你的mysql密码");
prep =
conn.prepareStatement("insert into " +
"t_emp(name,salary,age) " +
"values(?,?,?)");
prep.setString(1, name);
//salary写成sal,报NullPointerException
//执行后面的-->"系统繁忙,稍后重试"
prep.setDouble(2, Double.parseDouble(salary));
prep.setInt(3, Integer.parseInt(age));
prep.executeUpdate();
out.println("插入成功");
/*
show对应web.xml的“<url-pattern>/show</url-pattern>”
它也可以是一个html,如:ListEmpServlet类调用了addEmp.html
out.println("<a href='addEmp.html'>添加新员工</a>");
*/
//out.println("<a href='show'>"+"查看雇员</a>");
//重定向操作
//上面注释代码,需要点击跳转。重定向不需要点击,自动跳转
response.sendRedirect("show");
//out.close();//不写此代码: 此流,容器会自动关掉。
} catch (Exception e) {
//记日志
e.printStackTrace();
//判断异常是否能恢复,如果
//能够恢复,立即恢复;如果不能够
//恢复(系统异常,比如数据库服务暂停,
//连接数据库的网络中断),则提示用户稍后重试。
out.println("系统繁忙,稍后重试");
}finally{
if(prep != null){
try {
prep.close();
} catch (SQLException e) {
//一定不执行,所以日志都没打印了
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
3、配置文件 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>web03</display-name>
<!-- t09_删除员工信息_重定向到员工列表 -->
<!-- 查询员工信息 -->
<servlet>
<servlet-name>showFormEmp</servlet-name>
<servlet-class>t09_删除员工信息_重定向到员工列表.ListEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>showFormEmp</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
<!-- 添加员工信息 -->
<servlet>
<servlet-name>addEmp</servlet-name>
<servlet-class>t09_删除员工信息_重定向到员工列表.AddEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addEmp</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
<!-- 删除个人员工信息 -->
<servlet>
<servlet-name>deleteEmp</servlet-name>
<servlet-class>t09_删除员工信息_重定向到员工列表.DelEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deleteEmp</servlet-name>
<url-pattern>/del</url-pattern>
</servlet-mapping>
<!-- 删除所有员工信息 -->
<servlet>
<servlet-name>deleteAllEmp</servlet-name>
<servlet-class>t09_删除员工信息_重定向到员工列表.DelAllEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deleteAllEmp</servlet-name>
<url-pattern>/delAll</url-pattern>
</servlet-mapping>
</web-app>
4、 html 表单提交代码:addEmp.html
<html>
<head>
<!-- 模拟一个消息头(content-type) content里面内容:“文本/网页,字符编码”-->
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<!-- body定义总体样式 -->
<body style="font-size:18px; font-style:fond; color:red; ">
<!-- action="add",对应web.xml中标签url-pattern里的"/add" -->
<form action="add" method="post">
<fieldset>
<legend>录入员工信息</legend>
姓名:<input name="name" /><br />
薪水:<input name="salary" /><br />
年龄:<input name="age" /><br />
<input type="submit" value="提交" />
</fieldset>
</form>
</body>
</html>