java servlet json_java客户端与服务器Servlet Json数据传输

java自带的java.net包中包含了网络通信功能,其中URLConnection它代表应用程序和 URL 之间的通信链接,此类的实例可用于读取和写入此 URL 引用的资源。

下面通过Post向服务器传输Json数据,并接收服务器的响应。在处理JSON数据时,使用了Alibaba的fastjson包

这是客户端代码:

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.URL;

import java.net.URLConnection;

import com.alibaba.fastjson.JSONObject;

public class PostTest

{

public static String sendPost(String url , String param)

{

String result = "";

try

{

URL realUrl = new URL(url);

//构造一个到指定URL的连接

URLConnection conn = realUrl.openConnection();

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");

conn.setDoOutput(true);

conn.setDoInput(true);

try {

JSONObject user = new JSONObject();

user.put("email", "123@163.com");

user.put("password", "123456789");

//将JSON数据添加到输出流中

OutputStream ot = conn.getOutputStream();

ot.write(user.toString().getBytes());

PrintWriter out = new PrintWriter(ot);

out.flush();

} catch (Exception e) {

}

try(

//接收服务器端发回的响应

BufferedReader in = new BufferedReader(new InputStreamReader

(conn.getInputStream() , "utf-8")))

{

String line;

while ((line = in.readLine())!= null)

{

result += "\n" + line;

}

}

}

catch(Exception e)

{

System.out.println("POST异常" + e);

e.printStackTrace();

}

return result;

}

public static void main(String args[])

{

//使用本地Tomcat服务器,已经将应用a部署到了Tomcat容器中

String s1 = PostTest.sendPost("http://localhost:8080/a/aa"

, "name=Tom&pass=123456");

System.out.println(s1);

}

}

下面是servlet方代码:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.PrintStream;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSONObject;

public class Jsonget extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

StringBuffer jb = new StringBuffer();

String line = null;

String result = "";

try {

//读取输入流到StringBuffer中

BufferedReader reader = request.getReader();

while ((line = reader.readLine()) != null)

jb.append(line);

} catch (Exception e) { /*report an error*/ }

try {

//使用JSONObject的parseObject方法解析JSON字符串

JSONObject jsonObject = JSONObject.parseObject(jb.toString());

result = jsonObject.toJSONString();

} catch (Exception e) {

// crash and burn

throw new IOException("Error parsing JSON request string");

}

//先将服务器收到的JSON字符串打印到客户端,再将该字符串转换为JSON对象然后再转换成的JSON字符串打印到客户端

PrintStream out = new PrintStream(response.getOutputStream());

out.println(jb.toString());

out.println(result);

}

}

下面是启动Tomcat后,执行客户端程序后客户端收到的响应:

afcbb06d5228b7314706517cd9331cbc.png

可以看到客户端成功收到了服务器的响应,服务器准确收到了客户端发送的JSON数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值