请帮我看以下APPLET和SERVLET通讯的代码????

zytang 2001-08-24 02:47:18
applet-----------

import java.io.*;
import java.applet.Applet;
import java.awt.*;

public class SerAndApp extends Applet{
String response;
public void init()
{
try
{
java.net.URL url=
new java.net.URL(getDocumentBase(),"/servlet/SerAndApp");
java.net.URLConnection con=
url.openConnection();

con.setUseCaches(true);
con.setDoOutput(true);
con.setDoInput(true);
ByteArrayOutputStream byteout=new ByteArrayOutputStream();
DataOutputStream out=new DataOutputStream(byteout);
out.writeUTF("Hello world!");
out.flush();
byte buf[]=byteout.toByteArray();
con.setRequestProperty("Content-type","application/octest-stream");
con.setRequestProperty("Content-length",""+buf.length);
DataOutputStream dataout=new DataOutputStream(con.getOutputStream());
dataout.write(buf);
dataout.flush();
dataout.close();
DataInputStream in=new DataInputStream(con.getInputStream());
this.response=in.readUTF();
//System.out.println("read from server:"+response);
in.close();
}
catch(java.net.MalformedURLException e){}
catch(java.io.IOException e){}


}

public void paint(Graphics g)
{
g.drawString("read from server:"+this.response,10,20);
}
}




servlet--------------
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class SerAndApp extends HttpServlet{
public void service(HttpServletRequest req,HttpServletResponse resp)
{
try
{
DataInputStream in=new DataInputStream(req.getInputStream());
resp.setContentType("application/octest-stream");
ByteArrayOutputStream byteout=new ByteArrayOutputStream();
DataOutputStream out=new DataOutputStream(byteout);
String response=in.readUTF();
out.writeUTF(response);
out.flush();
byte buf[]=byteout.toByteArray();
resp.setContentLength(buf.length);
ServletOutputStream servletout=resp.getOutputStream();
servletout.write(buf);
servletout.close();
}catch(java.io.IOException e){}
}
}

运行后APPLET中显示:read from server: null
...全文
170 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
supershot 2001-11-26
//DataOutputStream dataout=new DataOutputStream(con.getOutputStream());

该行出错!!

java.net.UnknownServiceException: protocol doesn't support output

为什么???
回复
xxmm 2001-08-25
看不出来代码哪里不对,为什么不把那句注释掉的输出 语句恢复出来看看调试信息?
看你执行的情况就象是INIT根本没有执行一样。如果执行了,RESPONSE应当是HELLO WORLD,如果是抛出EXCEPTION,那PAINT根本就无法REACH,也就是没有输出。所以绝没有抛出EXCEPTION。但是如果RESPONSE=“HELLO”,执行INIT仍然应当改写RESPONSE,无论RESPONSE=什么值,都会被IN。READUTF改写。所以结论就是INIT根本没有执行,更具体的说,IN。READUTF根本没有被执行。但是一个APPLET怎么可能不执行INIT呢?想让它不执行都不行啊?这个问题真的很有趣。我想不出来。

What happens if you uncomment the System.out.println(response)?
What is the output? Why you commented this line? You can see the most important debug information here. You would know if in.readUTF is working or not.
回复
zytang 2001-08-24
请问yuanzi(远子):
你把哪里的String response="Hello"?

我也试试
回复
yuanzi 2001-08-24
我把String response="Hello";运行结果却是:read from server: Hello 。到底问题在什么地方,还没有找到原因。望高手指点!!
回复
zytang 2001-08-24
tomcat一直是正常的。
我运行其他的JSP和SERVLET以及APPLET都没有问题,

请问问题可能在哪里。
回复
Brainy 2001-08-24
你的代码是没问题的.
可能是你的tomcat启动.

会出现read from server: Hello world!的结果。

回复
zytang 2001-08-24
请告诉 我答案吧,
应该怎么改正。
回复
flyzhen 2001-08-24
response只是被声明,而没有被实例化。也就是相当于,你声明了一个指针,但是没有把这个指针指向一个确定的内存空间。response也就不可能被付值,因此,才会出现read from server: null的结果。
回复
zytang 2001-08-24
好象不是这个问题:
"String response;"
在APPLET的第二行。
回复
flyzhen 2001-08-24
不好意思,误操作,接楼上:无法将in.readUTF()的值付给response.所以,显示空。
回复
flyzhen 2001-08-24
我想是applet中的response没有实例化,response只是一个空指针,没有被分配内存区域,无法将in.readUTF()
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2001-08-24 02:47
社区公告
暂无公告