| |
Guest Book Java Servlet
The guest book servlet generates an HTML form (containing name,
home city, and message)
so you can add your message to the guestbook. It also displays the
current list of messages
entered into the guest book.
Run
guest book servlet
This servlet maintains this guest book information in a Vector
of guest book objects. My
GuestBookEntry, GuestBookList, and GuestBookServlet classes all
implement the serializable
interface, which makes it easy to store the entire Vector (containing
all my guestbook entries) in
a file. The source code for all three classes is listed below.
Java Servlet Source Code
package guestbook;
import java.util.*;
import java.io.*;
/**
* Title: GuestBookEntry class defines each GuestBookEntry
* Copyright: Copyright (c) Jeff Smith
* Company: SoftTech Design
*/
public class GuestBookEntry implements Serializable
{
String sName;
String sHomeCity;
String sMessage;
String sDate;
public GuestBookEntry(String sName, String sHomeCity, String sMessage, String sDate)
{
this.sName = sName;
this.sHomeCity = sHomeCity;
this.sMessage = sMessage;
this.sDate = sDate;
}
public String getName()
{
return sName;
}
public String getHomeCity()
{
return sHomeCity;
}
public String getMessage()
{
return sMessage;
}
public String getDate()
{
return sDate;
}
}
/**
* Title: GuestBookList class provides storage for * the list of guestbook entries
* Copyright: Copyright (c) Jeff Smith
* Company: SoftTech Design
*/
package guestbook;
import java.io.*;
import java.util.*;
import GuestBookEntry;
public class GuestBookList implements Serializable
{ //this vector will store our guestbook entries
private Vector listOfEntries = new Vector();
public GuestBookList()
{
}
public void addItem(String sName, String sHomeCity,
String sMessage, String sDate)
{
GuestBookEntry guestBookEntry = new GuestBookEntry(sName, sHomeCity, sMessage, sDate);
listOfEntries.addElement(guestBookEntry);
}
public GuestBookEntry getEntry(int index)
{
return (GuestBookEntry)listOfEntries.elementAt(index);
}
public int getCount()
{
return listOfEntries.size();
}
}
package guestbook;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import GuestBookList;
import GuestBookEntry;
/**
* Title: GuestBookServlet class (servlet creates displays * current guestbook entries as well as providing
* HTML form for entering new messages.
* Copyright: Copyright (c) Jeff Smith
* Company: SoftTech Design
*/
public class GuestBookServlet extends HttpServlet
{
private GuestBookList guestBookList = null;
private String filename = "/home/softtechdesign.webpipe.net/servlets/guestbook.txt";
//Initialize global variables
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
readGuestBookFromFile();
writeGuestBookHTML(response);
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String sName = "";
String sHomeCity = "";
String sMessage = null; //just return something like 'Sep 10, 2000'
String sDate = new Date().toLocaleString().substring(0, 12);
try
{
sName = request.getParameter("NAME");
sHomeCity = request.getParameter("HOMECITY");
sMessage = request.getParameter("MESSAGE");
}
catch(Exception e)
{
e.printStackTrace();
}
if (sMessage == null)
{
response.setContentType("text/html");
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("Request failed: You didn't type in a message!");
out.close();
}
else
{
readGuestBookFromFile();
saveGuestBookEntry(sName, sHomeCity, sMessage, sDate);
writeGuestBookHTML(response);
}
}
private void writeGuestBookHTML(HttpServletResponse response)
{
try
{
response.setContentType("text/html");
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("<html>");
out.println("<head><title>GuestBook Java Servlet</title></head>");
out.println("<body bgColor=silver><h2>" + "Guest Book Java Servlet</h2>");
out.println("<FORM action='http://www.softtechdesign.com/" +
"jeffssmith1/GuestBookServlet' method=post>");
// out.println("<FORM action='http://localhost:8100/servlet/" +
"GuestBookServlet' method=post>");
out.println("<TABLE>");
out.println("<TR><TD align=right>Your Name:</TD><TD><input type="
+ "text size=30 maxlength=30 name=NAME></TD></TR>");
out.println("<TR><TD align=right>Your Home City:</TD><TD><input" +
"type=text size=30 maxlength=30 name=HOMECITY></TD></TR>");
out.println("<TR><TD align=right>Your Message:</TD>" +
"<TD><input type=text size=100 maxlength=250" +
" name=MESSAGE></TD></TR>");
out.println("</TABLE>");
out.println("<hr>");
out.println("<input type=reset> <input type=submit " +
"value='Add Message'>");
out.println("<hr></FORM>");
out.println("<TABLE border=1>");
out.println("<TR><TH align=left>Name</TH><TH align=left>Home City" +
+ "</TH><TH align=left>Date</TH><TH align=left>Message</TH></TR>");
for (int i = 0; i < guestBookList.getCount(); i++)
{
out.println("<TR><TD>");
out.println(guestBookList.getEntry(i).getName() + "</TD><TD>" +
guestBookList.getEntry(i).getHomeCity() + "</TD><TD>" +
guestBookList.getEntry(i).getDate() + "</TD><TD>" +
guestBookList.getEntry(i).getMessage() + "</TD></TR>");
}
out.println("</TABLE>");
out.println("</body></html>");
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
private void readGuestBookFromFile()
{
//read in existing guestbook list from 'guestbook.txt'
try
{
ObjectInputStream in =
new ObjectInputStream(new FileInputStream(filename));
//read object and downcast to GuestBookList
guestBookList = (GuestBookList)in.readObject();
in.close();
}
catch (IOException e)
{
//exception probably occurred because the
//guestbook.txt file doesn't exist
//so just create a new guestbook
guestBookList = new GuestBookList();
}
catch (ClassNotFoundException ce)
{
System.err.println(ce.getMessage());
}
}
private void saveGuestBookEntry(String sName,
String sHomeCity, String sMessage, String sDate)
{
try
{
//add new guestbook item to list
guestBookList.addItem(sName, sHomeCity, sMessage, sDate);
//now save the list (object) back out to 'guestbook.txt'
ObjectOutputStream out =
new ObjectOutputStream(new FileOutputStream(filename));
out.writeObject(guestBookList);
out.flush();
out.close();
}
catch (IOException e)
{
System.err.println(e.getMessage());
}
}
}
|