博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java] 在JSP中读取POST的JSON数据
阅读量:6322 次
发布时间:2019-06-22

本文共 2294 字,大约阅读时间需要 7 分钟。

jsp是开发bs的利器。在jsp中我们可以很方便的使用JSON来开发一个数据接口。

今天我想实现的例子是:

  1. 接收客户端(浏览器、APP)通过POST方式提交的JSON数据。
  2. 解析接收到数据,如果存在”username”则返回用户名,否则返回一个错误。

我使用java-ee作为开发环境,项目结构如下:

 

 

在本例中,我们用到了 json-lib,  下载地址:

提供了除JSONObject的jar之外依赖的其他6个jar包,一共7个jar文件说明:

因为工作中项目用到的版本是1.1的对应jdk1.3的版本,故本篇博客是基于1.1版本介绍的。

对应此版本的javadoc下载路径如下:

目前最新的版本为2.4,其他版本下载地址为

 

下载完成后,添加到上图所示的位置,然后点开工程属性,全部加入到Libraries中,这样我们就可以使用JSONObject了。

 

jsp中的request本身不能直接返回字符串形式的post数据,所以先写一个getPostData函数:

package com.http;import java.io.IOException;import java.io.InputStream;public class Common {        public static String getPostData(InputStream in, int size, String charset) {        if (in != null && size > 0) {            byte[] buf = new byte[size];            try {                in.read(buf);                if (charset == null || charset.length() == 0)                    return new String(buf);                else {                    return new String(buf, charset);                }            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    } }

 

然后我们新建一个 test.jsp 文件。在头部添加引用上面的类,以及json库。

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    import="java.io.*"    import="com.http.*"    import="net.sf.json.*"    pageEncoding="UTF-8"%>

然后写处理代码:

<% String postdata = Common.getPostData(request.getInputStream(), request.getContentLength(), null); //out.println(postdata);   if (postdata != null) {  JSONObject json = JSONObject.fromObject(postdata);  if (json != null) {   out.println("{\"result\": 1, \"username\": \"" + json.getString("username") + "\"}" );  } else   out.println("{\"result\": 0, \"errmsg\": \"无效的请求\"}"); } else   out.println("{\"result\": 0, \"errmsg\": \"无效的请求\"}");%>

这样就OK了,配置tomcat就可以运行测试了。

直接运行的时候,会返回 :

{“result”: 0, “errmsg”: “无效的请求”}

提交一个测试串

POST /JSPTest/test.jsp HTTP/1.1Host: localhost:8080Accept: */*User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0)Content-Type: text/xmlAccept-Encoding: gzip, deflateConnection: Keep-AliveContent-Length: 60{"bgcolor": "red", "username": "test", "password": "123456"}

 

返回:

{“result”: 1, “username”: “test”}

 

 好了。今天的例子就此结束。在弄这个代码的时候,一开始搞lib放错地方了,老是报错,浪费了1个多小时后,总算解决了。(主要是之前开发android时,都是自己建个libs文件夹放进去再引用就好了,没想到jsp是固定的地方,闹笑话了。。。)

SVN: 

 

转载于:https://www.cnblogs.com/yangyxd/articles/5146732.html

你可能感兴趣的文章
分析流量(Analyzing Traffic )
查看>>
我的友情链接
查看>>
实现Android应用自动更新
查看>>
Azkaban的Exec Server分析 32:关于提醒邮件发送
查看>>
第29讲:Case class和Case object代码实战解析
查看>>
AFNetworking2.0源码解析<一>
查看>>
docker安装知识文档管理工具TeaKKi
查看>>
设备映射-lvm
查看>>
一个Springboot 热部署的方法(基于gradle构建的项目)
查看>>
监听div、table等内容变化
查看>>
构建Nessus漏洞检测系统
查看>>
linux的usermod、用户密码管理、mkpasswd命令说明
查看>>
XenDesktop7.9的新功能:Citrix MCS IO加速浅析
查看>>
DWZ实践——Dialog到NavTab的跳转
查看>>
在LINUX下面如何查看CPU的温度
查看>>
gitlab忘记密码
查看>>
我的友情链接
查看>>
Memcached的代理服务器软件——magent
查看>>
我的友情链接
查看>>
The type *** is not accessible due to restricti...
查看>>