JavaWeb_利用Session实现简易购物车

package com.Servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletConfig;
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 com.Product.Product;

/**
 * Servlet implementation class MainServlet
 */
@WebServlet(name = "MainServlet", urlPatterns = { "/ProductInfor","/ShowShopCar","/ShowShopHall","/PushShopCar" })
public class MainServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MainServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
	/**
	 * @see Servlet#init(ServletConfig)
	 */
    public List<Product> products1 = new ArrayList<Product>();
    public List<Product> products2 = null;
    public List<String> numbers = null;

	@Override
	public void init() throws ServletException {
		products1.add(new Product(1, "C语言", "清华出版社", 25.50F));
		products1.add(new Product(2, "Java", "清华出版社", 65.50F));
		products1.add(new Product(3, "C#", "清华出版社", 15.50F));
		products1.add(new Product(4, "汇编语言", "清华出版社", 85.50F));
		products1.add(new Product(5, "UML", "清华出版社", 36.50F));
		products1.add(new Product(6, "C++", "清华出版社", 50.50F));
		products1.add(new Product(7, "计算机组成原理", "清华出版社", 25.50F));
		products1.add(new Product(8, "数据库", "清华出版社", 68.50F));
	}
	@SuppressWarnings("unused")
	private Product getProduct(int id){
		for(Product product : products1){
			if(product.getId() == id){
				return product;
			}
		}
		return null;
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String uri = request.getRequestURI();
		if (uri.endsWith("/ShowShopCar")) {
			ShowShopCar(request, response);
		}else if (uri.endsWith("/ProductInfor")) {
			ProductInfor(request, response);
		}else if (uri.endsWith("/ShowShopHall")) {
			ShowShopHall(request, response);
		}else if (uri.endsWith("/PushShopCar")) {
			PushShopCar(request, response);
		}
	}
	private void ShowShopHall(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		request.getSession().setAttribute("list1",products1);
		response.sendRedirect("MainHall.jsp");
	}
	private void ShowShopCar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		@SuppressWarnings("unchecked")
		ArrayList<Product> products2 = (ArrayList<Product>)request.getSession().getAttribute("list2");
		@SuppressWarnings("unchecked")
		ArrayList<String> numbers = (ArrayList<String>)request.getSession().getAttribute("number");
		request.getSession().setAttribute("number",numbers);
		request.getSession().setAttribute("list2",products2);
		response.sendRedirect("ShowShopCar.jsp");
	}
	private void ProductInfor(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		Object[] p = products1.toArray();
		request.getSession().setAttribute("book",((Product) p[Integer.parseInt(request.getParameter("id"))-1]));
		response.sendRedirect("ProductInfor.jsp");
	}
	private void PushShopCar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		@SuppressWarnings("unchecked")
		ArrayList<Product> products2 = (ArrayList<Product>)request.getSession().getAttribute("list2");
		@SuppressWarnings("unchecked")
		ArrayList<String> numbers = (ArrayList<String>)request.getSession().getAttribute("number");
		if(products2==null&&numbers==null){
			products2 = new ArrayList<Product>();
			numbers = new ArrayList<String>();
			products2.add((Product)request.getSession().getAttribute("book"));
			numbers.add(request.getParameter("number"));
			request.getSession().setAttribute("list2",products2);
			request.getSession().setAttribute("number",numbers);
		}else{
			products2.add((Product)request.getSession().getAttribute("book"));
			request.getSession().setAttribute("list2",products2);
			numbers.add(request.getParameter("number"));
			request.getSession().setAttribute("number",numbers);
		}
		response.sendRedirect("ShowShopCar.jsp");
	}
}

好的,以下是一个简单的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购物车功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值