Recipe 26.4 Using the Web Page Parsing JavaBean in a Servlet


Problem

You want to use the JavaBean for parsing HTML in a servlet.

Solution

Create an instance of the bean in the appropriate service method (e.g., doGet( ) or doPost( ) ) and call its methods .

Discussion

The JavaBean has to be available to the servlet, and therefore stored in WEB-INF/classes , including subdirectories that match the bean's package name . The JavaBean can also be stored in a JAR inside of WEB-INF/lib .

Since the JavaBean in Example 26-5 shares the servlet's package ( com.jspservletcookbook ), the servlet class does not have to import the bean class.

If the JavaBean resides in a different package in the web application, then the servlet has to include an import statement such as the following example:

 import com.parkerriver.beans.BeanParserServlet; 

The doGet( ) method provides an HTML form for entering a stock symbol (such as "intc"). The doPost( ) method then creates an instance of the StockPriceBean , calls the bean's setSymbol( ) method, and finally displays the stock price by calling the bean's getLatestPrice( ) method.

Example 26-5. A servlet uses a specially designed JavaBean to get a live stock quote
 package com.jspservletcookbook;     import java.io.IOException;   import java.io.PrintWriter;      import javax.servlet.*; import javax.servlet.http.*;  public class BeanParserServlet extends HttpServlet {  public void doGet(HttpServletRequest request,      HttpServletResponse response)       throws ServletException, java.io.IOException {            //set the MIME type of the response, "text/html"       response.setContentType("text/html");                    //use a PrintWriter send text data to the client       java.io.PrintWriter out = response.getWriter( );                    //Begin assembling the HTML content       out.println("<html><head>");       out.println("<title>Stock Price Fetcher</title></head><body>");       out.println("<h2>Please submit a valid stock symbol</h2>");          //make sure method="POST" so that the servlet service method      //calls doPost in the response to this form submit       out.println(         "<form method=\" POST \" action =\"" + request.getContextPath( ) +             "/stockbean\" >");       out.println("<table border=\"0\"><tr><td valign=\"top\">");       out.println("Stock symbol: </td>  <td valign=\"top\">");       out.println("<input type=\"text\" name=\"symbol\" size=\"10\">");       out.println("</td></tr><tr><td valign=\"top\">");       out.println("<input type=\"submit\" value=\"Submit Info\"></td></tr>");       out.println("</table></form>");       out.println("</body></html>");  } //doGet             public void doPost(HttpServletRequest request,      HttpServletResponse response)       throws ServletException, java.io.IOException {  String symbol;//this will hold the stock symbol        float price = 0f;  symbol = request.getParameter("symbol");                boolean isValid = (symbol == null  symbol.length( ) < 1) ?       false : true;  //set the MIME type of the response, "text/html"       response.setContentType("text/html");                //use a PrintWriter send text data to the client       java.io.PrintWriter out = response.getWriter( );                    //Begin assembling the HTML content       out.println("<html><head>");       out.println("<title>Latest stock value</title></head><body>");  if (! isValid){               out.println(           "<h2>Sorry, the stock symbol parameter was either empty "+           "or null</h2>");          } else {  out.println("<h2>Here is the latest value of "+ symbol +"</h2>");  StockPriceBean spbean = new StockPriceBean( );           spbean.setSymbol(symbol);           price = spbean.getLatestPrice( );               out.println( (price==0? "The symbol is probably invalid." :            ""+price) );         }//if  out.println("</body></html>");  }// doPost }//HttpServlet  

The servlet's HTML form (generated by the doGet( ) method) and the stock price display (generated by doPost( ) ) has the same web browser display as the one shown in Figures Figure 26-1 and Figure 26-2.

See Also

Recipe 26.3 on creating a JavaBean as a web page parser; Recipe 26.5 on using a web page parsing JavaBean in a JSP.



Java Servlet & JSP Cookbook
Java Servlet & JSP Cookbook
ISBN: 0596005725
EAN: 2147483647
Year: 2004
Pages: 326

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net