思路分析如下:
首先要实现该功能,先找到前端页面的删除按钮
<a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/delUserServlet?id=${user.id}">删除</a></td>
然后编写DelUserServlet方法
package edu.swpu.web.servlet;
import edu.swpu.service.UserService;
import edu.swpu.service.impl.UserServiceImpl;
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;
@WebServlet("/delUserServlet")
public class DelUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取id
String id = request.getParameter("id");
//2.调用service删除
UserService service = new UserServiceImpl();
service.deleteUser(id);
//跳转到查询所有Servlet
response.sendRedirect(request.getContextPath()+"/userListServlet");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
接下来去实现UserServlet里面的deleteUser方法
UserService:
void deleteUser(String id);
UserServiceImpl:
@Override
public void deleteUser(String id) {
dao.delete(Integer.parseInt(id));
}
UserDao里面的方法:
void delete(int id);
UserDaoImpl:
public void delete(int id) {
String sql = "delete from user where id = ?";
template.update(sql,id);
}
大致功能就完成了。接下来有一个需要优化的细节,当我们按下删除按钮的时候,就会立马删除数据,我们需要通过javascript来实现一个询问方法,询问是否删除。先来到前端页面,将删除按钮的跳转路径改为一个函数
<a class="btn btn-default btn-sm" href="javascript:deleteUser(${user.id});">删除</a></td>
再去实现这个函数:
<script>
function deleteUser(id) {
if(confirm("确定删除?")){
location.href="${pageContext.request.contextPath}/delUserServlet?id="+id;
}
}
</script>
最后说明一下这个地方为什么要传参:deleteUser(${user.id})而不是后面直接获取,因为JavaScript函数在页面最前面,无法在正常情况下获取后面的参数,所以使用这个方法区解决这个问题