Java 如何将JSP中的对象下载/导出到远程存储的文件中?
我正在使用JSP,我有一个复杂的可序列化对象,我希望将其下载到客户端计算机的平面文件格式中。如何做到这一点 我可以使用ObjectOutputStream将对象本地保存到JSP服务器,但我需要将对象远程存储到JSP服务器,而不是本地(例如,存储到客户端) 一旦对象本地存储在客户端计算机上,我就希望能够将其上传回JSP服务器并打开/读取到对象中,这是如何做到的 亲切问候,Java 如何将JSP中的对象下载/导出到远程存储的文件中?,java,jsp,serialization,objectoutputstream,Java,Jsp,Serialization,Objectoutputstream,我正在使用JSP,我有一个复杂的可序列化对象,我希望将其下载到客户端计算机的平面文件格式中。如何做到这一点 我可以使用ObjectOutputStream将对象本地保存到JSP服务器,但我需要将对象远程存储到JSP服务器,而不是本地(例如,存储到客户端) 一旦对象本地存储在客户端计算机上,我就希望能够将其上传回JSP服务器并打开/读取到对象中,这是如何做到的 亲切问候, Tim我认为,JSP服务器不可能自动将写入网络位置。这是一个安全限制,如果没有对应用程序的手动请求,可能无法实现。您可能需要使
Tim我认为,JSP服务器不可能自动将写入网络位置。这是一个安全限制,如果没有对应用程序的手动请求,可能无法实现。您可能需要使用以下策略:
您的问题是通过http发送二进制对象 您可以在JSP代码中使用以下代码段
response.setContentType("binary/octet-stream");
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition","attachment; filename=myjavaobject.obj");
ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
oos.writeObject(yourJavaObject); //Assuming yourJavaObject is the java object you want to send.
out.flush();
out.close();
不要忘记确保
yourJavaObject
是可序列化的 这条线看起来模棱两可。。我可以使用ObjectOutputStream将对象本地保存到JSP服务器,但我需要将对象远程存储到JSP服务器,而不是本地存储。请多解释一下,;你的意思是在本地计算机上下载还是在应用服务器上保存?嗨@gyan,我的意思是将对象下载到本地计算机上。例如,我需要将对象序列化并保存在客户端计算机上,而不是JSP服务器上。希望有帮助:)谢谢@gyan的回复和建议策略。我心里有一个不同的策略,只是不确定它是否可能/如何编码。是否有可能将对象推送到ObjectOutputStream对象中,然后将该对象推送到FileOutputStream对象中,从而触发文件下载?这可以在策略#1中起作用,其中FileOutputStream将文件写入一个位置(最终是一个共享客户端目录)。否则,如果没有客户端权限(这就是为什么通过浏览器下载时总是要求获得保存权限),则无法将文件保存到磁盘上。想象一下,您的程序可能会在客户端的机器上悄悄地保存病毒:)(如果可以直接从web应用程序保存)嗯,但它不会像您通常从网站下载文件那样触发文件下载,例如,单击链接并被问到保存文件的位置吗?但您需要客户端应用程序(战略#3)这样做,然后间接地,你将授予客户端应用程序保存文件的权限。想象一下,这就像下载管理器软件点击URL并自动为你保存文件一样。整个想法是需要有人触发下载。谢谢@Santosh,这正是我要找的,只是这会导致一个额外的问题e、 由于我使用的是使用getWriter()的JSP,因此我无法调用getOutputStream(),因为您无法同时调用这两个函数,因为这会导致两个请求。我如何解决这个问题?谢谢,Tim