实现将图书添加到购物车以及从购物车中删除图书

需求

​ 实现买书购物车,图书信息后面有一个“添加到购物车”的链接,单机,可以将图书添加到购物车。页面底部有一个“查看购物车”链接,点击跳转到购物车页面,购物车内容显示时,后面有一个“删除”链接,单机,又能将该图书从购物车中删除,要求所有动作用Servlet完成。

实现思路
  1. 首先,我们要从数据库中拿出数据,显示到页面上
  2. 当我们点击“添加到购物车”的时候,将这本书的书名作为参数传递到相应的Servlet,用ArrayList保存到session域中
  3. 点击“查看购物车”,跳转到购物车页面,购物车页面获取session域中保存的ArrayList,并将其显示在页面上
  4. 点击“删除”,再将相应的书名作为参数传递给相应的Servlet,接收参数后的Servlet将该书名从ArrayList中remove掉,然后更新session域中的ArrayList
具体代码
@WebServlet("/servlet/query")
public class QueryServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//设置编码格式
	request.setCharacterEncoding("utf-8");
	
	//接收前端参数
	String bookName = request.getParameter("bookName");
	QueryService service = new QueryServiceImp();
	ArrayList<TBook> bookList = new ArrayList<TBook>();
	
	//调用service层,获取查询到的数据
	bookList = service.selectTBookByBookNameLike(bookName);
	
	//将查到的数据放入到request域中
	request.setAttribute("bookList", bookList);
	
	//跳转到显示图书列表的页面
	ServletContext application = this.getServletContext();
	RequestDispatcher rd = application.getRequestDispatcher("/jsp/page01.jsp");
	rd.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}
}

以上代码,使用了DAO设计模式访问数据库,并调用service层获得数据

<form action="${pageContext.request.contextPath }/servlet/query" method="get">
		请输入你要找的书籍:<input type="text" name="bookName">
		<input type="submit" value="提交">
	</form>
<table>
<%
	ArrayList<TBook> bookList =  (ArrayList<TBook>)request.getAttribute("bookList");
	if(bookList != null){
		for(int i = 0;i < bookList.size();i++){
			%>
			<tr>
			<%
			TBook tBook = bookList.get(i);
			%>
			<td><%=tBook.getBookId() %></td>
			<td><%=tBook.getBookName() %></td>
			<td><%=tBook.getBookPrice() %></td>
			<td><a href="${pageContext.request.contextPath }/servlet/add?bookName=<%=tBook.getBookName() %>">添加到购物车</a></td>
			</tr>
			<%
		}
	}
	 %>
	</tr>
</table>
<a href="${pageContext.request.contextPath }/jsp/car.jsp">查看购物车</a>

这是显示书籍的前端界面

@WebServlet("/servlet/add")
public class AddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	//保存所有添加到购物车的书本
	ArrayList<String> bookList = new ArrayList<String>();
	
	//获取参数
	String bookName = request.getParameter("bookName");
	bookList.add(bookName);
	
	//获取session对象
	HttpSession session = request.getSession();
	session.setAttribute("bookList", bookList);
	
	//跳转回买书页面
	ServletContext application = this.getServletContext();
	RequestDispatcher rd = application.getRequestDispatcher("/jsp/page01.jsp");
	rd.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}
}

处理添加到购物车业务的Servlet

@WebServlet("/servlet/delete")
public class DeleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	//获取session域对象
	HttpSession session = request.getSession();
	ArrayList<String> bookList = (ArrayList<String>) session.getAttribute("bookList");
	
	//获得要删除的书
	String bookName = request.getParameter("bookName");
	bookList.remove(bookName);
	
	//将bookList重新放入到session域中
	session.setAttribute("bookList", bookList);
	//跳转回购物车页面
	response.sendRedirect("/test02_2/jsp/car.jsp");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}
}

处理从购物车中删除业务的Servlet

小结

​ 其实最主要的是搞懂需求的逻辑,实现思路,然后码代码就很快了。

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值