我用HttpURLConnection访问一个action时,用对象输出流输出对象,但在action 中用对象输入流读取对象时报java.io.EOFException异常,代码如下:
URL url = new URL("http://localhost/istat3/bbtb/bbTbAction.do?act=saveDataInfo");
// 请求连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// URLConnection connection = url.openConnection();
// 设置连接属性
connection.setUseCaches(false);
connection.setDefaultUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
// 定义请求的对象输出流
OutputStream out = connection.getOutputStream();
ObjectOutputStream objOutStream = new ObjectOutputStream(out);
// 发送请求的参数
objOutStream.writeObject(object);
objOutStream.flush();
if (objOutStream != null) {
objOutStream.close();
}
//得到服务端的响应,
int responseCode = connection.getResponseCode();
另外将请求的url指定到一个servlet时却能正常地读到对象,这是为什么,不是action 继承自servlet吗,一个可以,一个却不行。
URL url = new URL("http://localhost/istat3/servlet/changeModelServlet");
// 请求连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// URLConnection connection = url.openConnection();
// 设置连接属性
connection.setUseCaches(false);
connection.setDefaultUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
// 定义请求的对象输出流
OutputStream out = connection.getOutputStream();
ObjectOutputStream objOutStream = new ObjectOutputStream(out);
// 发送请求的参数
objOutStream.writeObject(object);
objOutStream.flush();
if (objOutStream != null) {
objOutStream.close();
}
//得到服务端的响应,
int responseCode = connection.getResponseCode();
这样就能在servlet中根据对象输入流得到对象:
InputStream in = request.getInputStream();
ObjectInputStream objInStream = new ObjectInputStream(in);
Object obj = objInStream.readObject();
相关推荐
- `ObjectInputStream`首先读取字节流,然后根据字节流中的信息判断要创建的对象类型。 - 接下来,它调用对象的默认构造函数创建一个新对象。 - 然后,它使用字段的值填充新创建的对象,这些值是从字节流中读取的...
让我们深入探讨一下Java中对象存储和读取的相关知识点。 首先,Java提供了多种方式来持久化数据,即存储对象到非内存介质中,以便在后续程序运行时能够恢复这些数据。最常见的方法是使用文件存储和数据库存储。 1....
在Java编程语言中,对象的存储与读取是常见的任务,尤其在持久化数据、序列化和反序列化等场景中。"基于Java的源码-存储与读取对象.zip"这个压缩包很可能包含了实现这一功能的相关代码示例。本文将深入探讨Java中...
2. **对象读取**:`loadObject`方法接收一个文件路径作为参数,它会从该文件中读取字节流,然后反序列化成原来的对象。这个过程需要确保对象的类定义在加载时仍然是可访问的,否则可能导致反序列化失败。 3. **自动...
3. 使用`FileInputStream`和`ObjectInputStream`从文件中读取对象,创建新的`Calendar`对象`cloneCalendar1`和`cloneCalendar2`。 4. 验证`cloneCalendar1`和`cloneCalendar2`的日期是否与原始对象相同,从而确认...
总结来说,Java对象的存储与读取涉及到对象序列化和反序列化,通过实现`Serializable`接口,利用`ObjectOutputStream`和`ObjectInputStream`进行操作。在实际开发中,需要注意安全性问题,并合理使用`transient`...
通过实现`Serializable`接口并使用`ObjectOutputStream`和`ObjectInputStream`,我们可以轻松地将数据存储到`.obj`文件中并在需要时读取出来。这对于数据持久化、跨进程通信和网络传输等场景非常有用。
总结,Java中的对象存储与读取是通过序列化和反序列化实现的。理解和掌握这些概念以及相关的API使用,对于Java开发者来说至关重要,尤其是在处理持久化数据、网络通信等场景。通过实践和优化,我们可以有效地利用这...
总之,Java对象的存储与读取是通过序列化和反序列化实现的,这涉及到对`Serializable`接口的理解,以及`ObjectOutputStream`和`ObjectInputStream`的使用。在实际开发中,还需要关注性能、安全和版本兼容性等问题,...
- **读取对象**:使用`ObjectInputStream`类的`readObject()`方法从输入流中读取对象。这会创建一个新的对象,并填充所有字段的值,与序列化时相同。 - 示例代码: ```java try (ObjectInputStream in = new ...
在Java编程语言中,对象的存储与读取是常见的任务,尤其在持久化数据、序列化和网络传输等场景中。本教程将深入探讨如何在Java中实现对象的存储和读取,主要涉及以下几个关键知识点: 1. **对象序列化...
在Java编程中,存储和读取对象是常见的需求,特别是在数据持久化、序列化和反序列化场景下。本实例源码着重展示了如何利用Java的标准序列化机制以及第三方库如Jackson或Gson来实现这一目标。以下是关于这个主题的...
在Java编程中,存储和读取对象是常见的需求,特别是在持久化数据或者跨程序传递对象时。本资料主要探讨如何使用Java实现对象的序列化和反序列化,以及相关的注意事项。 Java序列化(Serialization)是将一个Java...
在这个例子中,`ObjectInputStream`的`readObject()`方法用于从文件中恢复对象。读出的对象会被自动转换回`Person`类型,并可以通过其属性进行验证。 至于提供的"JSP2.0 语法卡片.pdf"文件,它可能包含有关JSP...
在Java编程中,存储和读取对象是一项基本但至关重要的任务。这通常涉及到序列化(Serialization)和反序列化(Deserialization)的概念。序列化是将一个对象转换为字节流的过程,以便可以存储在磁盘上或在网络上传输...
在Java编程中,存储和读取对象是一项基本但至关重要的任务。这通常涉及到序列化和反序列化的过程,使得对象的状态能够被持久化并能在之后的程序运行中恢复。在这个"基于Java的存储与读取对象.zip"压缩包中,可能包含...
以下详细介绍了如何在Java中将对象保存到文件以及从文件中读取对象。 **一、对象的序列化** Java中的序列化是将对象转换为字节流的过程,这样就可以将对象保存到文件或者在网络上传输。要实现这个功能,对象所属的...
我们使用 FileOutputStream 和 FileInputStream 来读写文件,然后使用 ObjectOutputStream 和 ObjectInputStream 来将对象写入到文件中或从文件中读取对象。 实验目的: 1. 掌握对象串行化的概念和作用 2. 掌握...
- 创建一个`ObjectInputStream`实例,通过它可以读取Java对象。 - 使用`readObject()`方法从输入流中读取对象。 - 关闭`ObjectInputStream`。 6. **序列化和反序列化的注意事项:** - 序列化可能导致安全问题,...
在另一部分的"写对象到文件的代码"中,可能包含了读取这些对象的逻辑,这通常使用`ObjectInputStream`来完成。下面是如何从文件中读取并反序列化对象的代码: ```java import java.io.*; public class Main { ...