• 易买网的思路集成


                    天下无难事,只怕有心人。天下天易事,只怕粗心人。——袁枚

        当你看当这句话的时候也许你现在对项目不知所措;也许你现在对项目一知半解;也许你对项目并未满载而归;但是不要放弃、不要气馁,因为我们还有时间、信念和坚持。小伙伴们崛起吧!!!

      一、思路梳理

      1)首先搭建前后台的页面

      2)其次前端开发

        01、登录外加验证码

        02、注册

        03、前台首页(导航栏和左侧栏一级和二级分类)

        04、默认情况下对所有商品进行分页

        05、新闻动态

        06、商品最近浏览

        07、商品详情

        08、单项购买和加入购买车

        09、前台留言

      3)最后后台开发

        01、用户管理

        02、新闻管理

        03、评价管理

        04、商品管理

        05、分类管理

        06、订单管理

      二、难点攻克

      1.注册(Ajax技术)

        ajax的外部引用在js进行引用,在js页面引用,js会转向servlet

      $(function(){
            $("#userId").blur(function(){//"userId"是用户的Id
                ajax();//调用这个方法
            });
        });
        function ajax(){
            //获取用户名
            var uname=$("#userId").val();
            $.ajax({
                    url:'/EasyBuy/AjxServlet',
                    type:'POST',
                        data:'name='+uname,
                        //回调函数data代表servlet会送数据
                        success:function(data){        //mag:false  true
                            if(data=="true"){
                                //不能注册
                                $("#userSpan").html("不能注册");
                            }else{
                                $("#userSpan").html("可以注册");//这个数据是和数据库进行对比的
                            }
                            
                        }
            });
        }


        2、购物车的思路

          先在实体类里面定义:一个购物车    一个商品

          其次根据当前需要的条件建立接口和实现类

          接下来建立servlet在将servlet进行调用===============下面是判断购物的商品个数

    package cn.happy.servlet;
    
    import java.io.IOException;
    import java.util.LinkedHashMap;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.happy.dao.imp.OrderAddDaoImp;
    import cn.happy.entity.Cart;
    import cn.happy.entity.CartItem;
    import cn.happy.entity.Product;
    
    public class ProductServlet extends HttpServlet {
    
        /*
                出品人:执念
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
        }
    
        /*
                出品人:执念
         */
        
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
            LinkedHashMap<String,Cart> map = new LinkedHashMap<String, Cart>();  // 将用到购物车的订单list   k:商品编号   v:商品对象
    
            String oper=request.getParameter("oper");//获取页面的操作值oper
            String name=(String)request.getSession().getAttribute("admin");
            if(name==null){
                request.getRequestDispatcher("/servlet/Login?haha=haha").forward(request, response);
            }else {
                
                if(oper!=null && oper!=""){ //判定操作数不等于空不等于空字符串
                    if(oper.equals("view")){    //传过来的值为view时候
                        Product proInfoById = dao.getProInfoById(Integer.parseInt(request.getParameter("pid")));//获取当前的id
                        request.setAttribute("procduct",proInfoById);//根据id进行查询详细信息
                        request.getRequestDispatcher("/product-view.jsp").forward(request, response);//进行转发到购物车的详情中
                    }else{
                        doAdd(request, response);
                    }
                    
                }else{
                    response.sendRedirect(request.getContextPath()+"/shopping.jsp");
                }
            
                
            }
            
        /*    
            if(name!=null){   //判断名字不等于null
                if(oper!=null && oper!=""){ 
                        doAdd(request, response);
                }else{
                    response.sendRedirect("/shopping.jsp");
                }
            }else{
                response.sendRedirect("/login.jsp");
        }    
    
    */
    
            
            
    
            
        }
        
        
        OrderAddDaoImp dao = new OrderAddDaoImp();
        private void doAdd(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
        
                CartItem citem=(CartItem)request.getSession().getAttribute("CartItem");//获取citem进行一个取值
                    String id= request.getParameter("pid");//获取页面的id
                    boolean flag=true;//默认当前的状态为true
                        if(citem==null){  //如果citem获取的值为null
                            citem = new CartItem();//从新获取
                            citem.setLmap(new LinkedHashMap<String, Cart>());//将他加入集合里
                        } 
                        for (String item : citem.getLmap().keySet()) {//遍历集合的数量
                            Cart cart= citem.getLmap().get(item);
                            Cart cz=new Cart();
                            cz.setEp_id(Integer.parseInt(id));//根据id进行+1
                            if(cart.equals(cz)){//1判断获取页面的值和实体进行对比如果一样进行++
                                citem.getLmap().get(item).setEp_num(citem.getLmap().get(item).getEp_num()+1);
                                flag=false;
                                break;
                            }
                        }
                        if(flag){ //2如果没有添加过那么进行新的添加新的商品
                            Cart cz=new Cart();
                                Product proinfo = dao.getProInfoById(Integer.parseInt(id));//获取商品的id
                                cz.setEp_id(proinfo.getEP_ID());
                                cz.setOrderName(proinfo.getEP_NAME());
                                cz.setEq_floatprice(proinfo.getEP_PRICE());
                                cz.setEp_num(1);
                                cz.setEP_FILE_NAME(proinfo.getEP_FILE_NAME());
                                citem.getLmap().put(id,cz);//添加到map集合
                            }
                            citem.setOrdermoney();
                        request.getSession().setAttribute("CartItem",citem);
                        response.getWriter().print("true");
                        //response.sendRedirect("/EasyBuy/shopping.jsp");
            }
    }

      三、商品浏览

        主要用到了排序和cookie=========接下来servlert

     

    package cn.happy.servlet;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.happy.dao.imp.NewsDynamicImp;
    import cn.happy.dao.imp.OrderAddDaoImp;
    import cn.happy.entity.News;
    import cn.happy.entity.Product;
    import cn.happy.entity.ProductCategory;
    
    public class NewsServlet extends HttpServlet {
    
        /**
             方言
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException { 
            doPost(request, response);
        }
    
        /**
             方言
         */
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            NewsDynamicImp ndi = new NewsDynamicImp();        
            OrderAddDaoImp dao = new OrderAddDaoImp();
            String hh = request.getParameter("judge");
            if(hh!=null&&hh.equals("liulan")){
                //获取商品编号
                int id = Integer.parseInt(request.getParameter("id"));
                try {
                    //
                    String proHistory = getHistory(request, String.valueOf(id));
                    Cookie cookie = new Cookie("proHistory", proHistory);
                //    cookie.setMaxAge(3600*60*24*365);
                    response.addCookie(cookie);
                    
                    String myid = cookie.getValue();
                    List mylist = Arrays.asList(myid.split("_"));
                    Product pro = null;
                    List<Product> li = new ArrayList<Product>();
                    for (Object item : mylist) {
                         //调用根据商品编号获取商品详细信息的方法
                        pro = ndi.SelectAllCommodityByID(Integer.parseInt(item.toString()));
                        li.add(pro);
                    }
                    request.getSession().setAttribute("pro", li);
                    Product proInfoById = dao.getProInfoById(id);//获取当前的id//购物车的
                    request.setAttribute("procduct",proInfoById);//根据id进行查询详细信息
                    request.getRequestDispatcher("/product-view.jsp").forward(request, response);
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }else{
                List<News> list = null;
                List<Product> list1 = null;
                List<ProductCategory> list2 = null;
                try {
                    list = ndi.SelectAllNews();
                    list1 = ndi.SelectAllCommodity();
                    list2 = ndi.SelectCommodityClassification();
                } catch (Exception e) {
                
                    e.printStackTrace();
                }
                
                    request.getSession().setAttribute("list", list);
                    request.getSession().setAttribute("commodity", list1);
                    request.getSession().setAttribute("class1", list2);
                    request.getRequestDispatcher("/servlet/IndexPageServlet").forward(request, response);
                    //request.getRequestDispatcher("/index.jsp").forward(request, response);
                
            }
            
        }
        
        private String getHistory(HttpServletRequest request, String id){
    //获取用户所有携带的cookie
                    //可能情况  
                    //第一次访问:proHistory=null  1    proHistory=1
                    //非第一次:proHistory=3_2_5  1    proHistory=1_3_2
                    //非第一次:proHistory=3_1_5  1    proHistory=1_3_5
                    //非第一次:proHistory=3_2    1    proHistory=1_3_2
                    //拆解出cookies集合
            Cookie[] cookies = request.getCookies();
            //浏览过的商品形成的大字符串
            String proHistory=null;
            for (int i = 0; cookies!=null&&i < cookies.length; i++) {
                if(cookies[i].getName().equals("proHistory")){
                    proHistory=cookies[i].getValue();
                    break;
                }
            }
            if(proHistory==null){
                return id;
            }
            //根据_分割数据
            //在java中 代表转义字符 
     	 等,而 \ 代表一个反斜杠 而.代表一个元字符
            //要表示一个.就需要用 要用. 
            //所以"\." 在实际编译中 就代表 .
            List mylist = Arrays.asList(proHistory.split("\_"));
            LinkedList<String> list = new LinkedList<String>();
            list.addAll(mylist);
            if(list.contains(id)){//集合中含有该商品
                list.remove(id);
                list.addFirst(id);
            } else {
                if(list.size()>=3){
                    list.removeLast();
                    list.addFirst(id);
                } else {
                    list.addFirst(id);
                }
            }
            StringBuffer sb = new StringBuffer();
            for (String item : list) {
                sb.append(item+"_");
            }
            return sb.deleteCharAt(sb.length()-1).toString();
    
        }
    }

       四、商品分类(后台的)

        主要:就是分析一二级菜单主要用到两张表,一级id两张表要一样;二级id两张表要不同。=========servlet

          

    package cn.happy.servlet;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.happy.dao.imp.HProductCategoryDaoImpl;
    import cn.happy.entity.ProductCategory;
    
    public class HProductClassServlet extends HttpServlet {
    
        /*
                出品人:执念
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                doPost(request, response);
                
        }
    
        /*
                出品人:执念
         */
        HProductCategoryDaoImpl  productCategoryDaoImpl=new HProductCategoryDaoImpl();
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
            //解决乱码
            request.setCharacterEncoding("utf-8");
            String oper=request.getParameter("oper");
            if(oper.equals("list")){//进入分类管理页面
                load(request,response);
                request.getRequestDispatcher("/manage/productClass.jsp").forward(request, response);
            }else if(oper.equals("add")){//做中转站,携带数据到add.jsp页面
                load(request,response);
                request.getRequestDispatcher("/manage/productClass-add.jsp").forward(request, response);
            }else if(oper.equals("addtrue")){//进行真正的添加操作
                add(request,response);
            }else if(oper.equals("delChildCate")){//删除选中的子分类
                delChileCate(request,response);
            }else if(oper.equals("delPcate")){//删除选中的一级分类
                delPCate(request,response);
            }else if(oper.equals("modify")){//做中转站  携带数据到modify.jsp页面
                modify(request,response);
            }else if(oper.equals("modifytrue")){//进行真正的修改操作
                modifytrue(request,response);
            }
    
        }
        /**
         * 将所有的一级分类  、 二级分类放入作用域
         */
        public void load(HttpServletRequest request, HttpServletResponse response){
            try {
                //所有的一级分类  并放入作用域
                List<ProductCategory> parentList=productCategoryDaoImpl.getAllParentCate();
                request.setAttribute("parentList", parentList);
                //所有的二级分类  并放入作用域
                List<ProductCategory> childList=productCategoryDaoImpl.getAllChildCate();
                request.setAttribute("childList", childList);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 进行真正的添加操作
         * */
        public void add(HttpServletRequest request, HttpServletResponse response){
            //获取待添加分类的根分类
            String pcate=request.getParameter("parentId");
            //获取待添加的分类的名称
            String cate=request.getParameter("className");
            
            ProductCategory productCategory=new ProductCategory();
            productCategory.setEPC_NAME(cate);
            productCategory.setEPC_PARENT_ID(Integer.parseInt(pcate));
            
            try {
                boolean flag=productCategoryDaoImpl.add(productCategory);
                if(flag){//添加成功
                    System.out.println("添加成功!");
                }else{
                    System.out.println("添加失败!");
                }
                request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        
        /**
         * 删除选中的二级分类
         * 
         * */
        public void delChileCate(HttpServletRequest request, HttpServletResponse response){
            //获取选中删除的二级分类的id
            String id=request.getParameter("id");
            try {
                boolean flag=productCategoryDaoImpl.delChildCate(Integer.parseInt(id));
                if(flag){//删除成功
                    System.out.println("删除成功!");
                }else{
                    System.out.println("删除失败!");
                }
                request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /**
         * 删除选中的一级分类
         * */
        public void delPCate(HttpServletRequest request, HttpServletResponse response){
            //获取选中的一级分类的id
            String pid=request.getParameter("id");
            try {
                boolean flag=productCategoryDaoImpl.delPcate(Integer.parseInt(pid));
                if(flag){
                    System.out.println("删除成功!");
                }else{
                    System.out.println("删除失败!");
                }
                request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 做修改的中转站
         * */
        public void modify(HttpServletRequest request, HttpServletResponse response){
            load(request,response);
            //获取要修改的分类的编号
            String id=request.getParameter("id");
            //根据分类编号查找该分类的信息
            try {
                ProductCategory productCategory=productCategoryDaoImpl.getInfoById(Integer.parseInt(id));
                //将该信息放入作用域,便于前台展示
                request.setAttribute("productCategory", productCategory);
                //根据查找回来的信息获取其父id  获取父分类的相关信息
                ProductCategory PCategory=productCategoryDaoImpl.getInfoById(productCategory.getEPC_PARENT_ID());
                //放入作用域
                request.setAttribute("PCategory", PCategory);
                //转发
                request.getRequestDispatcher("/manage/productClass-modify.jsp").forward(request, response);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * 进行真正的修改操作
         * */
        public void modifytrue(HttpServletRequest request, HttpServletResponse response){
            //获取要修改的分类的编号
            String id=request.getParameter("id");
            System.out.println(id);
            //获取修改后的内容
            String value=request.getParameter("className");
            //获取修改后是一级分类还是二级分类  所属分类编号
            String pid=request.getParameter("parentId");
            ProductCategory productCategory=new ProductCategory();
            productCategory.setEPC_ID(Integer.parseInt(id));
            productCategory.setEPC_NAME(value);
            productCategory.setEPC_PARENT_ID(Integer.parseInt(pid));
            //进行修改操作
            try {
                boolean flag=productCategoryDaoImpl.modifyByid(productCategory);
                if(flag){//修改成功
                    System.out.println("修改成功!");
                }else{
                    System.out.println("修改失败!");
                }
                request.getRequestDispatcher("/servlet/HProductClassServlet?oper=list").forward(request, response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }

            主要分享这些关键代码。日后更新。

  • 相关阅读:
    LeetCode-1370 Increasing Decreasing String
    LeetCode-1221 Split a String in Balanced Strings
    Neo4j 实战(三)-- Neo4j Loads CSV Files
    Neo4j 实战(二)-- neo4j 基础语句
    Java HashMap 学习笔记
    Markdown 入门笔记
    《知识图谱方法、实践与应用》读书笔记(第一遍)
    Java 数组复制
    LeetCode-496 Next Greater Element I Solution(with Java)
    linux 同步IO: sync、fsync与fdatasync
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5714167.html
Copyright © 2020-2023  润新知