易買網的思路集成


                天下無難事,只怕有心人。天下天易事,只怕粗心人。——袁枚

    當你看當這句話的時候也許你現在對項目不知所措;也許你現在對項目一知半解;也許你對項目並未滿載而歸;但是不要放棄、不要氣餒,因為我們還有時間、信念和堅持。小伙伴們崛起吧!!!

  一、思路梳理

  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中 \代表轉義字符 \n \t 等,而 \\ 代表一個反斜杠 而.代表一個元字符
        //要表示一個.就需要用 要用\. 
        //所以"\\." 在實際編譯中 就代表 .
        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();
        }
    }

}

 

        主要分享這些關鍵代碼。日后更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM