[ Team LiB ] Previous Section Next Section

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.

    [ Team LiB ] Previous Section Next Section