JavaWeb学习-案例练习-图书管理后台-5- 完成图书删除功能

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

继续来做案例练习,本篇学习如何删除图书,也就是在list.jsp页面的图书列表中,点击删除按钮,这条图书记录信息就从列表消失,然后相当于刷新当前页面,列表就少了一条图书记录。

1.需求场景

例如把Python入门这本书删除。

2.思路分析

还是画一个图,和前面一样。

红圈就是我们本篇的内容,简单来说,点击删除这个链接,需要把该图书的id传进去,然后跳转到一个delBookServlet的servlet,然后Dao层执行delete语句,最后跳转到BookListServlet再查询一下图书数据,显示list.jsp页面上。

3.代码实现

3.1 修改list.jsp中删除链接的跳转信息

项目中找到/admin/products/list.jsp, 大概在140-145行代码附件,给这个删除图片条件跳转链接。

<td align="center" style="HEIGHT: 22px" width="7%"><a
 href="${pageContext.request.contextPath}/delBookServlet?id=${b.id}">			
<img									

src="${pageContext.request.contextPath}/admin/images/i_del.gif"	
width="16" height="16" border="0" style="CURSOR: hand">
</a>
</td>

3.2 创建一个空的delBookServlet文件

Eclipse上右键菜单选择servlet,会自动配置web.xml

3.3 Dao层添加执行删除的sql语句

在BookDao接口中添加如下方法(原有基础上新增)

/**
	 * 根据id删除图书
	 * @param id
	 * @return
	 * @throws SQLException
	 */
	public void delBook(String id) throws SQLException;

BookDaoImpl.java新增实现方法

    public void delBook(String id) throws SQLException {
		QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
		qr.update("delete from book where id=?", id);
	}

3.4 service添加删除图书方法

BookService接口添加如下方法

public void delBook(String id);

BookServiceImpl.java新增如下方法

    public void delBook(String id) {
		try {
			bd.delBook(id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

3.4 DelBookServlet完整代码

package com.anthony.web.servlet;

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

import com.anthony.service.BookService;
import com.anthony.service.BookServiceImpl;


public class DelBookServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");
		BookService bs = new BookServiceImpl();
		bs.delBook(id);
		
		//转发
		request.getRequestDispatcher("/bookListServlet").forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

3.5测试

测试就不贴结果,练习了好几次这样的练习,我一次性就写对了删除功能的代码,没有任何错误和调试过程。但是这么做有一点不友好,万一点错了也进行删除,所以需要添加一个询问用户是否确认要删除的弹窗。

这个效果是这实现的。

先写一个js代码,一个函数,然后在点击删除图片这里调用这个js代码就可以。

function delBook(id){
		if(confirm("是否确定删除图书?"+id)){
			location.href="${pageContext.request.contextPath}/delBookServlet?id=" + id;
		}
	}

上面这段代码大概写16行到20行之间,然后140行附近这个跳转代码这样写。

<td align="center" style="HEIGHT: 22px" width="7%"><a
										
href="javascript:delBook('${b.id }')">
<img
											
src="${pageContext.request.contextPath}/admin/images/i_del.gif"										

width="16" height="16" border="0" style="CURSOR: hand">

猜你喜欢

转载自blog.csdn.net/u011541946/article/details/93922327
今日推荐