狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
亚洲综合成人在线视频| 久久99久久99精品免视看婷婷 | 色婷婷av一区| 香蕉免费一区二区三区在线观看| 国内视频一区| 亚洲精品专区| aa成人免费视频| 亚洲一区二区高清视频| 美女主播一区| 欧美午夜片在线看| 欧美高清精品3d| 欧美成人精品二区三区99精品| 日韩欧美国产一区二区三区| 欧美成人国产一区二区| 日本一区二区免费在线观看视频 | 日韩高清欧美激情| 日本亚洲三级在线| 韩国成人精品a∨在线观看| 韩国v欧美v日本v亚洲v| av中文字幕不卡| 欧美喷水视频| 国产亚洲欧美另类一区二区三区| 国产精品美女| 欧美亚洲禁片免费| 日韩午夜三级在线| 日本一区二区三区在线不卡| 亚洲色图欧美偷拍| 日韩av一区二区三区四区| 国内精品写真在线观看| 欧美一区亚洲二区| 亚洲一区二区免费看| 欧美三级中文字| 久久久午夜精品| 亚洲永久免费视频| 极品少妇一区二区| 欧美福利网址| 久久精品30| 久久亚洲二区三区| 成人高清免费在线播放| 韩国av一区| 日本乱人伦一区| 精品国产网站在线观看| 亚洲视频一二三| 麻豆精品一区二区三区| 午夜精品视频| 在线看日韩精品电影| 久久久一区二区| 五月天一区二区| eeuss鲁片一区二区三区| 国产日韩欧美一区二区三区在线观看| 蜜桃av综合| 久久精品夜色噜噜亚洲aⅴ| 亚洲综合成人在线视频| 成人丝袜高跟foot| 99精品国产99久久久久久福利| 在线视频你懂得一区| 国产女人aaa级久久久级| 奇米综合一区二区三区精品视频| 99re这里只有精品6| 一本色道久久综合精品竹菊| 久久精品夜色噜噜亚洲a∨| 美国欧美日韩国产在线播放| 午夜天堂精品久久久久| 欧美午夜一区二区| 一区二区在线看| 91在线云播放| 欧美日韩一区二区三区在线看 | 久久99精品久久久| 激情欧美丁香| 欧美大尺度电影在线| 亚洲国产一区二区三区青草影视| 99国产精品久久久久久久久久| 色综合久久久久综合体| 中文字幕一区二区三区不卡| 成人伦理片在线| 欧美日韩一区国产| 亚洲韩国精品一区| 亚洲小说欧美另类社区| 精品处破学生在线二十三| 毛片一区二区三区| 国产精品社区| 国产精品久久久99| 不卡视频一二三四| 欧美美女bb生活片| 美女在线视频一区| 亚洲综合激情| 亚洲另类中文字| 韩国在线一区| 中文字幕色av一区二区三区| 欧美二区不卡| 国产亚洲综合av| 99视频超级精品| 精品成人在线观看| 丰满放荡岳乱妇91ww| 欧美精品黑人性xxxx| 日本美女一区二区三区视频| 国产美女精品| 亚洲一区二区三区四区中文字幕| 狠狠爱www人成狠狠爱综合网| 国产亚洲精品bt天堂精选| 91捆绑美女网站| 国产亚洲va综合人人澡精品| 色综合天天性综合| 国产无遮挡一区二区三区毛片日本| 国产精品99久久久久久久vr| 欧美一区二区成人| 岛国精品一区二区| 精品日韩一区二区| 91啪九色porn原创视频在线观看| 久久亚洲欧美国产精品乐播| 菠萝蜜视频在线观看一区| 久久综合久久综合亚洲| 欧美精品入口| 亚洲少妇30p| 久久久久九九九| 九九**精品视频免费播放| 欧美四级电影在线观看| 国产美女一区二区三区| 精品国精品自拍自在线| 色综合久久综合网| 综合激情成人伊人| 国产精品呻吟| 久久99九九99精品| 亚洲精品一线二线三线无人区| 欧美伊人影院| 亚洲伊人色欲综合网| 欧美在线免费观看亚洲| 成人免费三级在线| 亚洲欧美一区二区在线观看| 久久aⅴ国产紧身牛仔裤| 国产曰批免费观看久久久| 欧美精品一区视频| 在线视频欧美一区| 狂野欧美性猛交blacked| 精品sm在线观看| 一区二区三区久久网| 久久不见久久见中文字幕免费| 日韩欧美专区在线| 亚洲国产美女| 精品一区二区三区免费视频| 国产色爱av资源综合区| 西西裸体人体做爰大胆久久久| 国产一区亚洲一区| 国产精品久久久久婷婷二区次| 香蕉亚洲视频| 99r精品视频| 天堂一区二区在线免费观看| 日韩精品一区二| 国产精品伊人日日| 99久久亚洲一区二区三区青草| 一区二区三区.www| 欧美电影精品一区二区 | 国产精品免费看片| 狼狼综合久久久久综合网 | 国产精品视区| 99久久综合色| 日韩av一区二区三区四区| 国产欧美一区二区三区网站| 色婷婷国产精品久久包臀| 欧美尤物一区| 国产一区二区精品在线观看| 亚洲精品中文字幕在线观看| 精品免费日韩av| 久久久久综合| 亚洲午夜精品久久久久久浪潮| 国产资源精品在线观看| 亚洲自拍偷拍综合| 久久综合九色综合97婷婷女人| 一本大道久久精品懂色aⅴ| 国产一区欧美| 成人在线一区二区三区| 日韩黄色小视频| 中文字幕一区三区| 日韩免费高清视频| 欧美在线免费观看亚洲| 亚洲久久一区| 91啦中文在线观看| 国产成人综合亚洲91猫咪| 五月天中文字幕一区二区| 亚洲特黄一级片| 国产色综合久久| 日韩免费高清视频| 欧美日韩国产综合一区二区| 久久精品观看| 国产精品日韩高清| 亚洲成人中文| 国内精品久久久久久久影视麻豆| 懂色中文一区二区在线播放| 日本aⅴ免费视频一区二区三区| 一区二区三区中文字幕| 国产精品国产三级国产专播品爱网 | 亚洲黄色影院| 欧美在线影院| 不卡一区二区三区四区| 粉嫩av一区二区三区在线播放| 久久色中文字幕| 国产欧美精品| 国产福利一区在线观看| 性做久久久久久久久| 一区二区在线观看免费|