Html Parse Servlet : HTML Output « Servlets « Java

Java
1. 2D Graphics GUI
2. 3D
3. Advanced Graphics
4. Ant
5. Apache Common
6. Chart
7. Collections Data Structure
8. Database SQL JDBC
9. Design Pattern
10. Development Class
11. Email
12. Event
13. File Input Output
14. Game
15. Hibernate
16. J2EE
17. J2ME
18. JDK 6
19. JSP
20. JSTL
21. Language Basics
22. Network Protocol
23. PDF RTF
24. Regular Expressions
25. Security
26. Servlets
27. Spring
28. Swing Components
29. Swing JFC
30. SWT JFace Eclipse
31. Threads
32. Tiny Application
33. Velocity
34. Web Services SOA
35. XML
Microsoft Office Word 2007 Tutorial
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Java » Servlets » HTML OutputScreenshots 
Html Parse Servlet


import java.io.IOException;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.MalformedURLException;

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 = "http://finance.yahoo.com/q?d=t&s=";

  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, 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 who has requested the
    // servlet
    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 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>");
    out.println("</table></form>");
    out.println("</body></html>");

  //end doGet

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws java.io.IOException {

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

    symbol = request.getParameter("symbol");

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

    //set the MIME type of the response, "text/html"
    response.setContentType("text/html");

    //use a PrintWriter send text data to the client who has requested the
    // servlet
    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>");

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

    }

    out.println("</body></html>");

  }// doPost

  private float getLatestPrice(String symbolthrows IOException,
      MalformedURLException {

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

    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;

  }//getLatestPrice

  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;
      }

    }//handleStartTag

    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
                .getInstance();

            Double f = (Doublenf.parse(htmlText);

            stockVal = (floatf.doubleValue();

          catch (java.text.ParseException pe) {

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

          }
        }
        lastTradeFlag = false;
        boldFlag = false;

      }//if

    //handleText
  }//MyParserCallback
}//HttpServlet




           
       
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
www.___j_a_v___a__2s___.___c__o_m__ | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.