JAva-based Survey Servlet help comes with my code

Posted on 2004-11-17
Last Modified: 2013-11-24
I have written a short code about a simple survey servlet that submits results.  My question or favor is, can someone help me develop some code on how I can allow a user to view the results of the survey without responding to the survey?

Here is my code:

// A Web-based survey that uses JDBC from a servlet.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SurveyServlet extends HttpServlet
   private Connection connection;
   private Statement statement;

   // set up database connection and create SQL statement
   public void init( ServletConfig config ) throws ServletException
      // attempt database connection and create Statement
         Class.forName( config.getInitParameter( "databaseDriver" ) );
         connection = DriverManager.getConnection(
            config.getInitParameter( "databaseName" ),
            config.getInitParameter( "username" ),
            config.getInitParameter( "password" ) );

         // create Statement to query database
         statement = connection.createStatement();
      } // end try
      // for any exception throw an UnavailableException to
      // indicate that the servlet is not currently available
      catch ( Exception exception )
         throw new UnavailableException( exception.getMessage() );
      } // end catch
   }  // end method init

   // process survey response
   protected void doPost( HttpServletRequest request,
      HttpServletResponse response )
         throws ServletException, IOException
      // set up response to client
      response.setContentType( "text/html" );
      PrintWriter out = response.getWriter();

      // start XHTML document
      out.println( "<?xml version = \"1.0\"?>" );

      out.printf( "%s%s%s", "<!DOCTYPE html PUBLIC",
         " \"-//W3C//DTD XHTML 1.0 Strict//EN\"",
         " \"\">\n" );

         "<html xmlns = \"\">" );

      // head section of document
      out.println( "<head>" );  
      // read current survey response
      int value =
         Integer.parseInt( request.getParameter( "animal" ) );
      String sql;

      // attempt to process a vote and display current results
         // update total for current survey response
         sql = "UPDATE surveyresults SET votes = votes + 1 " +
               "WHERE id = " + value;
         statement.executeUpdate( sql );

         // get total of all survey responses
         sql = "SELECT sum( votes ) FROM surveyresults";
         ResultSet totalRS = statement.executeQuery( sql );; // position to first record
         int total = totalRS.getInt( 1 );

         // get results
         sql = "SELECT surveyoption, votes, id FROM surveyresults " +
            "ORDER BY id";
         ResultSet resultsRS = statement.executeQuery( sql );
         out.println( "<title>Thank you!</title>" );
         out.println( "</head>" );  
         out.println( "<body>" );  
         out.println( "<p>Thank you for participating." );
         out.println( "<br />Results:</p><pre>" );
         // process results
         int votes;
         while ( )
            out.print( resultsRS.getString( 1 ) );
            out.print( ": " );
            votes = resultsRS.getInt( 2 );
            out.printf( "%.2f", ( double ) votes / total * 100 );
            out.print( "%  responses: " );
            out.println( votes );
         } // end while

         out.print( "Total responses: " );
         out.print( total );
         // end XHTML document
         out.println( "</pre></body></html>" );        
      } // end try
      // if database exception occurs, return error page
      catch ( SQLException sqlException )
         out.println( "<title>Error</title>" );
         out.println( "</head>" );  
         out.println( "<body><p>Database error occurred. " );
         out.println( "Try again later.</p></body></html>" );
      } // end catch
   } // end method doPost

   // close SQL statements and database when servlet terminates
   public void destroy()
      // attempt to close statements and database connection
      } // end try
      // handle database exceptions by returning error to client
      catch( SQLException sqlException )
      } // end catch
   } // end method destroy
} // end class SurveyServlet
Question by:djchiena
    1 Comment
    LVL 1

    Accepted Solution

    I would keep the portion that displays results separate from your servlet. You need a SurveyResults class so that you can display results weather a survey is submitted or not.

    Also, please read the section "How a servlet is destroyed" in this document:

    Your statement and connection objects should not be closed in your destroy method. You should put them in a finally block at the bottom of your doPost(). Hope that helps a little

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Training Course: Java/J2EE and SOA

    This course will cover both core and advanced Java concepts like Database connectivity, Threads, Exception Handling, Collections, JSP, Servlets, XMLHandling, and more. You'll also learn various Java frameworks like Hibernate and Spring.

    Suggested Solutions

    Title # Comments Views Activity
    Automated mobile software testing 8 106
    twoTwo  challenge 35 70
    Return ZipOutputStream using Servlet 2 26
    Updating Java 9 62
    Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
    Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
    Video by: Michael
    Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
    This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

    779 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    14 Experts available now in Live!

    Get 1:1 Help Now