关于Applet和Servlet的通讯,请教各位大侠。紧急求助!!!

topbit 2002-01-14 12:13:09
一个B/S三层系统,客户端使用HTML+Applet,中间层使用Servlet。
Applet和Servlet的通讯方式:Applet创建到Servlet的URLConnection,通过连接获取输出流,在输出流上发送查询参数,类似:ClassID=1&ObjectID=2。Servlet收到请求,解析参数,将响应发送给客户端。特别说明:所有响应均采用对象封装,用于传送二进制数据(如图像)。Applet收到响应,将它表现出来即可。
由于二进制数据量很大,所以Applet不能一次加载所有数据,只能根据用户请求分次加载。Applet和同一个Servlet通讯两次,能够得到正确的结果。但是第三次通讯及其以后,就不稳定,Applet发送请求之后,不能收到服务器端的响应。发生IOException的原因在于:不能在一个输入流上读取数据之后,再从输出流发送查询参数。也就是说,同一个连接不能查询两次。于是每次查询数据之后,我都将URL连接对象设置为null,再调用System.gc()(根据SUN的说法,这一步优先级很低,不保证执行)。如此处理之后,在某些计算机上可以从始至终不出现任何问题(无论使用多久,目前已经有一个多月没出问题了,OS:Win2k Pro),在另外一些计算机上,只要第三次访问,就必定出现异常,导致数据不能加载。
所有输出流、输入流,在使用完毕之后(类似out.flush())都关闭(out.close())。但是URLConnection没有close()方法。
请教各位高手:如何实现等价于URLConnection.close()的方法,或者有更好的方法解决上述问题。
非常感谢您的回复!!!
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
topbit 2002-01-28
  • 打赏
  • 举报
回复
小溪:
我的代码基服务器端:
out = new ObjectOutputStream(response.getOutputStream());
out.writeObject(obj);
客户端:
in = new ObjectInputStream(((URLConnection)connection).getInputStream());
Object obj = in.readObject();
用完了都要flush()、close()(如果有的话)。
现在客户端、Tomcat在我的计算机上(成都),访问远程数据库(珠海)一点问题都没有。但是有有一个新的问题:我的计算机是Windows 2000 Pro,ISP的服务器是Unix。由于使用了JDBC驱动程序(针对不同操作系统有不同版本),所以在这里编译的程序在ISP上无法使用。
我将数据库连接的管理放在一个类中(ServerDataController),它是一个静态类,使用方法类似于System、Math。只要用ServerDataController.getConnection()就可以获取一个Connection对象。这个类在Win32下工作正常,但是在Unix下不正常。技术支持人员说,必须在他们的Unix下重新编译这个类。具体方法是上传源代码->用JSP编译->发布。可是编译指令怎么写?(据说System javac)我不懂JSP,请教各位高手。
等这些问题解决了,这个程序就会在http://www.emapgo.com上发布,到时候就散分。:)
topbit 2002-01-28
  • 打赏
  • 举报
回复
有哪位高手知道的?
xiaoxi777 2002-01-15
  • 打赏
  • 举报
回复
你把你的代码贴出来看看呢
ggyy 2002-01-15
  • 打赏
  • 举报
回复
AA
topbit 2002-01-15
  • 打赏
  • 举报
回复
小溪兄:你说的连接N次我也相信,在我的计算机上就没问题,但是在别人的计算机上也许会出现这种现象。还是很谢谢你。
海盗兄:也很感谢你!
你们的方法我都要试试看,谢谢!!!
虎叔 2002-01-14
  • 打赏
  • 举报
回复
HttpURLConnection httpconnection = (HttpURLConnection)url.openConnection();
httpconnection.disconnect();
......

httpconnection.connect();
........

xiaoxi777 2002-01-14
  • 打赏
  • 举报
回复
象我做的applet和servlet通讯的可以连n次,都没有你说的那种情况
xiaoxi777 2002-01-14
  • 打赏
  • 举报
回复
你用BufferedInputStream和BufferedOutputStream试试呢
topbit 2002-01-14
  • 打赏
  • 举报
回复
请各位大侠不吝赐教。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧