zoukankan      html  css  js  c++  java
  • 小项目-购物网站个别功能的具体实现思路-中(新手)


    第六步:
    /*
    *  根据用户需求添加商品进购物车。
    *  首先需要判断用户是否已经进行了登录。 这就需要创建一个过滤器,进行登录请求的过滤。
    *   如果用户登录了就获取用户的请求参数,如商品的名称、简介、数量等。
    *   如果用户没有登录则需要在过滤器中进行拦截,使其跳转到登录界面。
    *
    *   获取完用户的请求参数之后,需要判断商品是否已经加入购物车。
    *   此处需要三个SQL语句:
    *                       查询商品是否加入到购物车。
    *                       如果商品已经被添加则更新商品的数量。
    *                       如果没有则将商品添加进入购物车。
    *   最后,添加成功则提示添加成功。
    *   然后请求转发到原界面。
    *
    *   该Servlet需要配合商品详细信息的JSp页面进行使用。
    * */

    
    
    第七步:
    /*
    *  我的购物车所需要的Servlet。
    *  用户点击我的购物车则跳转到此Servlet中,由此Servlet进行完一系列操作之后再转入负责展示数据的JSP页面
    *  首先,需要获取到登录数据的关键字,判断用户是否登录,如果用户没有登录则跳转到登录界面。
    *  如果用户已经登录过,则获取请求参数(uid),uid在我的数据库表中意为查询我当前账户所添加的所有商品信息。
    *  获取请求参数之后调用DAO层,进行数据的查询。
    *  最后共享参数和请求转发。
    *
    *  该Servlet需要配合购物车的JSP界面进行使用。
    * */
     

    
    
    第八步:
    /*
        *  根据用户需求删除购物车的某个商品。
        *  获取请求参数,获取用户点击的商品的ID,
        *  调用DAO层的SQL语句进行删除。
        *  请求转发到购物车界面。
        *
        *  该Servlet需要配合购物车的JSp页面进行使用。
        * */
     


    第九步:

    /*
        *  根据用户需求删除购物车所有的商品。
        *  用户点击购物车删除所有商品按钮之后,则跳转到此Servlet。
        *  然后通过Session和Map的键值对读取当前账户的uid,也就是获取购物车那张表里的输入当前账户的商品id
        *  第二步调取DAO层里的删除商品的SQL语句,对商品进行删除。
        *  最后重定向到购物车界面。
        *
        *  该Servlet需要配合购物车的JSP页面进行使用。
        * */


    第十步:

     /*
         *  注销登录
         *  用户点击注销登录按钮则跳转到此Servlet。
         *  销毁Session,销毁之后,相当于将登陆信息全部清除。
         *  然后重定向到主界面,因为没有数据的存在而且需要地址栏的改变,所以使用重定向。
         *
         *  该Servlet需要配合个人中心的JSP页面进行使用。
         * */



    • (6)根据用户需求添加商品进购物车。

    所需的Servlet:

    
    @WebServlet("/Addcart.do")
    public class AddcartServlet extends HttpServlet {
        /*
        *  根据用户需求添加商品进购物车。
        *  首先需要判断用户是否已经进行了登录。 这就需要创建一个过滤器,进行登录请求的过滤。
        *   如果用户登录了就获取用户的请求参数,如商品的名称、简介、数量等。
        *   如果用户没有登录则需要在过滤器中进行拦截,使其跳转到登录界面。
        *
        *   获取完用户的请求参数之后,需要判断商品是否已经加入购物车。
        *   此处需要三个SQL语句:
        *                       查询商品是否加入到购物车。
        *                       如果商品已经被添加则更新商品的数量。
        *                       如果没有则将商品添加进入购物车。
        *   最后,添加成功则提示添加成功。
        *   然后请求转发到原界面。
        *
        *   该Servlet需要配合商品详细信息的JSp页面进行使用。
        * */
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                // 判断当前是否有用户登陆
                Map islogin = (Map) req.getSession().getAttribute("W");
                // 获取请求参数,商品的名称、简介、数量等。
                String pid = req.getParameter("pid");
                String num = req.getParameter("num");
                Integer uid = (Integer) islogin.get("uid");
    
                IProductDAO dao = new ProductDAOImpl();
                // 判断商品是否已经加入购物车
                if (dao.AddCart(pid,uid)){
                    // 如果商品已经被添加就更新商品的数量。
                    dao.updateCart(pid,num,uid);
                }else{
                    // 如果商品没有加入过购物车就将商品加入到购物车。
                    dao.insertCart(pid,num,uid);
                }
                // 如果添加成功,则提示添加成功
                req.setAttribute("l","添加成功");
                //请求转发。
                req.getRequestDispatcher("/product").forward(req,resp);
            }
    
        }

    所需要的JSp页面:

    <body>
           <!-- 头部导航 -->
            <jsp:include page="/views/header.jsp"></jsp:include>
            <c:choose>
                <%--empty map
                    判断的是共享数据是否为空
                    而不是映射路径
                --%>
                <c:when test="${empty map}">
                    <h1>对不起,暂无该商品信息</h1>
                </c:when>
    
                <c:otherwise>
                    <div class="wrap">
                        <img src="${map.pimage}" />
                        <div class="description">
    
    
                            <form action="/shop/Addcart.do" method="post">
                                ${l}
                                <h2>${map.pdesc}</h2>
                                <div class="old_price">
                                    原价:
                                    <span>
                            ¥${map.marketPrice}
                        </span>
                                </div>
                                <div class="price">
                                    折扣价:
                                    <span>
                            ¥${map.shopPrice}
                        </span>
                                </div>
    
                                <div>
                                    尺码:均码
                                </div>
    
                                <div class="count">
                                    数量:
                                    <span class="s"></span>
                                    <input type="text" value="1" name="num" class="num" />
                                    <span class="s"></span>
                                </div>
                                <input type="hidden"  name="pid"  value="${map.pid}" />
                                <div>
                                    <input type="submit" value="加入购物车" class="goods_cart" />
                                </div>
    
                                <div>
                                    <input type="submit" value="立即购买" class="buy"/>
                                </div>
                            </form>
                        </div>
                    </div>
                </c:otherwise>
    
            </c:choose>

    所需要的接口和实现类:

     /*
        * 判断商品是否已经加入购物车
        * 需要返回ID
        * */
        boolean AddCart(String pid,Integer uid);
    
        /*
        *  添加商品进购物车
        *  添加Pid、UId和商品数量。
        * */
        boolean insertCart(String uid,String pid,Integer num);
    
        /*
        *  数量的更新。
        *  多次添加同一商品需要进行商品数量的更新
        * */
        boolean updateCart(String pid,String num,Integer uid);
    
    
    实现类:
    
    
      /*
         * 判断商品是否已经加入购物车
         * 需要返回ID
         * */
        @Override
        public boolean AddCart(String pid, Integer uid) {
           String sql =  "select * from car where pid = ? and uid = ?";
    
            List<Map<String, Object>> list = DBUtil.excuteQuery(sql, pid, uid);
    
            return list.size()>0;
        }
    
        /*
         * 添加商品进购物车
         * 添加Pid、UId和商品数量。
         * */
        @Override
        public boolean insertCart(String pid, String num,Integer uid) {
            String sql = "insert into car (uid,pid,num) values (?,?,?)";
    
            return DBUtil.excuteUpdate(sql,uid,pid,num);
        }
    
        /*
         * 数量的更新。
         * 多次添加同一商品需要进行商品数量的更新
         * */
        @Override
        public boolean updateCart(String pid, String num,Integer uid) {
            String sql = "update car set num = num+? where uid = ? and pid = ?";
            return DBUtil.excuteUpdate(sql,num,uid,pid);
        }

    流程:

        根据绑定的ID获取到是哪个商品-进入Servlet中进行购物车是否有此商品的判断、如果有则更新数量、如果没有则添加进去-返回到JSP页面进行提示是否添加成功



    • (7)点击进入我的购物车

    所需的Servlet:

    
    @WebServlet("/scart.do")
    public class ScartServlet extends HttpServlet {
        /*
        *  我的购物车所需要的Servlet。
        *  用户点击我的购物车则跳转到此Servlet中,由此Servlet进行完一系列操作之后再转入负责展示数据的JSP页面
        *  首先,需要获取到登录数据的关键字,判断用户是否登录,如果用户没有登录则跳转到登录界面。
        *  如果用户已经登录过,则获取请求参数(uid),uid在我的数据库表中意为查询我当前账户所添加的所有商品信息。
        *  获取请求参数之后调用DAO层,进行数据的查询。
        *  最后共享参数和请求转发。
        *
        *  该Servlet需要配合购物车的JSP界面进行使用。
        * */
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 获取登录数据的关键字,判断是否登录
         // W为前文登录时的关键字。
    Map islogin = (Map) req.getSession().getAttribute("W"); // 获取请求参数。 Integer uid = (Integer) islogin.get("uid"); // 调用DAO层 IProductDAO dao = new ProductDAOImpl(); List<Map<String, Object>> allcar = dao.allcar(uid); // 共享参数。 req.setAttribute("Wcc",allcar); // 请求转发 req.getRequestDispatcher("/views/goodscart.jsp").forward(req,resp); } }

    所需要的JSp页面:

    <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>
                
    
                <c:forEach var="W" items="${Wcc}">
                <div class="goods">
                    <ul>
                        <li><img src="${W.pimage}"/> ${W.pname}</li>
                        <li>尺碼:均碼</li>
                        <li class="price">${W.pPrice}</li>
                        <li>
                            <div class="count">
                            
                            <span class="s"></span>
                            <input type="text" value="${W.num}" name="num" class="num" />
                            <span class="s"></span>
                            </div>
                        
                        </li>
                        <li class="subtotal">${W.pPrice}</li>
                        <li>
                            <a href="/shop/delete?oid=${W.oid}">刪除</a>
                        </li>
                    </ul>
                </div>
                </c:forEach>
                <div class="foot">
                    <ul>
                        ${b}
                        <li><a href="/shop/deletecar">全部刪除</a>
                        <li>總價:¥<span style="color: red; font-size: 30px; font-weight: 600;" id="total">11111</span>
                        <li><a href="#">去付款</a>
    
                    </ul>
                </div>
            </div>
        </body>

    所需要的接口和实现类:

    /*
        *
        *  查询购物车
        * */
        List<Map<String,Object>> allcar(int uid);
    
    实现类:
    
     /*
        *  查询购物车商品,使用多表联合查询。
        *  多条查询使用List集合。
        * */
        @Override
        public List<Map<String, Object>> allcar(int uid) {
            String sql = "select c.oid,p.pname pname,p.shopPrice pPrice,p.pimage pimage,c.num " +
                    "FROM car c " +
                    "INNER JOIN product p ON p.pid= c.pid where c.uid=?";
    
            return DBUtil.excuteQuery(sql,uid);
        }

    流程:

        用户点击我的购物车-进入Servlet获得现登录人员的id找出属于此用户的商品数据-反馈给JSP进行显示。



    • (8)根据用户需求删除购物车的某个商品

    所需的Servlet:

    @WebServlet("/delete")
    public class DeletionCartServlet extends HttpServlet {
        /*
        *  根据用户需求删除购物车的某个商品。
        *  获取请求参数,获取用户点击的商品的ID,
        *  调用DAO层的SQL语句进行删除。
        *  请求转发到购物车界面。
        *
        *  该Servlet需要配合购物车的JSp页面进行使用。
        * */
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 获取请求参数。
            String oid = req.getParameter("oid");
            // 调用DAO获取SQL语句。
            IProductDAO dao = new ProductDAOImpl();
            dao.deleteCart(Integer.parseInt(oid));
            // 请求转发。
            req.getRequestDispatcher("/scart.do").forward(req,resp);// 和(7)相连接
        }
    }

    所需要的JSP页面:

    <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>
    
    
                <c:forEach var="W" items="${Wcc}">
                <div class="goods">
                    <ul>
                        <li><img src="${W.pimage}"/> ${W.pname}</li>
                        <li>尺碼:均碼</li>
                        <li class="price">${W.pPrice}</li>
                        <li>
                            <div class="count">
    
                            <span class="s"></span>
                            <input type="text" value="${W.num}" name="num" class="num" />
                            <span class="s"></span>
                            </div>
    
                        </li>
                        <li class="subtotal">${W.pPrice}</li>
                        <li>
                            <a href="/shop/delete?oid=${W.oid}">刪除</a>
                        </li>
                    </ul>
                </div>
                </c:forEach>
                <div class="foot">
                    <ul>
                        ${b}
                        <li><a href="/shop/deletecar">全部刪除</a>
                        <li>總價:¥<span style="color: red; font-size: 30px; font-weight: 600;" id="total">11111</span>
                        <li><a href="#">去付款</a>
                    </ul>
                </div>
            </div>
        </body>

    所需要的接口和实现类:

     /*
        *  删除购物车的某个商品
        *
        * */
        boolean deleteCart(int oid);
    
    
    实现类:
    
     /*
        *  删除单条商品。
        * */
        @Override
        public boolean deleteCart(int oid) {
            String sql = "delete from car where oid= ?";
            return DBUtil.excuteUpdate(sql,oid);
        }

    流程:

        用户点击删除,根据连接的地址和绑定的ID-转到Servlet处理业务-转到购物车JSp页面重新刷新JSp页面。



    • (9)根据用户需求删除购物车的所有商品

    所需的Servlet:

    
    @WebServlet("/deletecar")
    public class DeletecarServlet extends HttpServlet {
        /*
        *  根据用户需求删除购物车所有的商品。
        *  用户点击购物车删除所有商品按钮之后,则跳转到此Servlet。
        *  然后通过Session和Map的键值对读取当前账户的uid,也就是获取购物车那张表里的输入当前账户的商品id
        *  第二步调取DAO层里的删除商品的SQL语句,对商品进行删除。
        *  最后重定向到购物车界面。
        *
        *  该Servlet需要配合购物车的JSP页面进行使用。
        * */
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 通过Session和Map的键值对读取当前账户的uid,也就是获取购物车那张表里的输入当前账户的商品id
            Map user = (Map) req.getSession().getAttribute("W");
            Integer uid = (Integer) user.get("uid");
            // 调用DAO层。
            IProductDAO dao = new ProductDAOImpl();
            boolean b = dao.deleteCarts(uid);
            // 重定向到购物车界面。
            resp.sendRedirect("/shop/scart.do");// 和(7)相连接
    } }

    所需要的JSp页面:

    <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>
    
    
                <c:forEach var="W" items="${Wcc}">
                <div class="goods">
                    <ul>
                        <li><img src="${W.pimage}"/> ${W.pname}</li>
                        <li>尺碼:均碼</li>
                        <li class="price">${W.pPrice}</li>
                        <li>
                            <div class="count">
    
                            <span class="s"></span>
                            <input type="text" value="${W.num}" name="num" class="num" />
                            <span class="s"></span>
                            </div>
    
                        </li>
                        <li class="subtotal">${W.pPrice}</li>
                        <li>
                            <a href="/shop/delete?oid=${W.oid}">刪除</a>
                        </li>
                    </ul>
                </div>
                </c:forEach>
                <div class="foot">
                    <ul>
                        ${b}
                        <li><a href="/shop/deletecar">全部刪除</a>
                        <li>總價:¥<span style="color: red; font-size: 30px; font-weight: 600;" id="total">11111</span>
                        <li><a href="#">去付款</a>
                    </ul>
                </div>
            </div>
        </body>

    所需要的接口和实现类:

    /*
        *  删除购物车的所有商品
        *
        * */
        boolean deleteCarts(int uid);
    
    实现类:
    
      /*
        *  删除多条商品。
        * */
        @Override
        public boolean deleteCarts(int uid) {
            String sql = "delete  from car where uid = ?";
            return DBUtil.excuteUpdate(sql,uid);
        }

    流程:

        用户点击全部删除,跳转到负责处理此业务的Servlet-Servlet根据id信息删除商品-返回给JSp页面进行刷新展示。



    • (10)用户注销

    hear界面(进入个人中心的方式):

        <div class="header_wrap">            
                <ul>
                    <c:choose>
                        <c:when test="${empty W}">
                            <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/persional.jsp">${W.username}</a></li>
                        </c:otherwise>
                    </c:choose>
    
                    <li><a href="#">我的收藏</a></li>
                    <li><a href="/shop/scart.do">我的购物车</a></li>
                    <li><a href="#">我的订单</a></li>
                    <li><a href="#">帮助中心</a></li>
                    <li><a href="#">商家后台</a></li>
                    
                </ul>
            </div>

    被跳转的JSP页面:

    body>
            <fieldset>
                <legend>
                    欢迎来到您的个人中心
                </legend>
                <div>
                    <ul>
                        <li><a href="/shop/LoginOut">注销当前账户</a></li>
                        <li><a href="/shop/home" >点击返回首页</a></li>
                        <li><a href="/shop/views/login.jsp">返回登陆界面</a></li>
                        <li><a href="/shop/views/login.jsp">点击修改密码</a></li>
                    </ul>
                </div>
    
                <iframe name="show" width="65%" height="85%"></iframe>
            </fieldset>
    </body>

    所需要的Servlet:

    
    @WebServlet("/LoginOut")
    public class LoginOutServlet extends HttpServlet {
        /*
        *  注销登录
        *  用户点击注销登录按钮则跳转到此Servlet。
        *  销毁Session,销毁之后,相当于将登陆信息全部清除。
        *  然后重定向到主界面,因为没有数据的存在而且需要地址栏的改变,所以使用重定向。
        *
        *  该Servlet需要配合个人中心的JSP页面进行使用。
        * */
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 销毁Session,销毁之后,相当于将登陆信息全部清除。
            req.getSession().invalidate();
            // 注销账号之后,重定向到主界面
            resp.sendRedirect("/shop/home");
    
        }
    }

    流程:

        用户进入个人中心-跳转到负责展示JSP,点击注销账户-进入Servlet处理业务。

  • 相关阅读:
    HDU 1010 Tempter of the Bone(DFS剪枝)
    HDU 1013 Digital Roots(九余数定理)
    HDU 2680 Choose the best route(反向建图最短路)
    HDU 1596 find the safest road(最短路)
    HDU 2072 单词数
    HDU 3790 最短路径问题 (dijkstra)
    HDU 1018 Big Number
    HDU 1042 N!
    NYOJ 117 求逆序数 (树状数组)
    20.QT文本文件读写
  • 原文地址:https://www.cnblogs.com/lxr521/p/10758744.html
Copyright © 2011-2022 走看看