JDBC实践-删除功能的实现

2017-12-06 19:57:09

1. 建立DelUserServlet.java文件,内容如下

package com.ungly.servlet;

import com.ungly.service.DelUserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "DelUserServlet",urlPatterns = "/delUser")
public class DelUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8"); //设置编码
        String id = request.getParameter("id"); //接收id参数
        ListService listService = new ListService();
        boolean status = listService.delUser(id);
        if(status)
        {
            response.sendRedirect("/List");

        }else{
            response.setContentType("text/html;charset=utf-8;");
            PrintWriter writer = response.getWriter();
            writer.write("删除失败");
        }

    }
}

2. 重写UserDao,并在UserDao中加入删除的相关方法

package com.ungly.dao;

import com.ungly.bean.User;
import com.ungly.db.DBAccess;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 和user表相关的数据库操作
 */

public class UserDao {

    private Connection conn = null;
    private PreparedStatement preparedStatement = null;
    private boolean status = false;
    public UserDao() {

        DBAccess dbAccess = new DBAccess();
        try {
            conn = dbAccess.getSqlCon();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * 根据查询条件查询消息列表
     */
    public List<User> queryUserList(String username)
    {
        List<User> userList = new ArrayList<>();

        try {
            StringBuilder sql = new StringBuilder("select id,username from user where 1=1");
            List<String> paramList = new ArrayList<>();
            if(username != null && !"".equals(username.trim()))
            {
                sql.append(" and username=?");
                paramList.add(username);
            }
            this.preparedStatement = conn.prepareStatement(sql.toString());
            for (int i = 0; i < paramList.size(); i++) {
                this.preparedStatement.setString(i+1,paramList.get(i));
            }
            ResultSet resultSet = this.preparedStatement.executeQuery();
            while (resultSet.next())
            {
                User user = new User();
                userList.add(user);
                user.setId(resultSet.getString("id"));
                user.setUsername(resultSet.getString("username"));
            }
        }catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                this.conn.close();
                this.preparedStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return userList;
    }
    

    public boolean delUser(Integer id)
    {

        if(id>0)
        {
            try {
                DBAccess dbAccess = new DBAccess();
                String sql = "DELETE FROM user where id=?";
                this.preparedStatement = this.conn.prepareStatement(sql);
                this.preparedStatement.setInt(1,id);
                int i = this.preparedStatement.executeUpdate();
                if(i>0)
                {
                    this.status = true;
                }else{
                    this.status = false;
                }


            }catch (SQLException e) {
                e.printStackTrace();
            }finally {
                try {
                    this.conn.close();
                    this.preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }else{

            this.status = false;
        }

        return this.status;
    }

}

3. 在ListService.java文件中添加delUser方法,内容如下

public boolean delUser(String id)
    {
        boolean status = false;
        UserDao userDao = new UserDao();
        try {
            status = userDao.delUser(Integer.valueOf(id));
        }catch (Exception e)
        {
            status = false;
        }

        return status;
    }

4.最后修改list.jsp文件,内容如下

<%--
  Created by IntelliJ IDEA.
  User: nosay
  Date: 17-12-5
  Time: 下午3:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html>
<head>
    <title>Title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>

<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <form role="form" method="get" action="">
                <div class="form-group">
                    <label for="username">用户名</label><input class="form-control" name="username" value="${requestScope.username}" id="username" type="username" />
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
            <table class="table">
                <thead>
                <tr>
                    <th>编号</th>
                    <th>用户名</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <c:forEach items="${userList}" var="user" varStatus="status">

                    <tr>
                        <td>${status.index +1}</td>
                        <td>${user.username}</td>
                        <td>编辑 | <a href="/delUser?id=${user.id}">删除</a></td>
                    </tr>

                </c:forEach>

                </tbody>
            </table>
        </div>
    </div>
</div>

</body>
</html>