HomeDigital EditionSys-Con RadioSearch Java Cd
Advanced Java AWT Book Reviews/Excerpts Client Server Corba Editorials Embedded Java Enterprise Java IDE's Industry Watch Integration Interviews Java Applet Java & Databases Java & Web Services Java Fundamentals Java Native Interface Java Servlets Java Beans J2ME Libraries .NET Object Orientation Observations/IMHO Product Reviews Scalability & Performance Security Server Side Source Code Straight Talking Swing Threads Using Java with others Wireless XML
 

"Developing 3-Tier Database Applications with Java Servlets"
Vol. 3, Issue 2, p. 16

	

Listing 1: HTML code for main menu.
 
<!-- Main Menu Page:  index.html --> 
<HTML> 
<HEAD> 
   <TITLE>Student Database Connection</TITLE> 
</HEAD> 
<BODY> 

<CENTER> 
<H1> 
Student Database Connection (SDBC)</H1></CENTER> 

<HR WIDTH="100%"> 
<H2> 
Options</H2> 

<UL> 
<LI> 
<A HREF="StudentRegistration.htm">Register Online!</A></LI> 

<LI> 
<A HREF="/servlet/StudentDBServlet">View the Student List</A></LI> 
</UL> 
  
</BODY> 
</HTML> 

Listing 2.
 
<!-- Student Registration page:  StudentRegistration.html --> 

<HTML> 
<HEAD> 
   <TITLE>Student Registration</TITLE> 
</HEAD> 
<BODY> 

<CENTER> 
<H1> 
Student Registration</H1></CENTER> 

<HR> 
<H2> 
Instructions</H2> 

<OL> 
<LI> 
Enter your information in the fields below.</LI> 

<LI> 
Press the <B>Register </B>button to enter your information into the course 
database.</LI> 
</OL> 
<FORM method="GET" action="/servlet/StudentDBServlet"> 
<CENTER><TABLE BORDER=0 CELLPADDING=5 WIDTH="95%" > 
<TR> 
<TD WIDTH="36%"><B>First Name </B></TD> 

<TD WIDTH="50%"><INPUT type="text" name="FirstName" size="20"></TD> 

<TD WIDTH="43%"><B>Last Name</B></TD> 

<TD WIDTH="57%"><INPUT type="text" name="LastName" size="20"></TD> 
</TR> 

<TR> 
<TD WIDTH="36%"><B>E-Mail </B></TD> 

<TD WIDTH="50%"><INPUT type="text" name="Email" size="20"></TD> 

<TD WIDTH="43%"><B>Company</B></TD> 

<TD WIDTH="57%"><INPUT type="text" name="Company" size="20"></TD> 
</TR> 

<TR> 
<TD WIDTH="36%"><B>Course Title</B></TD> 

<TD WIDTH="50%"><SELECT name="CourseTitle" size="1"><OPTION selected value="-- Please Select A Course --">-- 
Please Select A Course --</OPTION> <OPTION value="Java Introduction">Java 
Introduction</OPTION> <OPTION value="Java Database Apps">Java Database 
Apps</OPTION> <OPTION value="Java Network Programming">Java Network 
Programming</OPTION> <OPTION value="Java Distributed Computing ">Java 
Distributed Computing</OPTION> <OPTION value="JavaBeans Introduction">JavaBeans 
Introduction</OPTION> <OPTION value="JavaBeans for the Enterprise">JavaBeans 
for the Enterprise</OPTION> <OPTION value="Java Servlets">Java Servlets</OPTION> <OPTION value="Java AWT & JFC">Java 
AWT & JFC</OPTION> </SELECT></TD> 

<TD WIDTH="43%"><B>Course Start Date </B><I>(yyyy-mm-dd)</I></TD> 

<TD WIDTH="57%"><INPUT type="text" name="CourseStartDate" size="20"></TD> 
</TR> 

<TR> 
<TD><B>Course Location</B></TD> 

<TD><SELECT name="CourseLocation" size="1"><OPTION selected value="-- Please Select Course Location--">-- 
Please Select Course Location --</OPTION> <OPTION value="Houston, TX">Houston, 
TX</OPTION> <OPTION value="Washington, DC">Washington, DC</OPTION> <OPTION value="New York City, NY">New 
York City, NY</OPTION> <OPTION value="Los Angeles, CA">Los Angeles, 
CA</OPTION> <OPTION value="Chicago, IL">Chicago, IL</OPTION> <OPTION value="Atlanta, GA">Atlanta, 
GA</OPTION> <OPTION value="Boston, MA">Boston, MA</OPTION> <OPTION value="Biloxi, MS">Biloxi, 
MS</OPTION> </SELECT></TD> 

<TD></TD> 

<TD></TD> 
</TR> 
</TABLE></CENTER> 
  
<CENTER><TABLE BORDER=0 CELLPADDING=5 WIDTH="95%" > 
<TR> 
<TD WIDTH="100%"><B>Course Expectations</B>  

<P> <TEXTAREA rows="5" name="Expectations" cols="66"></TEXTAREA></TD> 
</TR> 
</TABLE></CENTER> 
  
<CENTER><INPUT type="submit" value="Register" name="Register"><INPUT type="reset" value="Reset Form" name="B2"></CENTER> 
</FORM> 
<HR> 
<CENTER><A HREF="index.html">Return to Course Home Page</A></CENTER> 

</BODY> 
</HTML> 

Listing 3: init() method.
 
//  File:  StudentDBServlet.java 
//  Listing 3 
// 
import javax.servlet.*; 
import javax.servlet.http.*; 

import java.sql.*; 
import java.io.*; 

import shod.register.Student; 

/** 
 *  This servlet provides data entry and retrieval of 
 *  student data in a database. 
 * 
 *  @author Chad (shod) Darby,  [email protected] 
 *  @version 0.6, 5 Jan 1998 
 * 
 */ 
public class StudentDBServlet extends HttpServlet 
{ 
    // data members 
    protected Connection dbConnection; 
    protected PreparedStatement displayStatement; 
    protected PreparedStatement registerStatement; 

    protected String dbURL = "jdbc:odbc:StudentDatabase"; 
    protected String userID = ""; 
    protected String passwd = ""; 

    protected String CR = "\n"; 

    protected final int LAST_NAME_POSITION  = 1; 
    protected final int FIRST_NAME_POSITION = 2; 
    protected final int EMAIL_POSITION      = 3; 
    protected final int COMPANY_POSITION    = 4; 
    protected final int EXPECTATIONS_POSITION = 5; 
    protected final int COURSE_TITLE_POSITION        = 6; 
    protected final int COURSE_LOCATION_POSITION     = 7; 
    protected final int COURSE_DATE_POSITION   = 8; 

    public void init(ServletConfig config) throws ServletException 
    { 
        super.init(config); 

        // use println statements to send status messages to Web server console 
        try { 
            System.out.println("StudentDBServlet init: Start"); 

            System.out.println("StudentDBServlet init: Loading Database Driver"); 
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

            System.out.println("StudentDBServlet init: Getting a connection to - " + dbURL); 
            dbConnection = DriverManager.getConnection(dbURL, userID, passwd); 

            System.out.println("StudentDBServlet init: Preparing display statement"); 
            displayStatement = 
               dbConnection.prepareStatement("select * from Students order by LastName"); 

            System.out.println("StudentDBServlet init: Preparing register statement"); 
            registerStatement = 
               dbConnection.prepareStatement("insert into Students " 
                 + "(LastName, FirstName, Email, Company, CourseExpectations, CourseTitle, CourseLocation, CourseStartDate)" 
                 + " values (?, ?, ?, ?, ?, ?, ?, ?)"); 

            System.out.println("StudentDBServlet init: End"); 
        } 
        catch (Exception e) 
        { 
            cleanUp(); 
            e.printStackTrace(); 
        } 
    } 

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

        String userOption = null; 

        userOption = request.getParameter("Register"); 

        if (userOption != null) 
        { 
            // hidden form field "Register" was present 
            registerStudent(request, response); 
        } 
        else 
        { 
            // simply display the students 
            displayStudents(request, response); 
        } 
    } 

    public void displayStudents(HttpServletRequest request, 
                                HttpServletResponse response) 
    { 
        Student aStudent = null; 

        try { 
            // build the html page heading 
            String htmlHead = "<html><head><title>List of Students</title></head>" + CR; 

            // build the html body 
            String htmlBody = "<body><center>" + CR; 
            htmlBody += "<h1>Student List</h1>" + CR; 
            htmlBody += "<hr></center><p>" + CR; 

            // build the table heading 
            String tableHead = "<center><table border width=100% cellpadding=5>" + CR; 
            tableHead += "<tr>" + CR; 
            tableHead += "<th> </th>" + CR; 
            tableHead += "<th>Student Name</th>" + CR; 
            tableHead += "<th>E-mail</th>" + CR; 
            tableHead += "<th>Company</th>" + CR; 
            tableHead += "<th>Course Expectations</th>" + CR; 
            tableHead += "</tr>" + CR; 

            // execute the query to get a list of the students 
            ResultSet dataResultSet = displayStatement.executeQuery(); 

            // build the table body 
            String tableBody = ""; 

            int rowNumber = 1; 
            while (dataResultSet.next()) 
            { 
                aStudent = new Student(dataResultSet); 
                tableBody += aStudent.toTableString(rowNumber); 
                rowNumber++; 
            } 

            dataResultSet.close(); 

            // build the table bottom 
            String tableBottom = "</table></center>"; 

            // build html page bottom 
            String htmlBottom = "</body></html>"; 

            // build complete html page 
            htmlBody += tableHead + tableBody + tableBottom; 
            htmlBody += "<p><hr>"; 
            htmlBody += "<center><a href=/StudentDB/index.html>Return to Course Home Page</a>"; 
            htmlBody += "<p><i>" + this.getServletInfo() + "</i>"; 
            htmlBody += "</center>"; 
            String htmlPage = htmlHead + htmlBody + htmlBottom; 

            // now let's send this dynamic data 
            // back to the browser 
            PrintWriter outputToBrowser =  new PrintWriter(response.getOutputStream()); 
            response.setContentType("text/html"); 
            outputToBrowser.println(htmlPage); 
            outputToBrowser.close(); 

        } 
        catch (Exception e) 
        { 
            cleanUp(); 
            e.printStackTrace(); 
        } 
    } 

    public void registerStudent(HttpServletRequest request, 
                                HttpServletResponse response) 
    { 
        try { 
            // create a new student based on the form data 
            Student aStudent = new Student(request); 

            // set sql parameters 
            registerStatement.setString(LAST_NAME_POSITION, aStudent.getLastName()); 
            registerStatement.setString(FIRST_NAME_POSITION, aStudent.getFirstName()); 
            registerStatement.setString(EMAIL_POSITION, aStudent.getEmail()); 
            registerStatement.setString(COMPANY_POSITION, aStudent.getCompany()); 
            registerStatement.setString(EXPECTATIONS_POSITION, aStudent.getExpectations()); 
            registerStatement.setDate(COURSE_DATE_POSITION, aStudent.getCourseDate()); 
            registerStatement.setString(COURSE_TITLE_POSITION, aStudent.getCourseTitle()); 
            registerStatement.setString(COURSE_LOCATION_POSITION, aStudent.getCourseLocation()); 

            // execute sql 
            registerStatement.executeUpdate(); 

            // build confirmation page 
            String htmlPage = "<html><head><title>Confirmation Page</title></head>"; 

            htmlPage += "<body>"; 
            htmlPage += "<center><h1>Confirmation Page</h1></center><hr>"; 
            htmlPage += "The following information was entered successfully"; 
            htmlPage += aStudent.toWebString(); 

            htmlPage += "<hr>"; 
            htmlPage += "<center><a href=/StudentDB/index.html>Return to Home Page</a> | "; 
            htmlPage += "<a href=/servlet/StudentDBServlet>View Student List</a>"; 
            htmlPage += "<p><i>" + this.getServletInfo() + "</i>"; 
            htmlPage += "</center></body></html>"; 

            // now let's send this dynamic data 
            // back to the browser 
            PrintWriter outputToBrowser =  new PrintWriter(response.getOutputStream()); 

            response.setContentType("text/html"); 
            outputToBrowser.println(htmlPage); 
            outputToBrowser.close(); 
        } 
        catch (Exception e) 
        { 
            cleanUp(); 
            e.printStackTrace(); 
        } 
    } 

    public void cleanUp() 
    { 
        try { 
            System.out.println("Closing database connection"); 
            dbConnection.close(); 
        } 
        catch (SQLException e) 
        { 
            e.printStackTrace(); 
        } 
    } 

    public void destroy() 
    { 
        System.out.println("StudentDBServlet: destroy"); 
        cleanUp(); 
    } 

    public String getServletInfo() 
    { 
        return "<i>Student Registration Servlet, v.06</i>"; 
    } 
} 

Listing 4: Student class.
 
//  File:  Student.java 
//  Listing 4 
// 
package shod.register; 

import java.sql.*; 
import javax.servlet.http.*; 

/** 
 *  The Student class has data members to describe 
 *  a student. String methods are available to 
 *  display the data members to the console or Web page. 
 * 
 *  @author Chad (shod) Darby,  [email protected] 
 *  @version 0.6, 5 Jan 1998 
 * 
 */ 
public class Student 
{ 
    // data members 
    protected String lastName; 
    protected String firstName; 
    protected String company; 
    protected String email; 
    protected String courseTitle; 
    protected String courseLocation; 
    protected String expectations; 
    protected java.sql.Date courseDate; 

    protected final String CR = "\n";     // carriage return 

    // constructors 
    public Student() 
    { 
    } 

    public Student(HttpServletRequest request) 
    { 
        lastName = request.getParameter("LastName"); 
        firstName = request.getParameter("FirstName"); 
        email = request.getParameter("Email"); 
        company = request.getParameter("Company"); 

        String dateString = request.getParameter("CourseStartDate"); 
        courseDate = java.sql.Date.valueOf(dateString); 

        courseTitle = request.getParameter("CourseTitle"); 
        courseLocation = request.getParameter("CourseLocation"); 
        expectations = request.getParameter("Expectations"); 
    } 

    public Student(ResultSet dataResultSet) 
    { 

        try { 
            // assign data members 
            lastName = dataResultSet.getString("LastName"); 
            firstName = dataResultSet.getString("FirstName"); 
            email = dataResultSet.getString("Email"); 
            company = dataResultSet.getString("Company"); 
            expectations = dataResultSet.getString("CourseExpectations"); 
            courseTitle = dataResultSet.getString("CourseTitle"); 
            courseLocation = dataResultSet.getString("CourseLocation"); 
            courseDate = dataResultSet.getDate("CourseStartDate"); 
        } 
        catch (SQLException e) 
        { 
            e.printStackTrace(); 
        } 
    } 

    //  accessors 
    public String getLastName() 
    { 
        return lastName; 
    } 

    public String getFirstName() 
    { 
        return firstName; 
    } 

    public String getEmail() 
    { 
        return email; 
    } 

    public String getCompany() 
    { 
        return company; 
    } 

    public String getExpectations() 
    { 
        return expectations; 
    } 

    public String getCourseTitle() 
    { 
        return courseTitle; 
    } 

    public String getCourseLocation() 
    { 
        return courseLocation; 
    } 

    public Date getCourseDate() 
    { 
        return courseDate; 
    } 
  

    //  methods 
    //  normal text string representation 
    public String toString() 
    { 
        String replyString = ""; 

        replyString += "Name: " + lastName + ", " + firstName + CR; 
        replyString += "E-mail: " + email + CR; 
        replyString += "Company: " + company  + CR; 
        replyString += "Course Expectations: " + expectations + CR; 
        replyString += "Course Title: " + courseTitle + CR; 
        replyString += "Course Location: " + courseLocation + CR; 
        replyString += "Course Start Date: " + courseDate + CR + CR; 

        return replyString; 
    } 

    //  returns data as HTML formatted un-ordered list 
    public String toWebString() 
    { 

        String replyString = "<ul>"; 

        replyString += "<li><B>Name:</B> " + lastName + ", " + firstName + CR; 
        replyString += "<li><B>E-mail:</B> " + email + CR; 
        replyString += "<li><B>Company:</B> " + company  + CR; 
        replyString += "<li><B>Course Expectations:</B> " + expectations + CR; 
        replyString += "<li><B>Course Title:</B> " + courseTitle + CR; 
        replyString += "<li><B>Course Location:</B> " + courseLocation + CR; 
        replyString += "<li><B>Course Start Date:</B> " + courseDate + CR; 

        replyString += "</ul>" + CR; 




        return replyString; 
    } 

    // returns data formatted for an HTML table row 
    public String toTableString(int rowNumber) 
    { 
        String replyString = ""; 
        String tdBegin = "<td>"; 
        String tdEnd = "</td>" + CR; 

        replyString += "<tr>" + CR; 
        replyString += tdBegin + rowNumber + tdEnd; 
        replyString += tdBegin + lastName + ", " + firstName + tdEnd; 
        replyString += tdBegin + "<a href=mailto:" + email + "> " 
                               + email + "</a>" + tdEnd; 

        replyString += tdBegin + company + tdEnd; 
        replyString += tdBegin + expectations + tdEnd; 
        replyString += "</tr>" + CR; 

        return replyString; 
    } 
}
 
  
 

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.
  E-mail: [email protected]

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.