javaweb利用Session,实现购物车功能,完整代码
时间: 2024-02-28 20:57:42 浏览: 148
好的,以下是一个简单的JavaWeb购物车功能的完整代码。
首先,我们需要创建一个Servlet来处理购物车相关的请求:
```
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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;
@WebServlet("/cart")
public class ShoppingCartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
// get shopping cart from session
Map<String, Integer> cart = (Map<String, Integer>) session.getAttribute("cart");
if (cart == null) {
cart = new HashMap<>();
session.setAttribute("cart", cart);
}
// handle different actions
String action = request.getParameter("action");
if ("add".equals(action)) {
String item = request.getParameter("item");
Integer quantity = Integer.valueOf(request.getParameter("quantity"));
cart.put(item, cart.getOrDefault(item, 0) + quantity);
} else if ("remove".equals(action)) {
String item = request.getParameter("item");
cart.remove(item);
} else if ("clear".equals(action)) {
cart.clear();
}
// redirect back to shopping cart page
response.sendRedirect(request.getContextPath() + "/cart.jsp");
}
}
```
在这个Servlet中,我们首先获取当前Session中的购物车对象,如果Session中没有购物车对象则创建一个新的购物车对象。
然后根据请求参数中的action参数来处理不同的操作。如果是添加商品到购物车,则从请求参数中获取商品名和数量,然后将其添加到购物车中。如果是从购物车中删除商品,则从请求参数中获取商品名,然后将其从购物车中删除。如果是清空购物车,则清空购物车对象。
最后,我们重定向回购物车页面。
接下来,我们需要创建一个JSP页面来显示购物车中的商品:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
</head>
<body>
<h1>购物车</h1>
<table border="1">
<tr>
<th>商品名称</th>
<th>数量</th>
<th>操作</th>
</tr>
<c:forEach items="${cart}" var="entry">
<tr>
<td>${entry.key}</td>
<td>${entry.value}</td>
<td>
<form action="${pageContext.request.contextPath}/cart" method="post">
<input type="hidden" name="action" value="remove">
<input type="hidden" name="item" value="${entry.key}">
<button type="submit">删除</button>
</form>
</td>
</tr>
</c:forEach>
</table>
<form action="${pageContext.request.contextPath}/cart" method="post">
<input type="hidden" name="action" value="clear">
<button type="submit">清空购物车</button>
</form>
<h2>添加商品</h2>
<form action="${pageContext.request.contextPath}/cart" method="post">
<input type="hidden" name="action" value="add">
<label>商品名称:</label>
<input type="text" name="item"><br>
<label>数量:</label>
<input type="number" name="quantity"><br>
<button type="submit">添加</button>
</form>
</body>
</html>
```
在这个JSP页面中,我们使用JSTL的<c:forEach>标签来遍历购物车中的商品,并显示商品名称、数量和删除按钮。我们还提供了一个清空购物车的按钮和一个表单来添加新的商品到购物车中。
最后,我们需要在Web应用程序的部署描述符(web.xml)中添加一个Servlet映射:
```
<servlet>
<servlet-name>ShoppingCartServlet</servlet-name>
<servlet-class>com.example.ShoppingCartServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShoppingCartServlet</servlet-name>
<url-pattern>/cart</url-pattern>
</servlet-mapping>
```
这样,我们就完成了一个简单的JavaWeb购物车功能。
阅读全文