[ Team LiB ] |
![]() ![]() |
Recipe 26.4 Using the Web Page Parsing JavaBean in a ServletProblemYou want to use the JavaBean for parsing HTML in a servlet. SolutionCreate an instance of the bean in the appropriate service method (e.g., doGet( ) or doPost( )) and call its methods. DiscussionThe 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.
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 quotepackage 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 AlsoRecipe 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 ] |
![]() ![]() |