我正在使用 JSP,并且我有一个复杂的可序列化对象,我想将其以平面文件格式下载到客户端计算机。如何才能做到这一点?
我可以使用 ObjectOutputStream 将对象本地保存到 JSP 服务器,但我需要将对象远程存储到 JSP 服务器而不是本地存储(例如,存储到客户端存储)
一旦对象本地存储在客户端计算机上,然后我希望能够将其上传回 JSP 服务器并打开/读取到对象中,如何做到这一点?
亲切的问候,
蒂姆
我正在使用 JSP,并且我有一个复杂的可序列化对象,我想将其以平面文件格式下载到客户端计算机。如何才能做到这一点?
我可以使用 ObjectOutputStream 将对象本地保存到 JSP 服务器,但我需要将对象远程存储到 JSP 服务器而不是本地存储(例如,存储到客户端存储)
一旦对象本地存储在客户端计算机上,然后我希望能够将其上传回 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
是serializable
.
我认为,JSP 服务器不可能自动写入网络位置。这是一个安全限制,如果没有对应用程序的手动请求,可能无法实现。您可能需要使用以下策略:
在客户端计算机上创建一个共享位置(假设它在网络上)并将该位置安装在您的服务器上,然后编写 JSP 代码以将文件保存在该位置。
将文件保存在 JSP 服务器位置,然后可以编写 FTP 传输脚本将文件传输到客户端机器;使用作业调度程序(需要建立 FTP 通信)。
以可以使用应用程序网站下载应用程序的方式对应用程序进行编码(就像下载音乐文件一样)。然后在客户端,您可以运行一个程序,该程序将连接到应用服务器并以编程方式将文件保存在客户端计算机上。