解析
- 在上题中图书信息的后面增加一个“添加到购物车”链接,单击可以将图书添加到购物车。在页面底部有一个“查看购物车”链接,可以到另一个页面中查看购物车中的内容。在购物车内容显示时,后面有一个“从购物车中删除”链接,单击,又能将该图书从购物车中删除。要求所有的动作由Servlet完成。
先完成第一题
仿照search.jsp,写个cart.jsp。注意“删除”是一个超链接,并且在链接后面还要跟上id这个参数,方便后面Servlet的删除操作(其实传递数组下标会更加方便)
购物车
<% ArrayListcart = (ArrayList ) session.getAttribute("cart"); if (cart != null) { %>
<% for (book b : cart) { out.print(" 图书ID 图书名称 图书价格 操作 "); out.print(" "); } } %>" + b.id + " "); out.print("" + b.name + " "); out.print("" + b.price + " "); out.print(String.format("删除 ", b.id)); out.print("
返回查询页面
记得在search,jsp中加上超链接跳转到cart.jsp
查看购物车
然后再写DeleteServlet,一些细节参见注释
@WebServlet(name = "DeleteServlet", urlPatterns = {"/deleteServlet"})
public class DeleteServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理响应乱码
response.setContentType("text/html;charset=utf-8");
// 处理请求乱码
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
ArrayList cart = (ArrayList) session.getAttribute("cart");
String id = request.getParameter("id");
if (id != null && cart != null) {
for (book b : cart) {
if (b.id.equals(id)) { // 其实也可以根据下标删除,但是我这里懒得改了
cart.remove(b);
break;
}
}
session.setAttribute("cart", cart); // 要把修改后的cart存入session
PrintWriter out = response.getWriter();
out.print(""); // 记得跳转回cart.jsp。我在这里还加了个提示框表明删除成功
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
代码
cart.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="chapter9.book" %>
<%@ page import="java.util.ArrayList" %>
购物车
购物车
<%
ArrayList cart = (ArrayList) session.getAttribute("cart");
if (cart != null) {
%>
图书ID
图书名称
图书价格
操作
<%
for (book b : cart) {
out.print("");
out.print("" + b.id + " ");
out.print("" + b.name + " ");
out.print("" + b.price + " ");
out.print(String.format("删除 ", b.id));
out.print(" ");
}
}
%>
返回查询页面
DeleteServlet.java
package chapter9.servlet;
import chapter9.book;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
@WebServlet(name = "DeleteServlet", urlPatterns = {"/deleteServlet"})
public class DeleteServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理响应乱码
response.setContentType("text/html;charset=utf-8");
// 处理请求乱码
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
ArrayList cart = (ArrayList) session.getAttribute("cart");
String id = request.getParameter("id");
if (id != null && cart != null) {
for (book b : cart) {
if (b.id.equals(id)) {
cart.remove(b);
break;
}
}
session.setAttribute("cart", cart);
PrintWriter out = response.getWriter();
out.print("");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}



