前臺(tái)需要登陸模塊

一.購(gòu)買頁(yè)面

1.ForeServlet.buyone()
在產(chǎn)品頁(yè)面點(diǎn)擊立即購(gòu)買會(huì)訪問(wèn)地址
http://127.0.0.1:8080/tmall/forebuyone?pid=844&num=3
通過(guò)訪問(wèn)地址/forebuyone導(dǎo)致ForeServlet.buyone()方法被調(diào)用
  int pid=Interger.parseInt(request.getParameter("pid"));
  int num = Interger.parseInt(request.getParameter("num"));
   Product p = productDAO.get(pid);
   User user = request.getSession.getAttribute("user");

   boolean found = false;
   List<OrderItem> ois = orderItemDAO.listByUser(user.getId());
  for(orderItem oi : ois){
       if(oi.getProduct().getId() =  p.getId()){
           oi.setNumber(oi.getNumber+num);
           orderItemDAO.update(oi);
           found = true;
           oiid = oi.getId();
           break;
      }
  }
  if(!found){
        OrderItem oi = new OrderItem();
        oi.setUser(user);
        oi.setNumber(num);
        oi.setProduct(p);
        orderItemDAO.add(oi);
        oiid = oi.getId();
 }
   return "@forebuy?oiid="+oiid;

二.結(jié)算頁(yè)面

1.ForeServlet.buy()
上一節(jié)訪問(wèn)forebuy?oiid=1頁(yè)面導(dǎo)致ForeServlet.buy()被調(diào)用
   String[] oiids = request.getParameterValues("oiid");
   List<OrderItem> ois = new ArrayList<>();
   float total = 0;
   for(String strid : oiids){
              int oiid = Interger.parseInt(strid);
              OrderItem oi = orderItemDAO.get(oiid);
              total  + = oi.getProduct().getPromotePrice()*oi.getNumber();
             ois.add(oi);
   }
         reuqest.getSession().setAttribute("ois",ois);
        request.setAttribute("total",total);
       return "buy.jsp";
2.buy.jsp
     header.jsp
     top.jsp
            buyPage.jsp
     footer.jsp

三.加入購(gòu)物車

四.查看購(gòu)物車

1.ForeServlet.cart()
 訪問(wèn)地址/forecart導(dǎo)致ForeServlet.cart()方法被調(diào)用
 User user = request.getSession.getAttribute("user");
 List<OrderItem> ois = OrderItemDAO.listByUser(user.getId());
 request.setAttribute("ois",ois);
 return "cart.jsp";
2.cart.jsp
 header.jsp
 top.jsp
 simpleSearch.jsp
        cartPage.jsp
 footer.jsp

五.登陸狀態(tài)過(guò)濾器

1.ForeAuthFilter
 String contextPath = request.getServletContext().getContextPath();
 String[] noNeedAuthPage = new String[]{
    "homepage",
    "checkLogin",
    "register",
    "loginAjax",
    "login",
    "product",
    "category",
     "search"
 };
   String uri = request.getRequestURI();
   uri = StringUtils.remove(uri,contextPath);
   if(uri.startsWith("/fore")&&!uri.startsWith("/foreServlet")){
  String method = StringUtils.substringAfterLast(uri,"/fore" );
        if(!Arrays.asList(noNeedAuthPage).contains(method)){
            User user =(User) request.getSession().getAttribute("user");
            if(null==user){
                response.sendRedirect("login.jsp");
                return;
            }
        }
 }
2.web.xml
     在web.xml增加對(duì)ForeAuthFilter的配置
      注:必須加在ForeServletFilter之前

六.購(gòu)物車頁(yè)面操作

1.調(diào)整訂單數(shù)量
   點(diǎn)擊增加減少按鈕禀挫,根據(jù)cartPage.jsp中的js代碼卧秘,會(huì)通過(guò)Ajax訪問(wèn)/forechangeOrderItem路徑
   導(dǎo)致ForeServlet.changeOrderItem()方法被調(diào)用
   User user = request.getSession().getAttribute("user");
   if(null==user)
          return "%fail";
   int pid = Interger.parseInt(request.getParameter("pid"));
   int number = Interger.parseInt(request.getParameter("number"));
   List<OrderItem> ois = orderItemDAO.listByUser(user.getId());
   for(orderItem oi : ois){
        if(oi.getProduct().getId() == pid){
          oi.setNumber(number);
          orderItemDAO.update(oi);
          break;
         }
    }
   return "%success";
2.刪除訂單項(xiàng)
 ForeServlet.deleteOrderItem()
 User user = request.getSession().getAttribute("user");
  if(null==user)
          return "%fail";
  int oiid = Interger.parseInt(reuqest.getParameter("oiid"));
 orderItemDAO.delete(oiid);
 return "%success";

七.生成訂單

1. ForeServlet.createOrder
  User user = request.getSession().getAttribute("user");
   List<OrderItem> ois = (List<OrderItem>)request.getSession().getAttribute("ois");
   if(ois.isEmpty())
        return "@login.jsp";
   String address = request.getParameter("adress");  
   String post = request.getParameter("post");
   String receiver = request.getParameter("receiver");
   String mobile = request.getParameter("mobile");
   String userMessage = request.getParameter("userMessage"); 
  
   Order order = new Order();
   String orderCode = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+RandomUtils.nextInt(10000);
   order.setOrderCode(orderCode);
   order.setAddress(address);
   order.setPost(post);
   order.setReceiver(receiver);
   order.setMobile(mobile);
   order.setUserMessage(userMessage);
   order.setCreateDate(new Date());
   order.setUser(user);
   order.setStatus(OrderDAO.waitPay);
   orderDAO.add(order);
   float total = 0;
   for(OrderItem oi : ois){
         oi.setOrder(order);
         orderItemDAO.update(oi);
       total+=oi.getProduct().getPromotePrice()*oi.getNumber();
    }
    return "@forealipay?oid="+order.getId() +"&total="+total;

八.我的訂單頁(yè)

1.ForeServlet.bought()
 User user = (User) request.getSession().getAttribute("user");
 List<Ordet> os = orderDAO.list(user.getId(),OrderDAO.delete);
 orderItemDAO.fill(os);
 request.setAttribute("os",os);
 return "bought,jsp";
2.bought.jsp
 header.jsp
 top.jsp
 simpleSearch.jsp
        boughtPage.jsp
 footer.jsp
3.確認(rèn)收貨ForeServlet.confirmPay()
  int oid = Interger.parseInt(request.getParameter("oid"));
  Order o = orderDAO.get(oid);
  orderItemDAO.fill(o);
  request.setAttribute("o",o);
  return "confirmPay.jsp";
4.confirmPay.jsp
 header.jsp
 top.jsp
 simpleSearch.jsp
        confirmPayPage.jsp
 footer.jsp
5.確認(rèn)收貨成功ForeServlet.orderConfirmed()
  int oid = Interger.parseInt(request.getParameter("oid"));
  Order o = orderDAO.get(oid);
  o.setStatus(orderDAO.waitReview);
  o.setConfirmDate(new Date());
  orderDAO.update(o);
  return "orderConfirmed.jsp";
6.orderConfirmed.jsp
  header.jsp
  top.jsp
   simpleSearch.jsp
       orderConfirmedPage.jsp
 footer.jsp
7.刪除ForeServlet.deleteOrder()
int oid = Integer.parseInt(request.getParameter("oid"));
Order o = orderDAO.get(oid);
o.setStatus(OrderDAO.delete);
orderDAO.update(o);
return "%success";
8評(píng)價(jià)產(chǎn)品頁(yè)面 ForeServlet.review()
  int oid = Interger.parseInt(request.getParameter("oid"));
  Order o = orderDAO.get(oid);
  orderItemDAO.fill(o);
  Product p = o.getOrderItems().get(0).getProduct();
  List<Review> reviews = reviewDAO.list(p.getId());
  productDAO.setSaleAndReviewNumber(p);
  request.setAttribute("p", p);
  request.setAttribute("o", o);
  request.setAttribute("reviews", reviews);
  return "review.jsp";
9.提交評(píng)價(jià)ForeServlet.doreview()
  int oid = Integer.parseInt(request.getParameter("oid"));
Order o = orderDAO.get(oid);
o.setStatus(OrderDAO.delete);
orderDAO.update(o);
  int pid = Interger.parseInt(request.getParameter("pid"));
 Product p = productDAO.get(pid);
 String content = request.getParameter("content");
 content = HtmlUtils.htmlEscape(content);
 User user = (User) request.getSession().getAttribute("user");
 Review review = new Review();
 review.setContent(content);
 review.setProduct(p);
 review.setCreateDate(new Date());
 review.setUser(user);
 reviewDAO.add(review);
 return "@forereview?oid="+oid+"&showonly=true";
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爽冕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涤伐,更是在濱河造成了極大的恐慌,老刑警劉巖葱轩,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屠阻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡策菜,警方通過(guò)查閱死者的電腦和手機(jī)晶疼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)又憨,“玉大人翠霍,你說(shuō)我怎么就攤上這事〈垒海” “怎么了寒匙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)躏将。 經(jīng)常有香客問(wèn)我锄弱,道長(zhǎng),這世上最難降的妖魔是什么耸携? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任棵癣,我火速辦了婚禮,結(jié)果婚禮上夺衍,老公的妹妹穿的比我還像新娘狈谊。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布河劝。 她就那樣靜靜地躺著壁榕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赎瞎。 梳的紋絲不亂的頭發(fā)上牌里,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音务甥,去河邊找鬼牡辽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敞临,可吹牛的內(nèi)容都是我干的态辛。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挺尿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奏黑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起编矾,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熟史,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后窄俏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蹂匹,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年裆操,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怒详。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踪区,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吊骤,到底是詐尸還是另有隱情缎岗,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布白粉,位于F島的核電站传泊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸭巴。R本人自食惡果不足惜眷细,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹃祖。 院中可真熱鬧溪椎,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至歉秫,卻和暖如春蛾洛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雁芙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工轧膘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兔甘。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓谎碍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親裂明。 傳聞我的和親對(duì)象是個(gè)殘疾皇子椿浓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容