applet与servlet通讯,发生"FileNotFoundException"异常!!

松耦合紧内聚 2002-04-22 08:19:06
我做了一个applet和servlet通过URLConnection 通讯。servlet放在web-inf/classes目录下。
applet通过URL aurl=new URL(getCodeBase(),"servlet/hehe")建立URL对象.
再通过URLConnection conn=aurl.openConnection()得到URLConnection对象。
设置可以输入,可以输出,不使用缓冲等等。
用conn建立输入输出流。
奇怪的事情发生了:
我建立的是对象输入输出流,
ObjectOutputStream os=new ObjectOutputStream(conn.getOutputStream());
建立对象输出流时,没有问题。
但是建立对象输入流时,
ObjectInputStream is=new ObjectInputStream(conn.getInputStream());
发生了FileNotFoundException 异常!!
输出流发送的数据,servlet可以收到。但是这个输入流却不能建立。我真的很奇怪!
“文件没有找到”异常是如何发生的呢?难以想象!
急死!!!请高人执教!!谢谢
...全文
66 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherami 2002-04-22
哦,有一个问题需要注意:客户端和服务器的连接建立后使用流是应该注意的是先是客户端向服务器端写,然后服务器端接收,然后服务器端向客户端写,客户端再接收,这样只需要一次http连接,否则你需要使用多次连接。
回复
cherami 2002-04-22
这个应该没有任何问题,我的程序片断:
applet里面:
Hashtable hash=new Hashtable();
int groupCount=record.getVecProductGp().size();
for (int i=0;i<groupCount;i++)
{
Mrp14a06_ProductGp gpRecord=(Mrp14a06_ProductGp)(record.getVecProductGp().elementAt(i));
int codeCount=gpRecord.getVecItem().size();
for (int j=0;j<codeCount;j++)
{
Mrp14a06_Item codeRecord=(Mrp14a06_Item)(gpRecord.getVecItem().elementAt(j));
hash.put(codeRecord.getStrItemCode()+","+i+","+j,new Integer(codeRecord.getIntLifePoint()));
}
}
try
{
URL url=new URL(hostURL+servletURL);
HttpURLConnection uc = (HttpURLConnection)url.openConnection();
uc.setDoOutput(true);
uc.setUseCaches(false);
uc.setRequestMethod("POST");
ObjectOutputStream outStream=new ObjectOutputStream(uc.getOutputStream());
outStream.writeObject(hash);
ObjectInputStream objStream=new ObjectInputStream(uc.getInputStream());
record=(Mrp14a06_WkdbAllData)objStream.readObject();



servlet里面:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
Hashtable hash=(Hashtable)getObject(request);
writeObject(response,new Mrp14a06_WkdbAllData());

}
private void writeObject(HttpServletResponse response,Object obj) {

try {
ObjectOutputStream objOutStream = new ObjectOutputStream(response.getOutputStream());
objOutStream.writeObject(obj);
}
catch (IOException e) {
System.err.println (e);
}
}
public Object getObject(HttpServletRequest request)
{
try
{
ObjectInputStream objStream=new ObjectInputStream(request.getInputStream());
return objStream.readObject();
}
catch (Exception e)
{
System.out.println (e);
return null;
}
}
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告