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
 

"Applet and Servlet Communication"
Volume: 3 Issue: 9, p. 56

	

Listing 1.
 
// connect to the servlet 
String location = "http://www.foo.com/servlet/TestServlet"; 
URL testServlet = new URL( servletLocation ); 
URLConnection servletConnection = testServlet.openConnection(); 

// inform the connection that we will send output and accept input 
servletConnection.setDoInput(true); 
servletConnection.setDoOutput(true); 

// Don't use a cached version of URL connection. 
servletConnection.setUseCaches (false); 
servletConnection.setDefaultUseCaches (false); 

// Specify the content type that we will send binary data 
servletConnection.setRequestProperty 
("Content-Type", "<insert favorite mime type>"); 

// get input and output streams on servlet 
. . . 

// send your data to the servlet 
. . . 

Listing 1.
 
// 

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 implements java.io.Serializable 
{ 
// 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(String aLastName, String aFirstName, String aEmail, 
String aCompany, String aDate, String aCourseTitle, 
String aCourseLocation, String aExpectation) 
{ 
lastName = aLastName; 
firstName = aFirstName; 
email = aEmail; 
company = aCompany; 

courseDate = java.sql.Date.valueOf(aDate); 
courseTitle = aCourseTitle; 
courseLocation = aCourseLocation; 
expectations = aExpectation; 
} 

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; 
} 
}
 
Listing 2.
 
// 
// Applet client-side code to send a student object 
// to a servlet in a serialized fashion. 
// 
// A POST method is sent to the servlet. 
// 

URL studentDBservlet = new URL( webServerStr ); 
URLConnection servletConnection = studentDBservlet.openConnection(); 

// inform the connection that we will send output and accept input 
servletConnection.setDoInput(true); 
servletConnection.setDoOutput(true); 

// Don't use a cached version of URL connection. 
servletConnection.setUseCaches (false); 
servletConnection.setDefaultUseCaches (false); 

// Specify the content type that we will send binary data 
servletConnection.setRequestProperty ("Content-Type", "application/octet-stream"); 

// send the student object to the servlet using serialization 
outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream()); 

// serialize the object 
outputToServlet.writeObject(theStudent); 

outputToServlet.flush(); 
outputToServlet.close(); 

Listing 3.
 
// 
// Servlet server-side code to read a serialized 
// student object from an applet. 
// 
// The servlet code handles a POST method 
// 
public void doPost(HttpServletRequest request, 
HttpServletResponse response) 
throws ServletException, IOException 
{ 
ObjectInputStream inputFromApplet = null; 
Student aStudent = null; 
PrintWriter out = null; 
BufferedReader inTest = null; 

try 
{ 
// get an input stream from the applet 
inputFromApplet = new ObjectInputStream(request.getInputStream()); 

// read the serialized student data from applet 
aStudent = (Student) inputFromApplet.readObject(); 

inputFromApplet.close(); 

// continue the process for registering the student object 

} 
catch(Exception e) 
{ 
// handle exception 
} 
} 

Listing 4.
 
// 
// Servlet server-side code to send a serialized 
// vector of student objects to an applet. 
// 
// 

public void sendStudentList(HttpServletResponse response, Vector studentVector) 
{ 
ObjectOutputStream outputToApplet; 

try 
{ 
outputToApplet = new ObjectOutputStream(response.getOutputStream()); 

System.out.println("Sending student vector to applet..."); 
outputToApplet.writeObject(studentVector); 
outputToApplet.flush(); 

outputToApplet.close(); 
System.out.println("Data transmission complete."); 
} 
catch (IOException e) 
{ 
e.printStackTrace(); 
} 
} 

Listing 5.
 
// 
// Applet client-side code to read a serialized 
// vector of student objects from a servlet. 
// 
// 

// connect to the servlet 
URL studentDBservlet = new URL( servletLocation ); 
URLConnection servletConnection = studentDBservlet.openConnection(); 

// Don't used a cached version of URL connection. 
servletConnection.setUseCaches (false); 
servletConnection.setDefaultUseCaches(false); 

// Read the input from the servlet. 
// 
// The servlet will return a serialized vector containing 
// student entries. 
// 
inputFromServlet = new ObjectInputStream(servletConnection.getInputStream()); 
studentVector = (Vector) inputFromServlet.readObject(); 

Content-Type: application/rtf; name="Applet2Servlet.rtf" 
Content-Disposition: inline; filename="Applet2Servlet.rtf" 

  
      
 

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.