学习javaWeb,首先要学习基础的jsp,servlet,弄通了机制然后就得心应手了。我们来实现一个简单的实例来学习。
我们的任务有:1.数据库及表创建
2.实现用户注册
3.实现用户登录
4.实现用户列表显示
5.实现用户删除
6.实现用户信息查看
7.实现用户信息修改
上节实现的是用户列表显示,本节来实现用户删除
五、实现用户删除
用户删除操作在用户列表界面进行,可以分为:
1.单条数据删除
2.批量删除
1.单条用户删除
单条用户删除是通过超链接方式,用get方式向servlet提交一个id,依照这个id对数据库中的记录进行删除操作。
在生成每条数据的时候,添加上如下代码:
1 <td><a href="servlet/ServletUserDelete?userId=<%=user.getUserId() %>">删除</a></td>
用户列表显示页面代码)
userId=<%=user.getUserId() %>,然后就可以调用数据库中的方法,ServletDeleteUser.java中doGet()如下:
1 public void doGet(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException {
3
4 int userId = Integer.parseInt(request.getParameter("userId"));
5 UserDao userDao = new UserDao();
6 userDao.deleteOneUser(userId);
7 ArrayList<UserVo> list = userDao.selectNotDeleteList();
8 request.setAttribute("list", list);
9 request.getRequestDispatcher("/userlist.jsp").forward(request, response);
10 }
UserDao.java中的deleteOneUser(String userId)方法如下:
1 public void deleteOneUser(int userId) {
2 // 删除单条记录方法
3 Dbmanage dbmanage = new Dbmanage();
4 Connection conn = null;
5 Statement sta = null;
6
7 try {
8 conn = dbmanage.initDB();
9 sta = conn.createStatement();
10 String sql = "UPDATE userTable SET user_display = 0 WHERE user_id ="
11 + userId;
12 sta.executeUpdate(sql);
13 } catch (SQLException e) {
14
15 e.printStackTrace();
16 } finally {
17 // 执行完关闭数据库
18 dbmanage.closeDB(sta, conn);
19 }
20
21 }
实际是设置显示状态为0,检索的时候不检索,并非真的删除数据)
之后重新查询并导向了userlist.jsp页面。
2.批量删除
批量删除则是通过form表单用post方式向后台提交了要删除的数据id,然后servlet在得到数组之后,调用UserDao中方法进行批量删除。
前台用户选中要删除数据前面的checkbox框,然后点击批量删除,多选,反选checkbox框操作不再一一赘述。
ServletDeleteUser.java中doPost()方法中即可得到checkbox框的数组,代码如下:
1 public void doPost(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException {
3
4 String UserId[] = request.getParameterValues("num");
5 UserDao userDao = new UserDao();
6 userDao.deleteUserList(UserId);
7
8 ArrayList<UserVo> list=userDao.selectNotDeleteList();
9 request.setAttribute("list", list);
10 request.getRequestDispatcher("/userlist.jsp").forward(request, response);
11 }
UserDao.java中的deleteOneUserList(String [] userId)方法如下:
1 public void deleteUserList(String[] userId) {
2 // 批量刪除记录方法
3 Dbmanage dbmanage = new Dbmanage();
4 Connection conn = null;
5 Statement sta = null;
6
7 try {
8 conn = dbmanage.initDB();
9 sta = conn.createStatement();
10 int Id = 0;
11 for (int i = 0; i < userId.length; i++) {
12
13 // 循环遍历集合中的元素,然后逐个删除
14 Id = Integer.parseInt(userId[i]);
15 String sql = "UPDATE userTable SET user_display = 0 WHERE user_id ="
16 + Id;
17 sta.executeUpdate(sql);
18 }
19
20 } catch (SQLException e) {
21
22 e.printStackTrace();
23 } finally {
24 // 执行完关闭数据库
25 dbmanage.closeDB(sta, conn);
26 }
27
28 }
到这里,批量删除就实现了,需要注意的是,如果不选中任何数据项,直接点击‘批量删除’,会报空指针异常,
因此需要做的还有未选中处理,这里不再说明。