• 用户购物车功能的实现。


    1.接口中定义方法

    2.impl中实现方法

     

    3.jsp展示数据  

    1.首先在header.jsp页面中,通过a标签  跳转到MyCartServlet

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
    %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
        <link rel="stylesheet" type="text/css" href="css/header.css"/>
     <!--头部-->
    <%--
            1.实现用户的登录 ?
            点节登录是需要一个  登录界面展示给用户  就是login.jsp
            通过header.jsp的超链接 跳转到  login.jsp  登录界面的jsp
            在login.jsp中  进行用户登录  通过超链接   跳转到 login servlet进行业务操作
    
    --%>
     
            <div class="header_wrap">            
                <ul>
                <c:choose>
                    <c:when test="${empty user}">
                        <li><a href="/shop/views/login.jsp">登录</a></li>
                        <li><a href="/shop/views/register.jsp">注册</a></li>
                    </c:when>
                    <c:otherwise>
                        <li>欢迎尊敬的VIP:<a href="/shop/views/presonal.jsp">${user.nickname}  个人主页</a></li>
                    </c:otherwise>
    
                </c:choose>
    
                    <li><a href="#">我的收藏</a></li>
                    <%--实现购物车测车的功能  通过a标签  跳转到 myCart servlet 进行业务操作--%>
                    <li><a href="/shop/myCart.do">我的购物车</a></li>
                    <li><a href="#">我的订单</a></li>
                    <li><a href="#">帮助中心</a></li>
                    <li><a href="#">商家后台</a></li>
                    
                </ul>
            </div>
            

    2.servlet业务操作

    package com.aaa.servlet;
    
    import com.aaa.dao.IUserDAO;
    import com.aaa.dao.Impl.UserDAOImpl;
    
    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 java.io.IOException;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 购物车的实现?
     *
     *一、 判读用户是否已经登录?
     *        1.获取用户的id? 返回值类型是map   之前我们在方法中 定义的! 注意强转到map
     *        2.通过getSession()获取Session对象
     *        3.getAttribute("user");       通过session.getAttribute(“user”) 的方法获得这个对象.。
     *        4.登录了就 获取用户的UID  根据id 获取用户的购物车信息
     *        user.get("uid");
     *
     *二、 根据用户的id查询购物车信息?      Integer uid = (Integer) user.get("uid");
     *     1.调用dao getMyCart方法
     *     2.得到一个list集合 里面是用户的购物车信息
     *     3.将数据存储到      req.setAttribute("myCart",list);
     *
     *三、通过请求转发将获得的数据转发到 goodscart.,jsp 中 展示给用户?
     *
     *        getRequestDispatcher()获取转发器,参数路径以/打头,代表WebRoot(当前WEB项目根目录)
     *
     *         req.getRequestDispatcher("/views/goodscart.jsp").forward(req,resp);
     *
     * 四、思考?
     *      这里为什么是请求转发 而不是 从定向?
     *
     *      因为我们在这里  获取到用户的购物车信息  需要通过请求转发的方式  传递给用户。
     *      重定向则是  将页面重新跳转到新的页面  用户得不到想要的购物车信息。
     */
    @WebServlet("/myCart.do")
    public class MyCartServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            Map user = (Map) req.getSession().getAttribute("user");
    
            Integer uid = (Integer) user.get("uid");
    
            IUserDAO dao= new UserDAOImpl();
            List<Map<String, Object>> myCart = dao.getMyCart(uid);
    
            req.setAttribute("myCart",myCart);
            req.getRequestDispatcher("/views/goodscart.jsp").forward(req,resp);
        }
    }

    3.讲数据请求转发到  "/views/goodscart.jsp"

    <%@ page language="java" contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";
    %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
    
    
    <!DOCTYPE HTML>
    <html>
    <head>
        <base href="<%=basePath%>">
        <link rel="icon" href="img/icon.png" type="image/x-icon">
        <link rel="stylesheet" href="css/goodscart.css" />
        <script type="text/javascript" src="js/product.js"></script>
    
        <title>购物车 贵美·商城</title>
    
    </head>
    <body>
    <!-- 头部导航 -->
    <jsp:include page="/views/header.jsp"></jsp:include>
    
    <!-- 購物車 -->
    <div class="wrap">
        <div class="title">
            <ul>
                <li><input type="checkbox" name="" id="" value="" /> 全选</li>
                <li>商品</li>
                <li>商品信息</li>
                <li>单价(元)</li>
                <li>数量</li>
                <li>小计(元)</li>
                <li>操作</li>
            </ul>
        </div>
        <%--
            一、在goodscat.jsp中判断 empty是否为空?
                    调用dao getMyCart方法 根据用户的id查询购物车信息
     *               得到一个list集合 里面是用户的购物车信息
                1.空 说明  用户的购物车还没添加商品 提示用户去购物
    
                2.非空 就获取 myCart 购物车数据  通过foreach  的的方式 获取商品。
        --%>
        <c:choose>
            <c:when test="${empty myCart}">
                <h1>你的购物车中还没有商品,请去<a href="/shop/home">购物</a></h1>
            </c:when>
    
            <c:otherwise>
                <c:forEach var="p" items="${myCart}">
                    <div class="goods">
                        <ul>
                            <li><img src="${p.pimage}"/>${p.pname}</li>
                            <li>尺碼:均碼</li>
                            <li class="price">${p.shopPrice}</li>
                            <li>
                                <div class="count">
                                    <span class="s"></span>
                                    <input type="text" value="${p.num}" name="num" class="num" />
                                    <span class="s"></span>
                                </div>
    
                            </li>
                            <li class="subtotal">76</li>
                            <li>
                                <a href="/shop/deleteCart?pid=${p.pid}">刪除</a>
                            </li>
                        </ul>
                    </div>
                </c:forEach>
                <div class="foot">
                    <ul>
                        <li><a href="/shop/deleteAllCart">全部刪除</a></li>
                        <li>總價:¥<span style="color: red; font-size: 30px; font-weight: 600;" id="total">11111</span></li>
                        <li><a href="#">去付款</a></li>
    
                    </ul>
                </div>
            </c:otherwise>
    
        </c:choose>
    </div>
    </body>
    </html>
    
    
  • 相关阅读:
    史上最强内网渗透知识点总结
    最全的网站渗透测试详细检测方法
    java代码审计
    信息收集
    Java Web安全之代码审计
    Bell-Lapadula和Biba的改进安全模型与应用
    浅谈Forrester零信任架构评估的7个技术维度
    CMD命令混淆高级对抗
    一篇文章带你领悟Frida的精髓(基于安卓8.1)
    svg作图
  • 原文地址:https://www.cnblogs.com/ZXF6/p/10771439.html
Copyright © 2020-2023  润新知