本片文章将给出一个传输对象序列化字节流的实例,实际上对上篇文章的代码稍作修改即可。过程如下:
1.在client端和servlet建立相同存根,实现了Serializable接口的User类,注意:包路径也要相同的。代码如下:
package com.cugxw.http.vo; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
2.服务器端接收字节流并转化为对象打印出来,然后返回一个普通字符串response,代码如下:
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //Get input stream from client InputStream inStream = req.getInputStream(); ObjectInputStream objInStream = new ObjectInputStream(inStream); User user = null; try { user = (User)objInStream.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println("username=" + user.getUsername() + "\r\n" + "password=" + user.getPassword()); /* Response to client */ OutputStream os = resp.getOutputStream(); OutputStreamWriter writer = new OutputStreamWriter(os); writer.write("response"); writer.flush(); writer.close(); }
3.客户端发送一个User对象并接收服务端返回的字符串,代码如下:
public static void main(String[] args) throws Exception { //Set up a url URL url = new URL("http://localhost:8088/Servlet/httpConnectionServletTest"); //Generate url connection URLConnection urlConn = url.openConnection(); //Switch to http url connection HttpURLConnection httpUrlConn = (HttpURLConnection) urlConn; /* Output into http connection or not. * If send get request, the parameter is false; * If send post request, the parameter is true; */ httpUrlConn.setDoOutput(true); //Input into http connection or not. httpUrlConn.setDoInput(true); //User cache or not httpUrlConn.setUseCaches(false); //Request context type is java serialized object httpUrlConn.setRequestProperty("Content-type", "application/x-java-serialized-object"); //Set request method httpUrlConn.setRequestMethod("POST"); //Get tcp connection httpUrlConn.connect(); //get output stream object OutputStream outputStream = httpUrlConn.getOutputStream(); //output java serialized object ObjectOutputStream objOutputStream = new ObjectOutputStream(outputStream); User user = new User(); user.setUsername("cugxw"); user.setPassword("123456"); //write object into memory buffer area objOutputStream.writeObject(user); //Flush the memory buffer and put the object into output stream objOutputStream.flush(); objOutputStream.close(); //Invoke method getInputStream() to send data to server InputStream inStream = httpUrlConn.getInputStream(); /* Get response from server * You can invoke available method to get the length of stream */ byte[] inB = new byte[inStream.available()]; inStream.read(inB); System.out.println((new String(inB)).toString()); }
相关推荐
网络编程在Java中也占有重要地位,Socket编程和HTTP客户端库(如HttpURLConnection)使得Java应用程序能够与其他系统进行通信。此外,NIO(非阻塞I/O)和AIO(异步I/O)提供了更高效的数据传输方式。 最后,Java还...
Java API,全称为Java应用程序接口,是Java编程语言的核心组成部分,包含了大量预先定义好的类和方法,供开发者在编写程序时直接使用。这个压缩包"java_API.zip"显然是聚焦于Java API的,其中可能包含了对Java标准库...
- **Java应用程序类型**:了解JVM执行的三种类型:Java应用程序、Java小程序和Java Applet。 - **Java EE架构**:学习如何在企业环境中使用Servlet、JSP和EJB等技术开发Web应用。 书中的源代码分布在不同的章节...
9. **持久化技术**:ORM(Object-Relational Mapping)框架如Hibernate和MyBatis简化了Java应用与数据库之间的交互,将对象模型和关系数据库模型进行映射,减少了数据访问层的复杂性。 10. **容器与部署**:Tomcat...
1. **HTTP协议基础**:HTTP是一种无状态的应用层协议,用于在Web上传输数据。它定义了客户端和服务器之间的交互方式。 2. **断点续传原理**:断点续传允许在下载或上传过程中暂停,并在需要时从上次中断的位置继续...
10. **Java EE**:Java企业版(Java EE)提供了一系列用于构建分布式、基于组件的Web应用程序的API和服务,如Servlet、JSP、EJB(Enterprise JavaBeans)、JPA(Java Persistence API)等。 11. **开发工具**:...
Java编程语言是全球广泛使用的高级编程语言之一,尤其在企业级应用开发中占据主导地位。这份"java笔记"涵盖了从基础到进阶的各种Java知识,旨在帮助学习者系统地掌握这门语言。以下是对笔记内容的详细解读: 1. **...
这本书涵盖了从基础概念到高级应用的多个方面,旨在帮助读者理解并掌握Java如何进行网络通信。以下是对书中关键知识点的详细解读: 1. **Java网络编程基础**: - **套接字(Socket)编程**:Java中的Socket类和...
Java 是一种广泛使用的编程语言,尤其在企业级应用和服务器端开发中占据主导地位。面试时,面试官通常会从多个方面考察候选人的Java技能,包括基础、容器、多线程、反射、对象拷贝、Java Web、异常处理、网络编程、...
它是一个基于请求与响应模型的、无状态的、应用层的协议,并通过TCP/IP进行通信。在Java开发中,使用HTTP协议进行网络通信是非常常见的场景,例如发送HTTP请求获取网页数据、API接口调用等。 这个"HTTP协议开发包...
- **HTTP通信**:利用HttpURLConnection或HttpClient进行HTTP请求。 8. **Java反射机制** - **类加载与反射**:了解类的加载过程,使用反射动态创建对象。 - **反射API**:Class类、Constructor类、Method类和...
它的设计目标是具有简单性、面向对象、健壮性、安全性、可移植性等特性,使得Java在各种平台和设备上都能运行,包括桌面应用、服务器端应用、移动应用以及嵌入式系统。 本"JAVA学习教程"全面覆盖了Java的基础到高级...
【后台Demo】是一个基于MyEclipse开发的Android应用后台项目,展示了如何将JavaWeb技术应用于Android应用程序的后台处理。在Android应用开发中,后台服务通常用于执行耗时操作,如数据同步、定时任务或者在用户界面...
Java网络编程是Java开发中的重要领域,特别是在构建分布式系统、客户端-服务器应用和实时通信时。《Java-Network-Programming》这本书深入浅出地讲解了如何利用Java API进行网络编程,包括TCP/IP通信、套接字编程、...
- 对于企业级应用,Java EE(Enterprise Edition)提供了Servlet、JSP、EJB等技术,用于构建分布式、事务处理和数据库交互的应用。 9. **Spring框架** - Spring是Java开发中广泛使用的轻量级框架,它提供了依赖...
- **线程同步**:synchronized关键字保证线程安全,wait()、notify()和notifyAll()方法用于线程间的通信。 - **线程池**:ExecutorService和ThreadPoolExecutor提供线程池管理,优化系统资源利用。 7. **网络编程...