将任何可序列化对象序列化为字节数组
Yes.
并制作一个字符串。
No.
具体说法见下文
os = new ObjectOutputStream(new ByteArrayOutputStream());
os.writeObject(o);
s = os.toString();
// s = Base64.encode(s);//Need this some base 64 impl like Apache ?
s = URLEncoder.encode(s, "UTF-8");
这些陈述甚至没有做您所描述的事情,无论如何这都是不正确的。OutputStream.toString()
不会将任何字节转换为字符串,它只是返回一个唯一的对象标识符。
Base64 输出 1。
Base64 输出应使用字节数组作为输入,而不是字符串。字符串不是二进制数据的容器。请参阅下面的更正代码。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
os = new ObjectOutputStream(baos);
os.writeObject(o);
os.close();
s = Base64.encode(baos.toByeArray()); // adjust to suit your API
s = URLEncoder.encode(s, "UTF-8");
这至少达到了你的目的。
是否需要基数 64 或者可以跳过第 2 步?
如果你想要一个字符串你must以某种方式对其进行编码。
使用java.util.URLEncode.encode对字符串进行编码
仅当您将其作为 GET 或 POST 参数发送时才需要这样做。
命名参数后,使用 apache http 组件或 URL 类从 servlet 1 发送到 2
Yes.
在 Servlet 2 J2EE 框架上已经对其进行了 URLDecoded,现在只需执行相反的步骤并根据参数名称转换为对象。
是的,但记住直接从base64编码的字符串到字节数组,没有中间字符串。
基本上寻找在 JVM 之间发送对象的最快且最方便的方法。
这些目标不一定是可以调和的。如今最方便的可能是 XML 或 JSON,但我怀疑它们比序列化更快。
操作系统=空;
将即将超出范围的引用设置为null
毫无意义。
HttpParam p = new HttpParam("bean1", s);
有可能HttpParam
为你做 URLEncoding。检查一下。