Html Parse Servlet : HTML Output « Servlets « Java

Html Parse Servlet



import javax.servlet.*;
import javax.servlet.http.*;

import javax.swing.text.html.HTMLEditorKit.ParserCallback;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.parser.ParserDelegator;

public class HtmlParseServlet extends HttpServlet {

  private static final String BASE_URL = "";

  private ParserDelegator htmlParser = null;

  private MyParserCallback callback = null;

  private String htmlText = "";

  private boolean lastTradeFlag = false;

  private boolean boldFlag = false;

  private float stockVal = 0f;

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, {

    //set the MIME type of the response, "text/html"

    //use a PrintWriter send text data to the client who has requested the
    // servlet out = response.getWriter();

    //Begin assembling the HTML content

    out.println("<title>Stock Price Fetcher</title></head><body>");
    out.println("<h2>Please submit a new 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() + "/stockservlet\" >");

    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>");

  } //end doGet

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws {

    String symbol;//this will hold the stock symbol
    float price;

    symbol = request.getParameter("symbol");

    boolean isValid = (symbol == null || symbol.length() < 1) ? false
        : true;

    //set the MIME type of the response, "text/html"

    //use a PrintWriter send text data to the client who has requested the
    // servlet out = response.getWriter();

    //Begin assembling the HTML content
    out.println("<title>Latest stock value</title></head><body>");

    if (!isValid) {
          .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>");

      price = getLatestPrice(symbol);
      //price < 1 ? "The symbol is probably invalid." :
      out.println((price == 0 ? "The symbol is probably invalid." : ""
          + price));



  }// doPost

  private float getLatestPrice(String symbol) throws IOException,
      MalformedURLException {

    BufferedReader webPageStream = null;
    URL stockSite = new URL(BASE_URL + symbol);
    System.out.println(BASE_URL + symbol);
    webPageStream = new BufferedReader(new InputStreamReader(stockSite

    htmlParser = new ParserDelegator();

    callback = new MyParserCallback();

    synchronized (htmlParser) {//the code is designed to make calling
                   // parse() thread-safe

      htmlParser.parse(webPageStream, callback, true);

    return stockVal;


  class MyParserCallback extends ParserCallback {

    public MyParserCallback() {

      if (stockVal != 0)
        stockVal = 0f;


    public void handleStartTag(javax.swing.text.html.HTML.Tag t,
        MutableAttributeSet a, int pos) {

      if (lastTradeFlag && (t == javax.swing.text.html.HTML.Tag.B)) {

        boldFlag = true;


    public void handleText(char[] data, int pos) {

      htmlText = new String(data);

      if (htmlText.indexOf("No such ticker symbol.") != -1) {

        throw new IllegalStateException(
            "Invalid ticker symbol in handleText() method.");

      } else if (htmlText.equals("Last Trade:")) {

        lastTradeFlag = true;

      } else if (boldFlag) {

        try {

          stockVal = new Float(htmlText).floatValue();

        } catch (NumberFormatException ne) {

          try {

            // tease out any commas in the number using NumberFormat

            java.text.NumberFormat nf = java.text.NumberFormat

            Double f = (Double) nf.parse(htmlText);

            stockVal = (float) f.doubleValue();

          } catch (java.text.ParseException pe) {

            throw new IllegalStateException("The extracted text "
                + htmlText + " cannot be parsed as a number!");

        lastTradeFlag = false;
        boldFlag = false;


    } //handleText


Related examples in the same category

1.Servlet Output HTML Demo
2.Servlet Display Static HTML
3.Prints a conversion table of miles per gallon to kilometers per liter
4.Servlet: Print Table
5.Html utilities
6.Escape and unescape string
7.Escapes newlines, tabs, backslashes, and quotes in the specified string
8.Web Calendar
9.HTML Helper
10.Escape HTML
11.Convert HTML to text
12.Text To HTML
13.Unescape HTML
14.Java object representations of the HTML table structure
15.Entity Decoder
16.Format a color to HTML RGB color format (e.g. #FF0000 for
17.Definitions of HTML character entities and conversions between unicode characters and HTML character entities
18.Encode special characters and do formatting for HTML output
19.HTML color names
20.Utility methods for dealing with HTML
21.Filter the specified message string for characters that are sensitive in HTML
22.A collection of all character entites defined in the HTML4 standard.
23.Decode an HTML color string like '#F567BA;' into a Color
24.Normalize Post Data
25.Get HTML Color String from Java Color object
26.HTML Decoder
27.HTML Parser
28.HTML color and Java Color
29.HTML form Utilites
30.Html Dimensions
31.break Lines with HTML
32.insert HTML block dynamically
33.Convert an integer to an HTML RGB value
34.Convert to HTML string