4. 请设计一个程序,使用Session技术实现购物车功能。
时间: 2024-03-07 14:46:23 浏览: 175
PHP session实现购物车功能
以下是一个简单的Java程序,使用Session技术实现购物车功能。该程序使用了一个名为ShoppingCart的JavaBean来表示购物车,使用了Session来存储购物车的状态。
ShoppingCart.java
```java
import java.util.ArrayList;
import java.util.List;
public class ShoppingCart {
private List<String> items;
public ShoppingCart() {
items = new ArrayList<String>();
}
public void addItem(String item) {
items.add(item);
}
public void removeItem(String item) {
items.remove(item);
}
public List<String> getItems() {
return items;
}
public int getItemCount() {
return items.size();
}
public void clear() {
items.clear();
}
}
```
ShoppingCartServlet.java
```java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ShoppingCartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取Session对象
HttpSession session = request.getSession();
// 获取购物车对象
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart == null) {
// 如果Session中没有购物车对象,创建一个新的购物车对象并存储到Session中
cart = new ShoppingCart();
session.setAttribute("cart", cart);
}
// 获取操作类型
String action = request.getParameter("action");
if (action == null) {
// 显示购物车内容
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
List<String> items = cart.getItems();
if (items.isEmpty()) {
out.println("<p>Your shopping cart is empty</p>");
} else {
out.println("<p>You have the following items in your shopping cart:</p>");
out.println("<ul>");
for (String item : items) {
out.println("<li>" + item + "</li>");
}
out.println("</ul>");
}
out.println("<a href=\"?action=clear\">Clear cart</a>");
out.println("</body></html>");
} else if (action.equals("add")) {
// 添加物品到购物车中
String item = request.getParameter("item");
cart.addItem(item);
response.sendRedirect(request.getContextPath() + "/cart");
} else if (action.equals("remove")) {
// 从购物车中删除物品
String item = request.getParameter("item");
cart.removeItem(item);
response.sendRedirect(request.getContextPath() + "/cart");
} else if (action.equals("clear")) {
// 清空购物车
cart.clear();
response.sendRedirect(request.getContextPath() + "/cart");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
```
在ShoppingCartServlet中,我们首先获取Session对象,并从Session中获取购物车对象。如果Session中没有购物车对象,我们就创建一个新的购物车对象并存储到Session中。
然后,我们根据操作类型执行相应的操作。如果操作类型为null,我们就显示购物车中的内容。如果操作类型为add,我们就将物品添加到购物车中。如果操作类型为remove,我们就从购物车中删除物品。如果操作类型为clear,我们就清空购物车。
需要注意的是,在Servlet中我们使用了重定向来避免表单重复提交的问题。当我们添加、删除或清空购物车时,我们会重定向到/cart页面来避免表单重复提交的问题。
在JSP页面中,我们可以使用表单来向Servlet发送请求来操作购物车。例如,我们可以使用以下代码来添加一个物品到购物车中:
```html
<form action="<%=request.getContextPath()%>/cart?action=add" method="post">
<input type="text" name="item">
<input type="submit" value="Add to cart">
</form>
```
当我们提交表单时,Servlet会将物品添加到购物车中,并重定向到/cart页面,显示购物车中的内容。
阅读全文