天下無難事,只怕有心人。天下天易事,只怕粗心人。——袁枚
當你看當這句話的時候也許你現在對項目不知所措;也許你現在對項目一知半解;也許你對項目並未滿載而歸;但是不要放棄、不要氣餒,因為我們還有時間、信念和堅持。小伙伴們崛起吧!!!
  一、思路梳理
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(); } } }
主要分享這些關鍵代碼。日后更新。
