狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

案例講解JSP Model2體系結構(中)

案例講解JSP Model2體系結構(中)

更新時間:2019-05-20 文章作者:未知 信息來源:網絡 閱讀次數:

理解“音樂無國界”
  “音樂無國界”的主界面是JSP頁 Eshop.jsp(見代碼清單1)。你會注意到,這個頁面幾乎只作為專門的用戶界面,不承擔任何處理任務――是一個最理想的JSP方案。另外,請注意另一個JSP頁Cart.jsp(見代碼清單2)被Eshop.jsp通過指令<jsp:include page="Cart.jsp" flush="true" />包含于其中。

  代碼清單 1:EShop.jsp

  <%@ page session="true" %>

  <html>

  <head>

   <title>Music Without Borders</title>

  </head>

  <body bgcolor="#33CCFF">

   <font face="Times New Roman,Times" size="+3">

   Music Without Borders

   </font>

   <hr><p>

   <center>

   <form name="shoppingForm"

   action="/examples/servlet/ShoppingServlet"

   method="POST">

   <b>CD:</b>

   <select name=CD>

   <option>Yuan | The Guo Brothers | China | $14.95</option>

   <option>Drums of Passion | Babatunde Olatunji | Nigeria | $16.95</option>

   <option>Kaira | Tounami Diabate| Mali | $16.95</option>

   <option>The Lion is Loose | Eliades Ochoa | Cuba | $13.95</option>

   <option>Dance the Devil Away | Outback | Australia | $14.95</option>

   <option>Record of Changes | Samulnori | Korea | $12.95</option>

   <option>Djelika | Tounami Diabate | Mali | $14.95</option>

   <option>Rapture | Nusrat Fateh Ali Khan | Pakistan | $12.95</option>

   <option>Cesaria Evora | Cesaria Evora | Cape Verde | $16.95</option>

   <option>Ibuki | Kodo | Japan | $13.95</option>

   </select>

   <b>Quantity: </b><input type="text" name="qty" SIZE="3" value=1>

   <input type="hidden" name="action" value="ADD">

   <input type="submit" name="Submit" value="Add to Cart">

   </form>

   </center>

   <p>

   <jsp:include page="Cart.jsp" flush="true" />

  </body>

  </html>

  代碼清單 2:Cart.jsp

  <%@ page session="true" import="java.util.*, shopping.CD" %>

  <%

   Vector buylist = (Vector) session.getValue("shopping.shoppingcart");

   if (buylist != null && (buylist.size() > 0)) {

  %>

  <center>

  <table border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">

   <tr>

   <td><b>ALBUM</b></td>

   <td><b>ARTIST</b></td>

   <td><b>COUNTRY</b></td>

   <td><b>PRICE</b></td>

   <td><b>QUANTITY</b></td>

   <td></td>

   </tr>

   <%

   for (int index=0; index < buylist.size();index++) {

   CD anOrder = (CD) buylist.elementAt(index);

   %>

   <tr>

   <td><b><%= anOrder.getAlbum() %></b></td>

   <td><b><%= anOrder.getArtist() %></b></td>

   <td><b><%= anOrder.getCountry() %></b></td>

   <td><b><%= anOrder.getPrice() %></b></td>

   <td><b><%= anOrder.getQuantity() %></b></td>

   <td>

   <form name="deleteForm"

    action="/examples/servlet/ShoppingServlet"

    method="POST">

   <input type="submit" value="Delete">

   <input type="hidden" name= "delindex" value='<%= index %>'>

   <input type="hidden" name="action" value="DELETE">

   </form>

     </td>

    </tr>

    <% } %>

   </table>

   <p>

   <form name="checkoutForm"

    action="/examples/servlet/ShoppingServlet"

    method="POST">

    <input type="hidden" name="action" value="CHECKOUT">

    <input type="submit" name="Checkout" value="Checkout">

   </form>

   </center>

  <% } %>

  這里,Cart.jsp操縱著基于會話的購物車的表達,在MVC體系中,購物車就充當Model的角色。

  觀察Cart.jsp開頭處的腳本片段:

  <%

   Vector buylist = (Vector) session.getValue("shopping.shoppingcart");

   if (buylist != null && (buylist.size() > 0)) {

  %>

  這段腳本主要是從會話中取出購物車。如果購物車是空的或尚未創建,則它什么都不顯示;因此,當用戶第一次訪問這個應用程序時,呈現給他的視圖如圖3所示:


  圖3:音樂無國界,主視圖

  圖中按鈕文字:放入購物車

  如果購物車不為空,則選中的物品被依次從購物車中取出,如下面的腳本片段所示:

  <%

   for (int index=0; index < buylist.size(); index++) {

    CD anOrder = (CD) buylist.elementAt(index);

  %>

  描述物品的變量一旦被創建,就會被用JSP表達式直接嵌入靜態HTML模板中去。圖4顯示了當用戶向購物車中放入一些物品后的視圖。


  圖4:音樂無國界,購物車視圖

  圖中文字:Music Without Borders:音樂無國界;Quantity:數量;ALBUM:唱片;ARTIST:演唱者;COUNTRY:國家;PRICE:價格;Delete:刪除;Checkout:結帳。

  這里需要注意的重要一點是,在Eshop.jsp和Cart.jsp中實現的對所有動作的處理都由一個servlet――ShoppingServlet.java控制,如代碼清單3所示:

  代碼清單3:ShoppingServlet.java

  import java.util.*;

  import java.io.*;

  import javax.servlet.*;

  import javax.servlet.http.*;

  import shopping.CD;

  public class ShoppingServlet extends HttpServlet {

   public void init(ServletConfig conf) throws ServletException {

    super.init(conf);

   }

   public void doPost (HttpServletRequest req, HttpServletResponse res)

     throws ServletException, IOException {

    HttpSession session = req.getSession(false);

    if (session == null) {

     res.sendRedirect("http://localhost:8080/error.html");

    }

    Vector buylist=

     (Vector)session.getValue("shopping.shoppingcart");

    String action = req.getParameter("action");

    if (!action.equals("CHECKOUT")) {

     if (action.equals("DELETE")) {

      String del = req.getParameter("delindex");

      int d = (new Integer(del)).intValue();

      buylist.removeElementAt(d);

     } else if (action.equals("ADD")) {

      //以前是否購買了同樣的cd?

      boolean match=false;

      CD aCD = getCD(req);

      if (buylist==null) {

       //將第一張CD放入購物車

       buylist = new Vector(); //第一份定單

       buylist.addElement(aCD);

      } else { // 不是第一次購買

       for (int i=0; i< buylist.size(); i++) {

        CD cd = (CD) buylist.elementAt(i);

        if (cd.getAlbum().equals(aCD.getAlbum())) {

         cd.setQuantity(cd.getQuantity()+aCD.getQuantity());

         buylist.setElementAt(cd,i);

         match = true;

        } //if name matches結束

       } // for循環結束

       if (!match)

        buylist.addElement(aCD);

      }

     }

     session.putValue("shopping.shoppingcart", buylist);

     String url="/jsp/shopping/EShop.jsp";

     ServletContext sc = getServletContext();

     RequestDispatcher rd = sc.getRequestDispatcher(url);

     rd.forward(req, res);

    } else if (action.equals("CHECKOUT")) {

     float total =0;

     for (int i=0; i< buylist.size();i++) {

      CD anOrder = (CD) buylist.elementAt(i);

      float price= anOrder.getPrice();

      int qty = anOrder.getQuantity();

      total += (price * qty);

     }

     total += 0.005;

     String amount = new Float(total).toString();

     int n = amount.indexOf('.');

     amount = amount.substring(0,n+3);

     req.setAttribute("amount",amount);

     String url="/jsp/shopping/Checkout.jsp";

     ServletContext sc = getServletContext();

     RequestDispatcher rd = sc.getRequestDispatcher(url);

     rd.forward(req,res);

    }

   }

   private CD getCD(HttpServletRequest req) {

    //想象一下如果這些都在一個腳本片段中會有多么難看

    String myCd = req.getParameter("CD");

    String qty = req.getParameter("qty");

    StringTokenizer t = new StringTokenizer(myCd,"|");

    String album= t.nextToken();

    String artist = t.nextToken();

    String country = t.nextToken();

    String price = t.nextToken();

    price = price.replace('$',' ').trim();

    CD cd = new CD();

    cd.setAlbum(album);

    cd.setArtist(artist);

    cd.setCountry(country);

    cd.setPrice((new Float(price)).floatValue());

    cd.setQuantity((new Integer(qty)).intValue());

    return cd;

   }

  } 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
日韩精品免费视频人成| 亚洲最新视频在线播放| 欧美国产丝袜视频| 午夜久久久影院| 免费成人在线网站| av高清久久久| 亚洲黄色免费| 欧美体内she精视频| 精品乱人伦小说| 国产精品欧美综合在线| 久久99精品国产麻豆不卡| 午夜视频精品| 国产日产高清欧美一区二区三区| 欧美性猛交xxxx乱大交退制版| 欧美国产一区视频在线观看| 狠狠色丁香婷综合久久| 欧美久久久久久| 日本韩国精品在线| 久久精品人人做人人综合| 成人免费视频网站在线观看| 日韩午夜激情av| 欧美一区二区在线不卡| 麻豆av一区二区三区| 国内一区二区三区| 老司机午夜精品视频| 国产欧美一区二区精品婷婷| 久久9热精品视频| 亚洲一区成人| 亚洲制服丝袜一区| 99人久久精品视频最新地址| 国产精品网曝门| 女生裸体视频一区二区三区| 久久看人人爽人人| 99精品视频中文字幕| 精品国产乱码久久| 玖玖玖国产精品| 亚洲欧美在线视频| 欧美在线一区二区| 99免费精品视频| 免费在线视频一区| 亚洲一区二区三区不卡国产欧美| 日韩欧美三级在线| 欧美妇女性影城| 国产精品尤物| 一区二区国产在线观看| 91在线视频官网| 韩国v欧美v日本v亚洲v| 国产一区二区三区四区五区入口 | 91精品国产综合久久小美女| 国产一级精品在线| 国产三级欧美三级| 国产精品亚洲欧美| 国产精品夜夜爽| 欧美不卡在线视频| 国产精品啊v在线| 亚洲成a人片综合在线| 在线播放中文字幕一区| 亚洲日本无吗高清不卡| 九九**精品视频免费播放| 国产日本亚洲高清| 欧美日韩国产免费一区二区| 欧美国产综合视频| 一级女性全黄久久生活片免费| 国产亚洲精品v| 精品无人码麻豆乱码1区2区 | 先锋亚洲精品| 久久久国产精品午夜一区ai换脸| 99视频超级精品| 亚洲日本青草视频在线怡红院 | 成人白浆超碰人人人人| 国产日韩欧美亚洲| 性欧美videos另类喷潮| 亚洲高清三级视频| 欧美日韩亚洲综合| 欧美日产一区二区三区在线观看| 日韩在线播放一区二区| 精品成人一区二区三区四区| 亚洲欧美日本日韩| 欧美喷水视频| 99久精品国产| 99亚偷拍自图区亚洲| 国产专区欧美精品| 免费在线观看成人| 日韩精品一级二级| 亚洲黄色片在线观看| 国产精品久久午夜| 中文字幕va一区二区三区| 日本一区二区不卡视频| 亚洲自拍偷拍网站| 国产黄色91视频| 99re热精品| 久久天堂av综合合色蜜桃网 | 国产精品国产三级国产aⅴ中文 | 中文精品视频| 精品国产伦一区二区三区免费| 亚洲一区二区在线免费观看视频 | 亚洲综合色在线| 国产aⅴ精品一区二区三区色成熟| 欧美日韩在线不卡一区| 中文久久精品| 亚洲欧美大片| 精品久久人人做人人爱| 欧美亚洲一区二区在线观看| 亚洲欧美综合网| 丝袜美腿亚洲综合| 久久97超碰国产精品超碰| 亚洲午夜激情| 美女日韩在线中文字幕| 欧美成人三级电影在线| 日韩一区欧美二区| 国产综合激情| 欧美精选一区二区| 亚洲欧美另类小说视频| 久久精品国产久精国产| 亚洲国产一区二区三区a毛片 | 91在线精品秘密一区二区| 亚洲1区2区3区视频| 国产精品分类| 亚洲欧美另类小说| 韩国女主播成人在线| 亚洲一区二区三区小说| 一个色综合av| 亚洲美女在线一区| 亚洲第四色夜色| 成人av电影观看| 在线精品国精品国产尤物884a| 欧美一级免费观看| 一区二区久久久| 99re免费视频精品全部| 欧美性xxxxx极品少妇| 综合欧美一区二区三区| 大尺度一区二区| 欧美亚洲国产bt| 亚洲国产欧美另类丝袜| 激情欧美日韩| 国产精品午夜电影| 99国产一区二区三精品乱码| 欧美日本在线看| 欧美日韩1区2区3区| 亚洲一区视频| 六月丁香婷婷色狠狠久久| 欧美精品久久99久久在免费线| 成人黄动漫网站免费app| 亚洲视频在线一区| 欧美日韩一级片在线观看| 色综合久久中文字幕综合网| 亚洲一区二区在线观看视频| 欧美精品在线一区二区| 国产日韩精品视频一区二区三区| 精品一区二区三区av| 亚洲图片激情小说| 欧美丰满少妇xxxbbb| 在线精品福利| 成人黄色小视频在线观看| 亚洲v中文字幕| 国产精品嫩草99a| 亚洲大片av| 美女免费视频一区| 精品国产一区二区三区久久影院| 国产91富婆露脸刺激对白| 日韩视频不卡中文| 99这里只有精品| 亚洲色图清纯唯美| 男女精品网站| 97久久精品人人做人人爽50路| 欧美三日本三级三级在线播放| 欧美一区免费视频| 亚洲人亚洲人成电影网站色| 久久国产精品免费一区| 国产精品自产自拍| 久久久国际精品| 欧美在线一二三| 91在线国产福利| 亚洲成在人线在线播放| 韩日午夜在线资源一区二区| 日韩不卡一区二区三区 | 国产日韩欧美一区| 亚洲美女视频在线| 欧美午夜在线一二页| 久久精彩视频| 久久天堂精品| 久久电影网电视剧免费观看| 欧美视频在线不卡| 久久电影网站中文字幕 | 国产精品一色哟哟哟| 亚洲一区在线观看免费观看电影高清 | 国产精品美女诱惑| 欧美日韩91| 99re热视频精品| 国产寡妇亲子伦一区二区| 亚洲五月六月丁香激情| 国产精品伦一区二区三级视频| 8x福利精品第一导航| 欧美系列在线观看| 色婷婷久久久亚洲一区二区三区| 国产亚洲毛片在线| 日韩视频在线一区二区三区| 国产精品亚洲综合久久| 欧美日韩第一区日日骚| 亚洲精品一区二区三区香蕉|