Applet與servlet通訊問題.

e-peng發表於2003-07-30
我在學習透過“物件序列”的技術從Servlet向Applet傳輸完整的Java物件時,程式總是除錯通不過.請各位高人指點.程式清單如下:
///////////////////////////
1.所需要物件序列的物件類.
import java.io.*;
public class DataObject implements Serializable
{
int id;
String name;
int age;
String department;

public DataObject(int id,String name,int age,String department)
{
this.id = id;
this.name = name;
this.age = age;
this.department = department;
}

private void writeObject(ObjectOutputStream out)throws IOException
{
out.writeInt(id);
out.writeInt(age);
out.writeUTF(name);
out.writeUTF(department);
}

private void readObject(ObjectInputStream in) throws IOException
{
id = in.readInt();
age = in.readInt();
name = in.readUTF();
department = in.readUTF();
}

}
///////////////////////////////////////////
2.伺服器Servlet清單
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class TestServlet extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
//傳回物件給Applet
res.setContentType("application/octet-stream");
DataObject dataObj = new DataObject(1,"張三",88,"歷史系");
try {
OutputStream out;
ObjectOutputStream objStream;
out = res.getOutputStream();
objStream = new ObjectOutputStream(out);
objStream.writeObject(dataObj);
objStream.close();

} catch (ClassNotFoundException e) {

}

}

public String getServletInfo()
{
return "A simple Servlet!";
}

}
///////////////////////////////////////////
3.客戶端applet程式清單.
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;


public class TestApplet extends Applet {

public void init() {
}

public void paint(Graphics g) {
g.drawString("Welcome to Java!!", 50, 60 );
}

public void invoke() {
try {

DataObject dataObj;
String info;
URL url = new URL("http://192.168.1.130:8080/Servlet/TestServlet");
URLConnection con = url.openConnection();
con.connect();
InputStream in = con.getInputStream();
showStatus("2");
ObjectInputStream objStream;
objStream = new ObjectInputStream(in);
dataObj = (DataObject)objStream.readObject();
// objStream.close();

info = Integer.toString(dataObj.id);
this.getGraphics().drawString(info,50,80);
info = Integer.toString(dataObj.age);
this.getGraphics().drawString(info,50,100);
info = dataObj.name;
this.getGraphics().drawString(info,50,120);
info = dataObj.department;
this.getGraphics().drawString(info,50,140);

}
catch (Exception e) {

}
}
}

相關文章