zoukankan      html  css  js  c++  java
  • servlet之session设置

    商品对象,购物车对象,servlet的实现

    商品:

    package app02d;
    public class Product {
        private int id;
        private String name;
        private String description;
        private float price;
        
        public Product(int id, String name, String description, float price) {
            this.id = id;
            this.name = name;
            this.description = description;
            this.price = price;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public float getPrice() {
            return price;
        }

        public void setPrice(float price) {
            this.price = price;
        }
    }

    购物车:

    package app02d;
    public class ShoppingItem {

        private Product product;
        private int quantity;
        
        public ShoppingItem(Product product, int quantity) {
            this.product = product;
            this.quantity = quantity;
        }

        public Product getProduct() {
            return product;
        }

        public void setProduct(Product product) {
            this.product = product;
        }

        public int getQuantity() {
            return quantity;
        }

        public void setQuantity(int quantity) {
            this.quantity = quantity;
        }
    }
    servlet的实现:

    package app02d;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.text.NumberFormat;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Locale;

    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;

    /**
     * Servlet implementation class ShoppingCartServlet
     */
    @WebServlet( name = "ShoppingCartServlet", urlPatterns = {"/products", "/viewProductDetails","/addToCart","/viewCart"})
    public class ShoppingCartServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        private static final String CART_ATTRIBUTE = "cart";
        
        private List<Product> products = new ArrayList<Product>();
        private NumberFormat currencyFormat = NumberFormat
                .getCurrencyInstance(Locale.US);
        
        // 创建商品对象,加入商品列表中(1)
        @Override
        public void init() throws ServletException {
            products.add(new Product(1, "Bravo 32' HDTV",
                    "Low-cost HDTV from renowned TV manufacturer",
                    159.95F));
            products.add(new Product(2, "Bravo BluRay Player",
                    "High quality stylish BluRay player", 99.95F));
            products.add(new Product(3, "Bravo Stereo System",
                    "5 speaker hifi system with iPod player",
                    129.95F));
            products.add(new Product(4, "Bravo iPod player",
                    "An iPod plug-in that can play multiple formats",
                    39.95F));
        }
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public ShoppingCartServlet() {
            super();
            // TODO Auto-generated constructor stub
        }

        /**
         * 分支(2)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String uri = request.getRequestURI();
            if (uri.endsWith("/products")) {
                // 查询商品列表
                sendProductList(response);
            } else if (uri.endsWith("/viewProductDetails")) {
                // 显示商品详细信息
                sendProductDetails(request, response);
            } else if (uri.endsWith("viewCart")) {
                // 显示购物车
                showCart(request, response);
            }
        }
        
        
        
        

        /**
         * addToCart
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // add to cart
            int productId = 0; // 商品id
            int quantity = 1; // 商品数量(默认购买一件)
            try {
                productId = Integer.parseInt(
                        request.getParameter("id"));
                quantity = Integer.parseInt(request
                        .getParameter("quantity"));
            } catch (NumberFormatException e) {
            }

            Product product = getProduct(productId);
            if (product != null && quantity >= 0) {
                ShoppingItem shoppingItem = new ShoppingItem(product,
                        quantity);
                // 创建session对象
                HttpSession session = request.getSession();
                List<ShoppingItem> cart = (List<ShoppingItem>) session.getAttribute(CART_ATTRIBUTE);
                if (cart == null) {
                    cart = new ArrayList<ShoppingItem>();
                    // 设置session值
                    session.setAttribute(CART_ATTRIBUTE, cart);
                }
                cart.add(shoppingItem);
            }
            sendProductList(response);
        }
        
        /**
         * 显示商品列表 (4)
         * @param response
         * @throws IOException
         */
        private void sendProductList(HttpServletResponse response)
                throws IOException {
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.println("<html><head><title>Products</title>" +
                    "</head><body><h2>Products</h2>");
            writer.println("<ul>");
            for (Product product : products) {
                writer.println("<li>" + product.getName() + "("
                        + currencyFormat.format(product.getPrice())
                        // 商品详细信息的显示
                        + ") (" + "<a href='viewProductDetails?id="
                        + product.getId() + "'>Details</a>)");
            }
            writer.println("</ul>");
            writer.println("<a href='viewCart'>View Cart</a>");
            writer.println("</body></html>");

        }

        /**
         * 根据商品id获取商品对象
         * @param productId
         * @return
         */
        private Product getProduct(int productId) {
            for (Product product : products) {
                if (product.getId() == productId) {
                    return product;
                }
            }
            return null;
        }

        /**
         * 获取商品的详细信息,并显示
         * @param request
         * @param response
         * @throws IOException
         */
        private void sendProductDetails(HttpServletRequest request,
                HttpServletResponse response) throws IOException {
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            int productId = 0;
            try {
                productId = Integer.parseInt(
                        request.getParameter("id"));
            } catch (NumberFormatException e) {
            }
            Product product = getProduct(productId);

            if (product != null) {
                writer.println("<html><head>"
                        + "<title>Product Details</title></head>"
                        + "<body><h2>Product Details</h2>"
                        + "<form method='post' action='addToCart'>");
                // 隐藏域
                writer.println("<input type='hidden' name='id' "
                        + "value='" + productId + "'/>");
                writer.println("<table>");
                writer.println("<tr><td>Name:</td><td>"
                        + product.getName() + "</td></tr>");
                writer.println("<tr><td>Description:</td><td>"
                        + product.getDescription() + "</td></tr>");
                writer.println("<tr>" + "<tr>"
                        // 购买的数量
                        + "<td><input name='quantity'/></td>"
                        + "<td><input type='submit' value='Buy'/>"
                        + "</td>"
                        + "</tr>");
                writer.println("<tr><td colspan='2'>"
                        + "<a href='products'>Product List</a>"
                        + "</td></tr>");
                writer.println("</table>");
                writer.println("</form></body>");
            } else {
                writer.println("No product found");
            }

        }

        /**
         * 显示购物车
         * @param request
         * @param response
         * @throws IOException
         */
        private void showCart(HttpServletRequest request,
                HttpServletResponse response) throws IOException {
            response.setContentType("text/html");
            PrintWriter writer = response.getWriter();
            writer.println("<html><head><title>Shopping Cart</title>"
                    + "</head>");
            writer.println("<body><a href='products'>" +
                    "Product List</a>");
            // 创建session对象
            HttpSession session = request.getSession();
            // 获取session内容
            List<ShoppingItem> cart = (List<ShoppingItem>) session.getAttribute(CART_ATTRIBUTE);
            if (cart != null) {
                writer.println("<table>");
                writer.println("<tr><td style='150px'>Quantity"
                        + "</td>"
                        + "<td style='150px'>Product</td>"
                        + "<td style='150px'>Price</td>"
                        + "<td>Amount</td></tr>");
                double total = 0.0;
                for (ShoppingItem shoppingItem : cart) {
                    Product product = shoppingItem.getProduct();
                    int quantity = shoppingItem.getQuantity();
                    if (quantity != 0) {
                        float price = product.getPrice();
                        writer.println("<tr>");
                        writer.println("<td>" + quantity + "</td>");
                        writer.println("<td>" + product.getName()
                                + "</td>");
                        writer.println("<td>"
                                + currencyFormat.format(price)
                                + "</td>");
                        double subtotal = price * quantity;

                        writer.println("<td>"
                                + currencyFormat.format(subtotal)
                                + "</td>");
                        total += subtotal;
                        writer.println("</tr>");
                    }
                }
                writer.println("<tr><td colspan='4' "
                        + "style='text-align:right'>"
                        + "Total:"
                        + currencyFormat.format(total)
                        + "</td></tr>");
                writer.println("</table>");
            }
            writer.println("</table></body></html>");
        }

    }

  • 相关阅读:
    AtCoder Grand Contest 030题解
    Codeforces Round #542 (Div. 1) 题解
    ZJOI2019赛季回顾
    UOJ #450「集训队作业2018」复读机
    「IOI2018」狼人
    APIO2019游记
    BZOJ4314 倍数?倍数!
    伯努利数学习笔记&&Luogu P3711 仓鼠的数学题
    Codeforces Round #541 (Div. 2)题解
    UOJ #460 新年的拯救计划
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7528225.html
Copyright © 2011-2022 走看看