乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Understanding JavaServer Pages Model 2 architecture part2...

       LUPA 2007-09-30

      Understanding JavaServer Pages Model 2 architecture

      Exploring the MVC design pattern

      Page 2 of 2

      Listing 4:
      CD.java
      package shopping;
                  public class CD {
                  String album;
                  String artist;
                  String country;
                  float price;
                  int quantity;
                  public CD() {
                  album="";
                  artist="";
                  country="";
                  price=0;
                  quantity=0;
                  }
                  public void setAlbum(String title) {
                  album=title;
                  }
                  public String getAlbum() {
                  return album;
                  }
                  public void setArtist(String group) {
                  artist=group;
                  }
                  public String getArtist() {
                  return artist;
                  }
                  public void setCountry(String cty) {
                  country=cty;
                  }
                  public String getCountry() {
                  return country;
                  }
                  public void setPrice(float p) {
                  price=p;
                  }
                  public float getPrice() {
                  return price;
                  }
                  public void setQuantity(int q) {
                  quantity=q;
                  }
                  public int getQuantity() {
                  return quantity;
                  }
                  }
                  


      Notice that we have also included additional intelligence within the servlet, so that it understands that, if a previously added CD is reselected, it should simply increase the count for that CD bean within the shopping cart. The controller servlet also processes actions triggered from within Cart.jsp, such as the user deleting items from the shopping cart, or proceeding to the checkout counter. Observe that the controller always has complete control over which resources should be invoked in response to specific actions. For example, changes made to the state of the shopping cart, such as additions or deletions, cause the controller servlet to forward the request after processing to the Eshop.jsp page. This in turn causes the page to redisplay the main view, along with the updated contents of the shopping cart. If the user decides to check out, the request is forwarded after processing to the Checkout.jsp page (shown in Listing 5) by means of the following request dispatcher, as shown below:

      String url="/jsp/shopping/Checkout.jsp";
      ServletContext sc = getServletContext();
      RequestDispatcher rd = sc.getRequestDispatcher(url);
      rd.forward(req,res);
      


      Listing 5:
      Checkout.jsp
      <%@ page session="true" import="java.util.*, shopping.CD" %>
                  <html>
                  <head>
                  <title>Music Without Borders Checkout</title>
                  </head>
                  <body bgcolor="#33CCFF">
                  <font face="Times New Roman,Times" size=+3>
                  Music Without Borders Checkout
                  </font>
                  <hr><p>
                  <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>
                  <%
                  Vector buylist = (Vector) session.getValue("shopping.shoppingcart");
                  String amount = (String) request.getAttribute("amount");
                  for (int i=0; i < buylist.size();i++) {
                  CD anOrder = (CD) buylist.elementAt(i);
                  %>
                  <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>
                  </tr>
                  <%
                  }
                  session.invalidate();
                  %>
                  <tr>
                  <td>     </td>
                  <td>     </td>
                  <td><b>TOTAL</b></td>
                  <td><b>$<%= amount %></b></td>
                  <td>     </td>
                  </tr>
                  </table>
                  <p>
                  <a href="/examples/jsp/shopping/EShop.jsp">Shop some more!</a>
                  </center>
                  </body>
                  </html>
                  


      Checkout.jsp simply extracts the shopping cart from the session and the total amount for the request, and then displays the selected items and their total cost. Figure 5 shows the client view upon checkout. Once the user goes to the checkout counter, it is equally important to get rid of the session object. That is taken care of by having a session.invalidate() invocation at the end of the page. This process is necessary for two reasons. First, if the session is not invalidated, the user‘s shopping cart is not reinitialized; if the user then attempts to commence another round of shopping upon checkout, her shopping cart will continue to hold items that she has already purchased. The second reason is that if the user simply left the site upon checkout, the session object will not be garbage collected and will continue to take up valuable system resources until its lease period expires. Since the default session-lease period is about 30 minutes, this can quickly lead to the system running out of memory in a high-volume system. Of course, we all know what happens to an application that runs out of system resources!

      Figure 5: Music Without Borders, checkout view

      Notice that all the resources for this application are session aware, since the model here is stored within the session. Consequently, you must ensure that the user does not somehow access the controller directly, even by mistake. You can take care of this by implementing the automatic client redirection to the error page (shown in Listing 6) when the controller detects the absence of a valid session.

      Author Bio

      Govind Seshadri is an Enterprise Java Guru for jGuru.com, and the author of Enterprise Java Computing -- Applications and Architecture from Cambridge University Press (1999). Learn more about Govind at jGuru.com. JavaWorld and jGuru have formed a partnership to help the community better understand server-side Java technology. Together, JavaWorld and jGuru are jointly producing articles, free educational Web events, and working together on the JavaWorld bookstore and Web-based training.
      Listing 6:
      error.html
      <html>
                  <body>
                  <h1>
                  Sorry, there was an unrecoverable error! <br>
                  Please try <a href="/examples/jsp/shopping/EShop.jsp">again</a>.
                  </h1>
                  </body>
                  </html>
                  


      Deploying Music Without Borders

      I will assume that you are using the latest version of JavaServer Web Development Kit (JSWDK) from Sun for running the example. If not, see the Resources section to find out where to get it. Assuming that the server is installed in \jswdk-1.0.1, its default location in Microsoft Windows, deploy the Music Without Borders application files as follows:

      • Create shopping directory under \jswdk-1.0.1\examples\jsp
      • Copy EShop.jsp to \jswdk-1.0.1\examples\jsp\shopping
      • Copy Cart.jsp to \jswdk-1.0.1\examples\jsp\shopping
      • Copy Checkout.jsp to \jswdk-1.0.1\examples\jsp\shopping
      • Compile the .java files by typing javac *.java
      • Copy ShoppingServlet.class to \jswdk-1.0.1\webpages\Web-Inf\servlets
      • Create shopping directory under \jswdk-1.0.1\examples\Web-Inf\jsp\beans
      • Copy CD.class to \jswdk-1.0.1\examples\Web-Inf\jsp\beans\shopping
      • Copy error.html to \jswdk-1.0.1\webpages
      • Once your server has been started, you should be able to access the application using http://localhost:8080/examples/jsp/shopping/EShop.jsp as the URL


      Leveraging JSP and servlets

      In this example, we have examined in detail the level of control and flexibility provided by the Model 2 architecture. In particular, we‘ve seen how the best features of servlets and JSP pages can be exploited to maximize the separation of presentation from content. Properly applied, the Model 2 architecture should result in the concentration of all of the processing logic in the hands of the controller servlet, with the JSP pages responsible only for the view or presentation. However, the downside of using the Model 2 approach is its complexity. Consequently, it may be desirable to use the Model 1 approach for simpler applications.

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多