需求:客户端向服务器端发送请求,服务器端接收到请求后进行流程处理,生成list对象,返回到客户端。
1.传递的包装类(必须序列化)
package com;
import java.io.Serializable;
/*
* 使用对象流序列化和反序列化对象
* 1.创建一个对象,这个对象将被序列化,并写入文件中,前提是:当前类实现了Serializable接口
* 2.实例化ObjectOutputStream的对象
* 3.调用ObjectOutputStream类的writeObject()方法,将对象写入流中
* 4.实例化ObjectInputStream类的对象
* 5.调用ObjectInputStream类的readObject()方法,获取对象的时候要进行强制类型转化
*
* transient关键字
* 可以保护对象中的敏感信息不被写入到对象流中
*/
public class Student implements Serializable{
private String name;
private int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.数据流写的方法
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.ServletException;
public class TaskSendMsg {
public TaskSendMsg() {}
public void sendM(String url)throws ServletException, IOException{
List<Student> a = new ArrayList<Student>();
a.add(new Student("1",2));
a.add(new Student("2",2));
a.add(new Student("3",2));
URL objUrl = new URL(url);
HttpURLConnection httpConn = null;
OutputStream output = null;
httpConn = (HttpURLConnection) objUrl.openConnection();
HttpURLConnection.setFollowRedirects(true);
httpConn.setDoOutput(true);
httpConn.setRequestMethod("POST");//请求方法的动作
httpConn.setRequestProperty("Content-Type", "text/xml");
httpConn.connect();
output = httpConn.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(output);
// 写入请求参数
oos.writeObject(a);
oos.flush();
oos.close();
System.out.println("send ok");
int code = httpConn.getResponseCode();
System.out.println("code " + code);
System.out.println(httpConn.getResponseMessage());
}
3.Servlet中调用数据流写入方法,向特定的url返回封装后的list
package com;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
public class TaskServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String encoding = "UTF-8";
private Log log = LogFactory.getLog(TaskServlet.class);
protected void service(HttpServletRequest req, HttpServletResponse resp) {
//获取请求的IP地址,用来处理响应的值,与接收端协商定义
String respUrl = "http://" + req.getServerName() //服务器地址
+ ":" + req.getServerPort() //端口号
+ "/task" ; //请求页面或其他地址
//通过字节流写返回值,传回给请求的URL
TaskSendMsg ts = new TaskSendMsg();
try {
ts.sendM(respUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.接收端获取数据流
package com;
import java.io.ObjectInputStream;
import java.util.List;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.Student;
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest req, HttpServletResponse resp) {
try {
System.out.println("begin read");
List<Student> students =null;
ServletInputStream inStream = req.getInputStream(); // 取HTTP请求流
ObjectInputStream ois = new ObjectInputStream(inStream);
//依次从对象流中取出list
while(inStream.available()>0){
students=(List<Student>)ois.readObject();
for(Student s:students){
System.out.println("获取的Student的名字有:"+s.getName());
}
}
inStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在浏览器输入http://服务器IP:端口/服务器servlet对应的方法
会在TestServlet中获取传递的Student信息。
servlet配置:
servlet直接实现service方法即可,在web.xml中配置路径
<servlet>
<servlet-name>test_servlet</servlet-name>
<servlet-class>com.TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>test_servlet</servlet-name>
<url-pattern>/ajax/test</url-pattern>
</servlet-mapping>
在浏览器上 输入http://localhost:8080/ajax/test
执行servlet中的service程序。
分享到:
相关推荐
这个"Android客户端和服务器端数据交互Demo01.zip"应该包含一个示例项目,展示了如何在Android平台上进行这种交互。下面,我们将深入探讨这个主题,并基于"参考博客.txt"和"Android客户端和服务器端数据交互Demo01...
这个名为"Android客户端和服务器端数据交互Demo04.zip"的压缩包文件很可能是为了演示如何在Android应用中实现这种交互。以下是对这个主题的详细解释: 一、Android客户端 Android客户端通常指的是运行在Android设备...
在Android应用开发中,客户端与服务器端的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本教程将详细阐述Android客户端如何使用JSON进行数据交互,包括...
本教程将详细讲解如何在Android客户端和Servlet服务器端利用JSON进行数据交互。 首先,理解JSON(JavaScript Object Notation)的基本结构。JSON是一种文本格式,易于人阅读和编写,同时也易于机器解析和生成。它...
总结,实现“基于json数据交互Android客户端与服务器端”涉及到Android网络编程、文件操作、JSON解析、异步处理等多个技术领域。理解并掌握这些知识点,将有助于开发者构建功能丰富的Android应用,实现高效的数据...
WirelessOrder系统是一个轻量级的解决方案,主要由Android客户端应用和服务器端接口组成,实现了用户通过手机端进行菜品浏览、选择、下单和支付等功能。该系统适合初学者进行学习和实践,有助于理解Android应用程序...
在Android客户端与服务器端的数据交互中,JSON通常被用作数据传输的载体,因为它能够有效地封装复杂的数据结构,并且易于在不同语言之间进行解析和生成。 3.2 SSH框架SSH框架在JAVA EE服务器端的应用SSH框架是...
总的来说,Android客户端与服务器端交互的过程涉及网络请求、数据格式处理、安全性措施以及用户体验优化等多个技术点。开发者需要熟练掌握这些知识,并在实际项目中灵活运用,以构建稳定、安全的移动应用。
本教程将深入探讨Android客户端如何与服务器进行有效的数据交互,以及如何实现数据的上传和接收。 首先,我们要理解数据交互的基本流程。在Android客户端与服务器的数据交互中,通常涉及到以下几个步骤: 1. **...
本话题主要关注Android客户端与服务器端通过GET和POST方法进行数据传输的基本原理和实现。 一、GET与POST方法 1. GET方法:GET是最常见的HTTP请求方法,主要用于从服务器获取资源。它将参数附加到URL后面,通过...
总结,Android客户端与服务器端交互涉及HTTP协议中的GET和POST方法,可以通过原生的HttpURLConnection或者第三方库如OkHttp实现。GET用于获取资源,POST则用于提交数据。在实际应用中,还需要考虑安全性和性能优化。...
本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...
在Android应用开发中,客户端与服务端的交互...综上所述,实现Android客户端与服务端的简单登录交互涉及客户端UI设计、网络请求处理、服务端数据验证等多个环节。理解并掌握这些知识点对于Android开发者来说至关重要。
本Demo着重展示了这一核心概念,通过实例来帮助开发者理解和掌握Android客户端与服务器端交互的流程。 首先,我们要了解Android客户端与服务器通信的基本原理。通常,这种通信是基于HTTP或HTTPS协议的,使用RESTful...
总结,通过`HttpURLConnection`实现文件上传需要理解HTTP请求的构建,以及服务器端如何解析和处理这些请求。Apache Commons库简化了这一过程,但同时也需要注意安全性和性能优化。在实际项目中,可能还需要处理错误...
在Android应用开发中,服务器端与客户端的数据交互是至关重要的环节,这涉及到用户信息的验证、数据的获取和存储等多个方面。在这个过程中,通常会采用HTTP或HTTPS协议进行通信,利用JSON或XML等数据格式传输数据。...