Example: Using the HTML form classes

The following example shows you how to use the HTML form classes. You can also view a sample output from running this code. The HTML classes used in the "showHTML" method are bold.

Note: Read the Code example disclaimer for important legal information.
///////////////////////////////////////////////////////////////////////////////
//
// This source is an example of using the IBM Toolbox for Java HTML
// package classes, which allow you to easily build HTML Forms.
//
///////////////////////////////////////////////////////////////////////////////

package customer;

import java.io.*;
import java.awt.Color;

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

import com.ibm.as400.access.*;
import com.ibm.as400.util.html.*;


public class HTMLExample extends HttpServlet
{
  // Determines if user already exists in the list of registrants.
  private static boolean found = false;

  // Registration information will be stored here
  String regPath = "c:\\registration.txt";
  
  
  public void init(ServletConfig config)
  {
    
    try 
    {
       super.init(config);
       
    }
    catch(Exception e)
    {
       e.printStackTrace();
    }
    
  }

  /**
   *  Process the GET request.
   *  @param req The request.
   *  @param res The response.
   **/
   public void doGet (HttpServletRequest req, HttpServletResponse res) 
      throws ServletException, IOException
   {         
      res.setContentType("text/html");
      ServletOutputStream out = res.getOutputStream();
      
      // Display the Web using the new HTML classes
      out.println(showHTML());
      out.close();
   }


    public void doPost (HttpServletRequest req, HttpServletResponse res)
       throws ServletException, IOException
    {
        String nameStr   = req.getParameter("name");
        String emailStr  = req.getParameter("email");
        String errorText = "";

        // Output stream to write to the servlet
        ServletOutputStream out = res.getOutputStream();

        res.setContentType("text/html");

        // Check name & e-mail parameters for valid values
        if (nameStr.length() == 0)
           errorText += "Customer Name not entered.  ";
        if (emailStr.length() == 0)
           errorText += "E-mail not entered.  " ;
 
        // If name & e-mail have both been provided, continue.
        if (errorText.length() == 0) 
        {
           
           try 
           {  
              //Create the registration.txt file
              FileWriter f = new FileWriter(regPath, true);
              BufferedWriter output = new BufferedWriter(f);
              
              //buffered reader for searching the file
              BufferedReader in = new BufferedReader(new FileReader(regPath));
              
              String line = in.readLine();
              
              // reset the found flag
              found = false;

              // Check to see if this customer has already registered
              //  or has already used the same e-mail address
              while (!found) 
              {
                 // if file is empty or end of file reached.
                 if (line == null)   
                    break;

                 // if customer already registered
                 if ((line.equals("Customer Name: " + nameStr)) || 
                     (line.equals("Email address: " + emailStr))) 
                 {
                    // Output a message to the customer saying they have
                    // already registered
                    out.println ("<HTML> " +
                                 "<TITLE> Toolbox Registration</TITLE> " +
                                 "<META HTTP-EQUIV=\"pragma\" content=\"no-cache\"> " +
                                 "<BODY BGCOLOR=\"blanchedalmond\" TEXT=\"black\"> " );
                    out.println ("<P><HR>" +
                                 "<P>" + nameStr +
                                 "</B>, you have already registered using that " +
                                 "<B>Name</B> or <B>E-mail address</B>." +
                                 "<P> Thank You!...<P><HR>");

                    // Create a HTMLHyperlink object and display it
                    out.println ("<UL><LI>" +
                                 new HTMLHyperlink("./customer.HTMLExample",
                                                   "Back to Registration Form") +
                                 "</UL></BODY></HTML>");
                    found = true;
                    break;

                 }
                 else    // read the next line
                    line = in.readLine();
                 
              }
              
              // String object to hold data submitted from the HTML Form
              String data;

              // If the users name or e-mail aren't found in our
              // text file, continue.
              if (!found)
              {  
                 //------------------------------------------------------------
                 // Insert the new customer info into a file
                 output.newLine();
                 output.write("Customer Name: " + nameStr);
                 output.newLine();
                 output.write("Email address: " + emailStr);
                 output.newLine();
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "USE" checkbox from form
                 data = req.getParameter("use");
                 if(data != null)
                 {
                    output.write("Currently Using Toolbox: " + data);
                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "More Information" checkbox from form
                 data = req.getParameter("contact");
                 if (data != null) 
                 {   
                    output.write("Requested More Information: " + data);
                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "AS400 Version" from form
                 data = req.getParameter("version");
                 if (data != null) 
                 {
                    if (data.equals("multiple versions"))
                    {
                       data = req.getParameter("MultiList");
                       output.write("Multiple Versions: " + data);
                    }
                    else
                       output.write("AS400 Version: " + data);

                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "Current Projects" from form
                 data = req.getParameter("interest");
                 if (data != null) 
                 {
                    output.write("Using Java or Interested In: " + data);
                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "Platforms" from form
                 data = req.getParameter("platform");
                 if (data != null)
                 {
                    output.write("Platforms: " + data);
                    output.newLine();
                    if (data.indexOf("Other") >= 0)
                    {
                       output.write("Other Platforms: " + req.getParameter("OtherPlatforms"));
                       output.newLine();
                    }
                 }
                 //------------------------------------------------------------

                 
                 //------------------------------------------------------------
                 //Getting "Number of iSeries servers" from form
                 data = req.getParameter("list1");
                 if (data != null) 
                 {
                    output.write("Number of iSeries servers: " + data);
                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "Comments" from form
                 data = req.getParameter("comments");
                 if (data != null && data.length() > 0) 
                 {
                    output.write("Comments: " + data);
                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting "Attachment"
                 data = req.getParameter("myAttachment");
                 if (data != null && data.length() > 0) 
                 {
                    output.write("Attachment File: " + data);
                    output.newLine();
                 }
                 //------------------------------------------------------------


                 //------------------------------------------------------------
                 //Getting Hidden "Copyright" infomation
                 data = req.getParameter("copyright");
                 if (data != null) 
                 {
                    output.write(data);
                    output.newLine();
                 }
                 //------------------------------------------------------------

                 
                 output.flush();
                 output.close();
                 
                 // Print a thanks to the customer
                 out.println("<HTML>");
                 out.println("<TITLE>Thank You!</TITLE>");
                 out.println("<META HTTP-EQUIV=\"pragma\" content=\"no-cache\"> ");
                 out.println("<BODY BGCOLOR=\"blanchedalmond\">");
                 out.println("<HR><P>Thank You for Registering, <B>" + nameStr + "</B>!<P><HR>");
                 
                 // Create a HTMLHyperlink object and display it
                 out.println("<UL><LI>" +
                             new HTMLHyperlink("./customer.HTMLExample", "Back to Registration Form"));
                 out.println("</UL></BODY></HTML>");

              }

            }
           catch (Exception e) 
           {  
              // Show error in browser
              out.println("<HTML>");
              out.println("<TITLE>ERROR!</TITLE>");
              out.println("<META HTTP-EQUIV=\"pragma\" content=\"no-cache\"> ");
              out.println("<BODY BGCOLOR=\"blanchedalmond\">");
              out.println("<BR><B>Error Message:</B><P>");
              out.println(e + "<P>");
                    
              // Create a HTMLHyperlink object and display it
              out.println("<UL><LI>" + 
                          new HTMLHyperlink("./customer.HTMLExample", "Back to Registration Form"));
              out.println("</UL></BODY></HTML>");

              e.printStackTrace();
           }
        }
        else
        {
           // Output a message to the customer saying customer name & 
           // e-mail not entered. Please try again
           out.println ("<HTML> " +
                        "<TITLE>Invalid Registration Form</TITLE> " +
                        "<META HTTP-EQUIV=\"pragma\" content=\"no-cache\"> " +
                        "<BODY BGCOLOR=\"blanchedalmond\" TEXT=\"black\"> " );
              
           out.println ("<HR><B>ERROR</B> in customer data - <P><B>" +
                        errorText +
                        "</B><P>Please Try Again... <HR>");

                    
           // Create a HTMLHyperlink object and display it
           out.println("<UL><LI>" +
                       new HTMLHyperlink("./customer.HTMLExample", "Back to Registration Form") +
                       "</UL></BODY></HTML>");
        }
         // Close the writer
         out.close();

         
    }   


    public void destroy(ServletConfig config)
    {  
       // do nothing
    }
  

    public String getServletInfo()
    {
        return "My Product Registration";
    }

    private String showHTML()
    {
      // String Buffer to hold HTML Page
      StringBuffer page = new StringBuffer();

      // Create the HTML Form object
      HTMLForm form = new HTMLForm("/servlet/customer.HTMLExample");;
      HTMLText txt;

      // Build the beginning of the HTML Page and add it to the String Buffer
      page.append("<HTML>\n");
      page.append("<TITLE> Welcome!!</TITLE>\n");
      page.append("<HEAD><SCRIPT LANGUAGE=\"JavaScript\">
                  function test(){alert(\"This is a sample script executed with a
                  ButtonFormInput.\")}</SCRIPT></HEAD>");
      page.append("<META HTTP-EQUIV=\"pragma\" content=\"no-cache\">\n");
      page.append("<BODY BGCOLOR=\"blanchedalmond\" TEXT=\"black\"><BR>\n");

      try 
      {  
         //--------------------------------------------------------------------
         // Create page title using HTML Text
         txt = new HTMLText("Product Registration");
         txt.setSize(5);
         txt.setBold(true);
         txt.setColor(new Color(199, 21, 133));
         txt.setAlignment(HTMLConstants.CENTER);
         
         // Add HTML Text to the String Buffer
         page.append(txt.getTag(true) + "<HR><BR>\n");
         //--------------------------------------------------------------------
         
         //--------------------------------------------------------------------
         // Create a Line Layout 
         LineLayoutFormPanel line = new LineLayoutFormPanel();
         txt = new HTMLText("Enter your name and e-mail address:");
         txt.setSize(4);
         line.addElement(txt);
         
         // Add the Line Layout to String Buffer
         page.append(line.toString());
         page.append("<BR>");
         //--------------------------------------------------------------------
         
         //--------------------------------------------------------------------
         // Set the HTML Form METHOD
         form.setMethod(HTMLForm.METHOD_POST);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create a Text input for the name.
         TextFormInput user = new TextFormInput("name");
         user.setSize(25);
         user.setMaxLength(40);
         
         // Create a Text input for the email address.
         TextFormInput email = new TextFormInput("email");
         email.setSize(30);
         email.setMaxLength(40);

         // Create a ImageFormInput
         ImageFormInput img =
           new ImageFormInput("Submit Form", "..\\images\\myPiimages/c.gif");
         img.setAlignment(HTMLConstants.RIGHT);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create a LineLayoutFormPanel object for the name & e-mail address 
         LineLayoutFormPanel line2 = new LineLayoutFormPanel();
         
         // Add elements to the line form
         line2.addElement(new LabelFormElement("Name:"));
         line2.addElement(user);
         // Create and add a Label Element to the Line Layout
         line2.addElement(new LabelFormElement("E-mail:"));
         line2.addElement(email);
         line2.addElement(img);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create Questions line layout
         LineLayoutFormPanel line3 = new LineLayoutFormPanel();
         
         // Add elements to the line layout
         line3.addElement(new LineLayoutFormPanel());
         line3.addElement(new
           CheckboxFormInput("use",
                              "yes",
                              "Do you currently use the Toolbox?",
                              false));
         line3.addElement(new LineLayoutFormPanel());
         line3.addElement(new CheckboxFormInput(
            "contact",
            "yes",
            "Would you like information on future Toolbox releases?",
            true));
         line3.addElement(new LineLayoutFormPanel());
         //--------------------------------------------------------------------
         
         //--------------------------------------------------------------------
         // Create Version Radio Group
         RadioFormInputGroup group = new RadioFormInputGroup("version");
         
         // Add Radio Form Inputs to the Group
         group.add(new RadioFormInput("version", "v3r2", "V3R2", false));
         group.add(new RadioFormInput("version", "v4r1", "V4R1", false));
         group.add(new RadioFormInput("version", "v4r2", "V4R2", false));
         group.add(new RadioFormInput("version", "v4r3", "V4R3", false));
         group.add(new RadioFormInput("version", "v4r4", "V4R4", false));
         group.add(new 
           RadioFormInput("version",
                          "multiple versions",
                          "Multiple Versions? Which ones:",
                          false));

         //Create a Select Form Element
         SelectFormElement mlist = new SelectFormElement("MultiList");
         mlist.setMultiple(true);
         mlist.setSize(3);

         //Create the Options for the Select Form Element
         SelectOption option1 = mlist.addOption("V3R2", "v3r2");
         SelectOption option2 = mlist.addOption("V4R1", "v4r1");
         SelectOption option3 = mlist.addOption("V4R2", "v4r2");
         SelectOption option4 = mlist.addOption("V4R3", "v4r3");
         SelectOption option5 = mlist.addOption("V4R4", "v4r4");
         
         // Create HTML text
         txt = new HTMLText("Current Server Level:");
         txt.setSize(4);

         // Create Grid Layout
         GridLayoutFormPanel grid1 = new GridLayoutFormPanel(3);

         // Add radio group & select form element to the grid
         grid1.addElement(txt);
         grid1.addElement(group);
         grid1.addElement(mlist);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create Grid Layout for interests
         GridLayoutFormPanel grid2 = new GridLayoutFormPanel(1);
         txt = new HTMLText("Current Projects or Area of Interest: " +
                            "(check all that apply)");
         txt.setSize(4);

         // Add elements to Grid Layout
         grid2.addElement(new LineLayoutFormPanel());
         grid2.addElement(txt);
         // Create and add a Checkbox to the Grid Layout
         grid2.addElement(new 
           CheckboxFormInput("interest", "applications", "Applications", true));
         grid2.addElement(new
           CheckboxFormInput("interest", "applets", "Applets", false));
         grid2.addElement(new
           CheckboxFormInput("interest", "servlets", "Servlets", false));
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create Line Layout for platforms
         LineLayoutFormPanel line4 = new LineLayoutFormPanel();
         txt = new HTMLText("Client Platforms Used: " +
                            "(check all that apply)");
         txt.setSize(4);

         // Add elements to Line Layout
         line4.addElement(new LineLayoutFormPanel());
         line4.addElement(txt);
         line4.addElement(new LineLayoutFormPanel());
         line4.addElement(new CheckboxFormInput("platform",
                                                "95",
                                                "Windows95",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "98",
                                                "Windows98",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "NT",
                                                "WindowsNT",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "OS2",
                                                "OS/2",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "AIX",
                                                "AIX",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "Linux",
                                                "Linux",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "AS400",
                                                "iSeries",
                                                false));
         line4.addElement(new CheckboxFormInput("platform",
                                                "Other",
                                                "Other:",
                                                false));
         
         TextFormInput other = new TextFormInput("OtherPlatforms");
         other.setSize(20);
         other.setMaxLength(50);
         
         line4.addElement(other);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create a Line Layout for number of servers
         LineLayoutFormPanel grid3 = new LineLayoutFormPanel();
         
         txt = new HTMLText(
            "How many iSeries™ servers do you have?");
         txt.setSize(4);

         // Create a Select Form Element for number of servers owned
         SelectFormElement list = new SelectFormElement("list1");
         // Create and add the Select Options to the Select Form Element List
         SelectOption opt0 = list.addOption("0", "zero");
         SelectOption opt1 = list.addOption("1", "one", true);
         SelectOption opt2 = list.addOption("2", "two");
         SelectOption opt3 = list.addOption("3", "three");
         SelectOption opt4 = list.addOption("4", "four");
         SelectOption opt5 = new SelectOption("5+", "FiveOrMore", false);
         list.addOption(opt5);

         // Add Elements to the Grid Layout
         grid3.addElement(new LineLayoutFormPanel());
         grid3.addElement(txt);
         grid3.addElement(list);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create a Grid Layout for Product Comments
         GridLayoutFormPanel grid4 = new GridLayoutFormPanel(1);
         txt = new HTMLText("Product Comments:");
         txt.setSize(4);
         
         // Add elements to the Grid Layout
         grid4.addElement(new LineLayoutFormPanel());
         grid4.addElement(txt);
         // Create a Text Area Form
         grid4.addElement(new TextAreaFormElement("comments", 5, 75));
         grid4.addElement(new LineLayoutFormPanel());
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Create a Grid Layout 
         GridLayoutFormPanel grid5 = new GridLayoutFormPanel(2);
         txt = new HTMLText("Would you like to sign on to a server?");
         txt.setSize(4);
         
         // Create a Text input and Label for the system name.
         TextFormInput sys = new TextFormInput("system");
         LabelFormElement sysLabel = new LabelFormElement("System:");
         
         // Create a Text input and Label for the userid.
         TextFormInput uid = new TextFormInput("uid");
         LabelFormElement uidLabel = new LabelFormElement("UserID");

         // Create a Password input and Label for the password.
         PasswordFormInput pwd = new PasswordFormInput("pwd");
         LabelFormElement pwdLabel = new LabelFormElement("Password");

         // Add the Text inputs, password inputs, and Labels to the grid
         grid5.addElement(sysLabel);
         grid5.addElement(sys);
         grid5.addElement(uidLabel);
         grid5.addElement(uid);
         grid5.addElement(pwdLabel);
         grid5.addElement(pwd);
         //--------------------------------------------------------------------

         //--------------------------------------------------------------------
         // Add the various panels created to the HTML Form
         // in the order you wish them to appear
         form.addElement(line2);
         form.addElement(line3);
         form.addElement(grid1);
         form.addElement(grid2);
         form.addElement(line4);
         form.addElement(grid3);
         form.addElement(grid4);
         form.addElement(txt);
         form.addElement(new LineLayoutFormPanel());
         form.addElement(grid5);
         form.addElement(new LineLayoutFormPanel());
         form.addElement(
            new HTMLText("Submit an attachment Here: <br />"));
         // Add a File Input to the form
         form.addElement(new FileFormInput("myAttachment"));
         form.addElement(new ButtonFormInput("button",
                                             "TRY ME!",
                                             "test()"));
         // Adds a empty Line Layout, which in turn
         // adds a line break <br /> to the form
         form.addElement(new LineLayoutFormPanel());
         form.addElement(new LineLayoutFormPanel());
         form.addElement(new SubmitFormInput("submit", "Register"));
         form.addElement(new LineLayoutFormPanel());
         form.addElement(new LineLayoutFormPanel());
         form.addElement(new ResetFormInput("reset", "Reset"));
         // Add a Hidden Input to the form
         form.addElement(new
           HiddenFormInput("copyright",
                           "(C) Copyright IBM® Corp. 1999, 1999"));
         //--------------------------------------------------------------------
         
         // Add the entire HTML Form to the String Buffer
         page.append(form.toString());
         
      }
      catch(Exception e)
      {
         e.printStackTrace();
      }
      
      // Add the Ending HTML tags to the Buffer
      page.append("</BODY>\n");
      page.append("</HTML>\n");

      // Return the entire HTML page string
      return page.toString();

   }
}