⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 68.html

📁 写给JSP初级程序员的书
💻 HTML
📖 第 1 页 / 共 2 页
字号:
            anOrder.getAlbum() %&gt;&lt;/b&gt;&lt;/td&gt; <BR><BR>   
            &lt;td&gt;&lt;b&gt;&lt;%= anOrder.getArtist() 
            %&gt;&lt;/b&gt;&lt;/td&gt; <BR><BR>   &lt;td&gt;&lt;b&gt;&lt;%= 
            anOrder.getCountry() %&gt;&lt;/b&gt;&lt;/td&gt; <BR><BR>   
            &lt;td&gt;&lt;b&gt;&lt;%= anOrder.getPrice() 
            %&gt;&lt;/b&gt;&lt;/td&gt; <BR><BR>   &lt;td&gt;&lt;b&gt;&lt;%= 
            anOrder.getQuantity() %&gt;&lt;/b&gt;&lt;/td&gt; <BR><BR>   
            &lt;td&gt; <BR><BR>   &lt;form name="deleteForm" 
            <BR><BR>    action="/examples/servlet/ShoppingServlet" 
            <BR><BR>    method="POST"&gt; <BR><BR>   &lt;input type="submit" 
            value="Delete"&gt; <BR><BR>   &lt;input type="hidden" name= 
            "delindex" value='&lt;%= index %&gt;'&gt; <BR><BR>   &lt;input 
            type="hidden" name="action" value="DELETE"&gt; <BR><BR>   
            &lt;/form&gt; <BR><BR>     &lt;/td&gt; <BR><BR>    &lt;/tr&gt; 
            <BR><BR>    &lt;% } %&gt; <BR><BR>   &lt;/table&gt; <BR><BR>   
            &lt;p&gt; <BR><BR>   &lt;form name="checkoutForm" 
            <BR><BR>    action="/examples/servlet/ShoppingServlet" 
            <BR><BR>    method="POST"&gt; <BR><BR>    &lt;input type="hidden" 
            name="action" value="CHECKOUT"&gt; <BR><BR>    &lt;input 
            type="submit" name="Checkout" value="Checkout"&gt; <BR><BR>   
            &lt;/form&gt; <BR><BR>   &lt;/center&gt; <BR><BR>  &lt;% } %&gt; 
            <BR><BR>  这里,Cart.jsp操纵着基于会话的购物车的表达,在MVC体系中,购物车就充当Model的角色。 
            <BR><BR>  观察Cart.jsp开头处的脚本片段: <BR><BR>  &lt;% <BR><BR>   Vector 
            buylist = (Vector) session.getValue("shopping.shoppingcart"); 
            <BR><BR>   if (buylist != null &amp;&amp; (buylist.size() &gt; 0)) { 
            <BR><BR>  %&gt; 
            <BR><BR>  这段脚本主要是从会话中取出购物车。如果购物车是空的或尚未创建,则它什么都不显示;因此,当用户第一次访问这个应用程序时,呈现给他的视图如图3所示: 
            <BR><BR><IMG 
            src="68-3.gif" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/images/68-3.gif"> 
            <BR>  图3:音乐无国界,主视图 <BR><BR>  图中按钮文字:放入购物车 
            <BR><BR>  如果购物车不为空,则选中的物品被依次从购物车中取出,如下面的脚本片段所示: <BR><BR>  &lt;% 
            <BR><BR>   for (int index=0; index &lt; buylist.size(); index++) { 
            <BR><BR>    CD anOrder = (CD) buylist.elementAt(index); 
            <BR><BR>  %&gt; 
            <BR><BR>  描述物品的变量一旦被创建,就会被用JSP表达式直接嵌入静态HTML模板中去。图4显示了当用户向购物车中放入一些物品后的视图。 
            <BR><BR><IMG 
            src="68-4.gif" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/images/68-4.gif"> 
            <BR>  图4:音乐无国界,购物车视图 <BR><BR>  图中文字:Music Without 
            Borders:音乐无国界;Quantity:数量;ALBUM:唱片;ARTIST:演唱者;COUNTRY:国家;PRICE:价格;Delete:删除;Checkout:结帐。 
            <BR><BR>  这里需要注意的重要一点是,在Eshop.jsp和Cart.jsp中实现的对所有动作的处理都由一个servlet――ShoppingServlet.java控制,如代码清单3所示: 
            <BR><BR>  代码清单3:ShoppingServlet.java <BR><BR>  import java.util.*; 
            <BR><BR>  import java.io.*; <BR><BR>  import javax.servlet.*; 
            <BR><BR>  import javax.servlet.http.*; <BR><BR>  import shopping.CD; 
            <BR><BR>  public class ShoppingServlet extends HttpServlet { 
            <BR><BR>   public void init(ServletConfig conf) throws 
            ServletException { <BR><BR>    super.init(conf); <BR><BR>   } 
            <BR><BR>   public void doPost (HttpServletRequest req, 
            HttpServletResponse res) <BR><BR>     throws ServletException, 
            IOException { <BR><BR>    HttpSession session = 
            req.getSession(false); <BR><BR>    if (session == null) { 
            <BR><BR>     res.sendRedirect("http://localhost:8080/error.html"); 
            <BR><BR>    } <BR><BR>    Vector buylist= <BR><BR>     
            (Vector)session.getValue("shopping.shoppingcart"); 
            <BR><BR>    String action = req.getParameter("action"); 
            <BR><BR>    if (!action.equals("CHECKOUT")) { <BR><BR>     if 
            (action.equals("DELETE")) { <BR><BR>      String del = 
            req.getParameter("delindex"); <BR><BR>      int d = (new 
            Integer(del)).intValue(); <BR><BR>      buylist.removeElementAt(d); 
            <BR><BR>     } else if (action.equals("ADD")) { 
            <BR><BR>      //以前是否购买了同样的cd? <BR><BR>      boolean match=false; 
            <BR><BR>      CD aCD = getCD(req); <BR><BR>      if (buylist==null) 
            { <BR><BR>       //将第一张CD放入购物车 <BR><BR>       buylist = new 
            Vector(); //第一份定单 <BR><BR>       buylist.addElement(aCD); 
            <BR><BR>      } else { // 不是第一次购买 <BR><BR>       for (int i=0; i&lt; 
            buylist.size(); i++) { <BR><BR>        CD cd = (CD) 
            buylist.elementAt(i); <BR><BR>        if 
            (cd.getAlbum().equals(aCD.getAlbum())) { <BR><BR>         
            cd.setQuantity(cd.getQuantity()+aCD.getQuantity()); <BR><BR>         
            buylist.setElementAt(cd,i); <BR><BR>         match = true; 
            <BR><BR>        } //if name matches结束 <BR><BR>       } // for循环结束 
            <BR><BR>       if (!match) <BR><BR>        buylist.addElement(aCD); 
            <BR><BR>      } <BR><BR>     } <BR><BR>     
            session.putValue("shopping.shoppingcart", buylist); <BR><BR>     
            String url="/jsp/shopping/EShop.jsp"; <BR><BR>     ServletContext sc 
            = getServletContext(); <BR><BR>     RequestDispatcher rd = 
            sc.getRequestDispatcher(url); <BR><BR>     rd.forward(req, res); 
            <BR><BR>    } else if (action.equals("CHECKOUT")) { <BR><BR>     
            float total =0; <BR><BR>     for (int i=0; i&lt; buylist.size();i++) 
            { <BR><BR>      CD anOrder = (CD) buylist.elementAt(i); 
            <BR><BR>      float price= anOrder.getPrice(); <BR><BR>      int qty 
            = anOrder.getQuantity(); <BR><BR>      total += (price * qty); 
            <BR><BR>     } <BR><BR>     total += 0.005; <BR><BR>     String 
            amount = new Float(total).toString(); <BR><BR>     int n = 
            amount.indexOf('.'); <BR><BR>     amount = amount.substring(0,n+3); 
            <BR><BR>     req.setAttribute("amount",amount); <BR><BR>     String 
            url="/jsp/shopping/Checkout.jsp"; <BR><BR>     ServletContext sc = 
            getServletContext(); <BR><BR>     RequestDispatcher rd = 
            sc.getRequestDispatcher(url); <BR><BR>     rd.forward(req,res); 
            <BR><BR>    } <BR><BR>   } <BR><BR>   private CD 
            getCD(HttpServletRequest req) { 
            <BR><BR>    //想象一下如果这些都在一个脚本片段中会有多么难看 <BR><BR>    String myCd = 
            req.getParameter("CD"); <BR><BR>    String qty = 
            req.getParameter("qty"); <BR><BR>    StringTokenizer t = new 
            StringTokenizer(myCd,"|"); <BR><BR>    String album= t.nextToken(); 
            <BR><BR>    String artist = t.nextToken(); <BR><BR>    String 
            country = t.nextToken(); <BR><BR>    String price = t.nextToken(); 
            <BR><BR>    price = price.replace('$',' ').trim(); <BR><BR>    CD cd 
            = new CD(); <BR><BR>    cd.setAlbum(album); 
            <BR><BR>    cd.setArtist(artist); 
            <BR><BR>    cd.setCountry(country); <BR><BR>    cd.setPrice((new 
            Float(price)).floatValue()); <BR><BR>    cd.setQuantity((new 
            Integer(qty)).intValue()); <BR><BR>    return cd; <BR><BR>   } 
            <BR><BR>  } <BR><BR>
        </td>
      </tr>
    </td>
  </tr>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -