国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JSP購(gòu)物車實(shí)例[三]
主要內(nèi)容:
l   完成購(gòu)物車的其他基本功能;
l   生成訂單;
l 小結(jié)
1、購(gòu)物車的其它功能
對(duì)購(gòu)物車的物品數(shù)量修改和物品刪除功能是兩外兩個(gè)基本功能。實(shí)現(xiàn)過(guò)程與添加工程比較類似,這里只給出參考代碼:
1.1 模型部分
文件名:CartManager.java(在上一講的基礎(chǔ)上修改,紅色部分為添加的內(nèi)容)
package javabean;
import java.util.ArrayList;
import java.util.Iterator;
public class CartManager
{
   // 表示購(gòu)物車
   private ArrayList cart;
   public void setCart(ArrayList cart)
   {
      this.cart = cart;
   }
   public ArrayList getCart()
   {
      return cart;
   }
  
   // 添加的物品&數(shù)量
   public ArrayList addToCart(Goods g,int quantity)
   {
      if(cart==null){
         // 實(shí)例化購(gòu)物車對(duì)象
         cart=new ArrayList();
         // 添加到購(gòu)物車
         Item item = new Item(g,quantity);
         cart.add(item);
      }
      else
      {
         // 轉(zhuǎn)換成數(shù)組
         Object items[] = cart.toArray();
         boolean find=false; // 表示是否查找到
         
         for(int i=0;i<items.length;i++)
         {
             Item temp = (Item)items[i];
             // 判斷購(gòu)物車中是否存在要添加的物品
             if(temp.getGoods().getGoodsid().equals(g.getGoodsid()))
             {
                temp.setQuantity(temp.getQuantity()+quantity);
                find=true;
                break;
             }
         }
         if(!find)
         {
            // 添加到購(gòu)物車
            Item item = new Item(g,quantity);
            cart.add(item);
        }
      }
      return cart;
   }
   public void delete(String goodsid)
   {
      // 轉(zhuǎn)換成Iterator對(duì)象
      Iterator i = cart.iterator();
      while(i.hasNext())
      {
         // 得到一個(gè)購(gòu)物項(xiàng)
         Item temp = (Item)i.next();
         if(temp.getGoods().getGoodsid().equals(goodsid))
         {
            cart.remove(temp);
            break;
         }
      }
   }
   public void update(String goodsid,int quantity)
   {
      Iterator i = cart.iterator();
      while(i.hasNext())
      {
         // 得到一個(gè)購(gòu)物項(xiàng)
         Item temp = (Item)i.next();
         if(temp.getGoods().getGoodsid().equals(goodsid))
         {
            temp.setQuantity(quantity);
            break;
         }        
      }
   }   
}
1.2 修改視圖部分
文件名:cart.jsp(在上一講的基礎(chǔ)上修改,紅色部分為添加的內(nèi)容)
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
購(gòu)物車中的信息<br>
<table border=1>
   <tr>
      <td>物品編號(hào)</td>
      <td>物品名稱</td>
      <td>價(jià)格</td>
      <td>數(shù)量</td>
   </tr>
<c:forEach var="item" items="${cart}">
   <tr>
<form action="processCart">
    <input type="hidden" name="goodsid" value="${item.goods.goodsid}">
      <td>${item.goods.goodsid}</td>
      <td>${item.goods.goodsname}</td>
      <td>${item.goods.price}</td>
      <td><input type="text" name="quantity" value="${item.quantity}"></td>
      <td><input type="submit" name="action" value="修改"></td>
      <td><input type="submit" name="action" value="刪除"></td>
</form>
   </tr>
</c:forEach>
</table>
1.3 控制器
刪除和修改功能使用相同的控制器,會(huì)根據(jù)提交按鈕的值確定要完成的功能,參考代碼如下:
文件名:ProcessCart.java
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javabean.*;
import java.util.*;
public class ProcessCart extends HttpServlet
{
   public void doGet(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
       //response.setContentType("text/html;charset=gb2312");
       //PrintWriter out = response.getWriter();
     try{
                                           // request.setCharacterEncoding("gb2312");
      // 得到要添加的物品的編號(hào)
      String goodsid = request.getParameter("goodsid");
      // 得到執(zhí)行命令:刪除還是修改
      String action = request.getParameter("action");
                                          action=new String(action.getBytes("8859_1"));
      //out.println(action);
     
      String quantity=null;
      if(action.equals("修改"))
      {
         quantity = request.getParameter("quantity");
      }
      // 創(chuàng)建JavaBean對(duì)象
      CartManager cartManager=new CartManager();
      // 得到session對(duì)象
      HttpSession session = request.getSession(true);
      // 得到購(gòu)物車對(duì)象
      ArrayList cart = (ArrayList)session.getAttribute("cart");
      // 用cart初始化cartManager
      cartManager.setCart(cart);
      if(action.equals("修改"))
      {
         cartManager.update(goodsid,Integer.parseInt(quantity));
      }else
      {
         cartManager.delete(goodsid);
      }
      // 把購(gòu)物車重新存到session
      session.setAttribute("cart",cartManager.getCart());
    }catch(Exception e){
       //out.println(e.toString());
    }
         response.sendRedirect("cart.jsp");     
   }
   public void doPost(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
      doGet(request,response);
   }
}
2、生成訂單
如果用戶購(gòu)物完成會(huì)下訂單,通常需要輸入個(gè)人的送貨信息等,然后把訂單信息存儲(chǔ)到數(shù)據(jù)庫(kù)中。這里這介紹如何組織信息,存儲(chǔ)信息的過(guò)程不再介紹。
需要兩張表:
l         訂單表
l         訂單明細(xì)表
訂單表中信息:
l         訂單號(hào): 日期+流水號(hào),通常作主鍵
l         訂單的發(fā)出者:通常從session中獲取信息 或者 讓用戶輸入(沒(méi)有登錄的情況下)
l         訂單的日期:
l         訂單的狀態(tài):
l         付款方式
l         送貨地址
l         聯(lián)系電話
l         接收人
訂單明細(xì)表(訂單號(hào)和物品編號(hào)作為聯(lián)合主鍵):
l         訂單號(hào)
l         物品的編號(hào)
l         該物品的數(shù)量
在完成訂單添加的時(shí)候,最好能進(jìn)行事務(wù)處理。
3、小結(jié)
整個(gè)JSP培訓(xùn)基本上按照MVC模式進(jìn)行,自己在完成任何功能的時(shí)候都可以按照這個(gè)思路來(lái)做。
3.1 MVC思路分析
MVC:對(duì)于每個(gè)功能,都分成3部分考慮。
l         先考慮v:表示試圖,與人交戶,分別輸入和輸出。
l         M:模型,通常使用JavaBean編寫,對(duì)于每個(gè)功能實(shí)際上對(duì)應(yīng)的一個(gè)方法(或者多個(gè)方法),應(yīng)該考慮整個(gè)方法執(zhí)行的時(shí)候需要的條件(方法的輸入),如何反饋(返回值類型和異常類型),具體功能使用Java代碼實(shí)現(xiàn)。
l         C:記住4句話:
n         獲取請(qǐng)求信息:request.getParameter方法,getParameterValues方法
n         調(diào)用JavaBean:創(chuàng)建對(duì)象、實(shí)例化、初始化、調(diào)用方法
n         傳值:request.setAttribute
n         轉(zhuǎn)向: RequestDispatcher或者response.sendRedirect方法
    因?yàn)榭刂破鞯墓δ芊浅9潭?,所以掌握上沒(méi)有難度。而模型部分屬于Java代碼,與JSP語(yǔ)法沒(méi)有太大關(guān)系,所以對(duì)讀者來(lái)說(shuō),學(xué)習(xí)JSP的難度主要在視圖部分。
3.2 輸入和輸出
輸入:
l         最基本的方式:表單提交,使用表單元素提交信息,通過(guò)form的action屬性指定處理文件(控制器)。比較典型的隱藏域的使用(修改信息、刪除)。
l         超鏈方法:典型的用法,就是使用“?”傳遞參數(shù),例如分頁(yè)顯示、刪除(超鏈方式)。
l         通過(guò)地址欄。
這些也非常固定。
輸出:
l         靜態(tài)信息的輸出:表頭,直接輸出
l         單個(gè)對(duì)象:例如user,使用${user.屬性名}輸出
l         集合對(duì)象:<c:forEach>標(biāo)簽輸出
l         錯(cuò)誤信息,包括提示信息:${error}
l         特定條件下的信息輸出:<c:if>標(biāo)簽處理
這些相對(duì)比較靈活,主要是JSTL和EL的靈活使用。所以需要把JSTL和EL掌握好。
3.3 文件之間的關(guān)系
靜態(tài):文件之間的關(guān)聯(lián)關(guān)系(多次請(qǐng)求之間):按鈕提交、超鏈、地址欄輸入
動(dòng)態(tài):文件之間的關(guān)系(一次請(qǐng)求):<jsp:forward> <jsp:include> response.sendRedirect RequestDispatcher <%@ include file=”” %>。
3.4 信息的存儲(chǔ):
l         持久存儲(chǔ):就是使用數(shù)據(jù)庫(kù)存儲(chǔ),主要使用JDBC技術(shù)(O/R映射,JPA)。
l         臨時(shí)存儲(chǔ):內(nèi)存存儲(chǔ),request(MVC模式傳值)、session(登錄用戶的信息、購(gòu)物車信息)、appliction(公開的聊天室)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
jsp購(gòu)物車源碼①
面向Java開發(fā)人員的Ajax技術(shù)
面向 Java 開發(fā)人員的 Ajax: 構(gòu)建動(dòng)態(tài)的 Java 應(yīng)用程序
JAVA面試題
thinkphp 購(gòu)物車實(shí)現(xiàn)方法
jsp中讀取word中的內(nèi)容
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服