Applet和Servlet之间传递对象是,Applet出现java.io.EOFException,请问怎么解决?????
如题所示,部分代码如下:
Applet部分代码:
ObjectOutputStream outputToServlet;
URL reqUrl=null;
reqUrl = new URL(rip+"ServletDb?action=get&flag=sendfile");
URLConnection urlcon = reqUrl.openConnection();
urlcon.setDoOutput(true);
urlcon.setDoInput(true);
urlcon.connect();
// serialize the object
outputToServlet = new ObjectOutputStream(urlcon.getOutputStream());
outputToServlet.writeObject(desk);
outputToServlet.flush();
outputToServlet.close();
ObjectInputStream ois = new ObjectInputStream(urlcon.getInputStream());
ois.close();其中desk是一个序列化的对象.
Servlet部分代码:
ObjectInputStream inputFromApplet = null;
DrawDeskIn data=null;
inputFromApplet = new ObjectInputStream(req.getInputStream());
data = (DrawDeskIn)inputFromApplet.readObject();
inputFromApplet.close();
File f=new File("WfPho");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
out.writeObject(data);
out.writeBoolean(true);
out.close();
运行时,Applet异常如下:
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at com.jswfmode.WFTemplate.sendfile(WFTemplate.java:121)
at com.jswfmode.tool.SaveTool.enabledTool(SaveTool.java:35)
at com.jswfmode.swing.DrawDesk.setTool(DrawDesk.java:140)
at com.jswfmode.swing.DrawToolButton.actionPerformed(DrawToolButton.java:40)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
问题点数:100、回复次数:2Top
1 楼likestar413(如星)回复于 2004-09-02 10:09:08 得分 50
给你个例子,看看吧
servlet端
/**
* type class' function
*
* @author Likestar
*/
public class ServletToApplet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
try {
PrintWriter out = response.getWriter();
out.println(" ");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/octest-stream");
try {
ObjectInputStream in = new ObjectInputStream(request.getInputStream());
Object obj = in.readObject();
in.close();
ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
out.writeObject("成功");
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println(obj);
}
public static void main(String[] args) {
}
}Top
2 楼likestar413(如星)回复于 2004-09-02 10:09:42 得分 50
applet端
/**
* type class' function
*
* @author Likestar
*/
public class AppletToServlet extends Applet {
private String msg = "你好";
public void init() {
Button but = new Button("测试");
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
URL url = new URL(getDocumentBase(),
"servlet/ServletToApplet");
System.out.println(url);
URLConnection con = url.openConnection();
con.setUseCaches(true);
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestProperty("Content-type",
"application/octest-stream");
sendServletObject(con,"真实的世界");
System.out.println("发送信息");
msg=(String) getServletObject(con);
repaint();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
});
add(but);
}
public void paint(Graphics g) {
g.drawString(msg, 20, 20);
}
/**
* 给Servlet传送对象
*
* @param output
* @param obj
* @throws IOException
*/
public void sendServletObject(URLConnection con, Object obj)
throws IOException {
OutputStream output = con.getOutputStream();
ObjectOutputStream dataout = new ObjectOutputStream(output);
dataout.writeObject(obj);
dataout.flush();
dataout.close();
}
/**
* 获得Servlet的传送对象
*
* @param input
* @return @throws
* IOException
*/
public Object getServletObject(URLConnection con) throws IOException {
InputStream input = con.getInputStream();
ObjectInputStream datain = new ObjectInputStream(input);
Object obj = null;
try {
obj = datain.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("对象读取错误!");
}
datain.close();
return obj;
}
}Top




