java servlet json_Java HttpServlet Json 数据交互

2023-11-14

Android 对其访问进行封装

服务端

packagecom.server;importjava.io.PrintWriter;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.json.JSONObject;public class LoginServer extends HttpServlet implementsjava.io.Serializable{/****/

private static final long serialVersionUID = 1L;public voiddoGet(HttpServletRequest request, HttpServletResponse res){

String user= request.getParameter("user"); //获取服务端数据

String pass= request.getParameter("pass");

System.out.println(user+pass);//业务逻辑

try{//中文乱码解决

res.setContentType("text/html;charset=gbk");

PrintWriter pw=res.getWriter();

//返回Json数据

JSONObject jsonObj= new JSONObject().put("userId" , 1);

pw.println(jsonObj.toString());

}catch(Exception ex){

ex.printStackTrace();

}

}public voiddoPost(HttpServletRequest req, HttpServletResponse res){this.doGet(req, res);

}

}

web.xml

LoginServer

com.server.LoginServer

LoginServer

/login

客户端通过Json获取服务端数据

/****/

packageorg.crazyit.auction.client.util;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.concurrent.Callable;importjava.util.concurrent.FutureTask;importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.HttpClient;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;/*** Description:

*
网站: 疯狂ava联盟

*
Copyright (C), 2001-2014, Yeeku.H.Lee

*
This program is protected by copyright laws.

*
Program Name:

*
Date:

*@authorYeeku.H.Lee kongyeeku@163.com

*@version1.0*/

public classHttpUtil

{//创建HttpClient对象

public static HttpClient httpClient = newDefaultHttpClient();/***

*@paramurl 发送请求的URL

*@return服务器响应字符串

*@throwsException*/

public static String getRequest(finalString url)throwsException

{

FutureTask task = new FutureTask(new Callable()

{

@Overridepublic String call() throwsException

{//创建HttpGet对象。

HttpGet get = newHttpGet(url);//发送GET请求

HttpResponse httpResponse =httpClient.execute(get);//如果服务器成功地返回响应

if(httpResponse.getStatusLine()

.getStatusCode()== 200)

{//获取服务器响应字符串

String result =EntityUtils

.toString(httpResponse.getEntity());returnresult;

}return null;

}

});newThread(task).start();returntask.get();

}/***@paramurl 发送请求的URL

*@paramparams 请求参数

*@return服务器响应字符串

*@throwsException*/

public static String postRequest(finalString url

,final Map rawParams)throwsException

{

FutureTask task = new FutureTask(new Callable()

{

@Overridepublic String call() throwsException

{//创建HttpPost对象。

HttpPost post = newHttpPost(url);//如果传递参数个数比较多的话可以对传递的参数进行封装

List params =

new ArrayList();for(String key : rawParams.keySet())

{//封装请求参数

params.add(newBasicNameValuePair(key

, rawParams.get(key)));

}//设置请求参数

post.setEntity(newUrlEncodedFormEntity(

params,"gbk"));//发送POST请求

HttpResponse httpResponse =httpClient.execute(post);//如果服务器成功地返回响应

if(httpResponse.getStatusLine()

.getStatusCode()== 200)

{//获取服务器响应字符串

String result =EntityUtils

.toString(httpResponse.getEntity());returnresult;

}return null;

}

});newThread(task).start();returntask.get();

}

}

Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。

Callable和Runnable有几点不同:

(1)Callable规定的方法是call(),而Runnable规定的方法是run().

(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。

(3)call()方法可抛出异常,而run()方法是不能抛出异常的。

(4)运行Callable任务可拿到一个Future对象,

Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。

通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。

测试

public classtest {public static voidmain(String []main){

Map map = new HashMap();

map.put("user", "user");

map.put("pass", "pass");//定义发送请求的URL

String url = "http://localhost:8080/HttpServletServer/login";//发送请求

try{

System.out.println(HttpUtil.postRequest(url, map));

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

};

}

}

引用的包的下载地址 :http://download.csdn.net/download/huhuan19890427/6608621

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java servlet json_Java HttpServlet Json 数据交互 的相关文章

随机推荐

  • 【数字音频】采样率、声道与采样深度

    前言 最近因为项目需要 接触了一些简单的数字音频知识 内容来源于网络 百度百科及相关博客 这里做一个简单的记录 方便以后查阅 1 采样率 采样频率 也称为采样速度或者采样率 定义了每秒从连续信号中提取并组成离散信号的采样个数 它用赫兹 Hz
  • uni app 调用网络打印机_Taro 和 uni-app选型对比

    一 Taro和uni app的介绍 1 taro的介绍 taro是多端统一开发框架 支持用 React 的开发方式编写一次代码 生成能运行在微信 百度 支付宝 字节跳动小程序 H5 React Native 等的应用 2 uni app的介
  • 修改Jar包源码(无需反编译工具)(文章看起来很长,其实方法超级简单!)

    前言 本文结合实际项目案例 介绍修改jar包源码的方式 其中运用了一些小技巧 正文 场景 在项目中用了第三方的jar包 但是jar包某个类的成员变量是private的 想将其改为public属性 以便为其赋值 源码中没有其提供简单的set方
  • 05_寄存器和RAM

    计算机的组成原理中 存储是必不可少的部分 可以用来存储计算的结果 图片 文字等等 本文将介绍存储是如何实现的 锁存器 首先我们来看一个门电路 当两个输入引脚都为0时 输出引脚也为0 如果A引脚输入1 输出为1 B引脚也会变为1 此时将A引脚
  • 指针:引领程序灵魂的精准指引

    指针 引领程序灵魂的精准指引 在计算机编程中 指针是一种强大而又常用的概念 它具备着引领和指引程序执行流程的作用 为我们开辟了更加广阔的编程世界 在本文中 我们将深入探讨指针的基本概念 使用方法和示例代码 帮助您更好地理解和运用指针 一 指
  • [leetcode] 2039. 网络空闲的时刻

    题目链接 题意 给定一张n个点不含重边的无向图 点的编号从0开始到n 1 两点之间如果有连边 可以认为耗时为1秒 1 gt n 1的点都需要向0号点发送消息 从第0秒开始 在0号收到消息之后 会回复消息 从第一秒开始 如果1 gt n 1号
  • django2.2 通过redis 存储session

    1 安装pip install django redis 2 配置setting文件 vi setting py 配置session使用redis CACHES default BACKEND django redis cache Redi
  • Python 2.7(3.x)以及numpy、matplotlib和scipy库三种方法实战安装

    Python是目前十分流行的跨平台编程语言 由于其具有优美简洁的特性以及简单的语法 同时支持工程应用 因而得到了越来越多的关注 Ubuntu下python和其比较常用的库 比如numpy matplotlib和scipy都是比较容易安装的
  • Visual Studio开发Qt5.12.3,使用QChartView widget时报错问题

    Visual Studio开发Qt5 12 3 使用QChartView widget时报错问题 使用场景 在Visual studio2017上开发Qt5 12 3项目 在ui界面上将一个QWidget提升为QChartView作为图标展
  • HTML之表格篇-表格嵌套表格

    嵌套表格一 效果如图所示 代码如下
  • jar包加密程序,防止反编译

    本窗体程序基于开源项目xjar https gitee com core lib xjar tree 2 1 1 src main java io xjar 1 pom文件
  • waf 绕过之[RoarCTF 2019]Easy Calc1(还运用了chr代替)

    打开题目 查看源码 发现有PHP文件 打开发现 这是一道审计代码传参题 需要构造num 然而num不允许传字母进去 会报错 这就为什么会有WAF的知识呢 不懂 然后WAF的绕过 在num前加空格就可以了 这样waf就找不到num这个变量了
  • __dict__属性

    dict 是 Python 中的一个特殊属性 通常存在于大多数 Python 对象中 用于存储该对象的可变属性 以下是关于 dict 的一些关键点和详细信息 存储属性 对于大多数自定义的 Python 对象 dict 属性包含了这个对象的属
  • 信息学奥赛一本通C++语言——1163:阿克曼(Ackmann)函数

    题目描述 阿克曼 Ackmann 函数A m n 中 m n定义域是非负整数 m 3 n 10 函数值定义为 a k m m n n 1 m 0 时 a k m m 1 1 m gt 0 n 0 时 a k m m 1 a k m m
  • GNN论文周报|来自北航、港大、UIUC等机构前沿论文研究

    图神经网络 GNN 是一类专门针对图结构数据的神经网络模型 在社交网络分析 知识图谱等领域中取得了不错的效果 近来 相关研究人员在GNN的可解释性 架构搜索 对比学习等方面做了很多探究 本周精选了10篇GNN领域的优秀论文 来自北航 港大
  • 算法基础:素数环

    题目描述 一个环由n个圈组成 将自然数1 n放入圈内 使得任意相邻圈的两个数之和均为素数 第一个圈的元素均为1 下图为n 6时的一个例子 程序样例 输入为一个整数n 6 8 输出分别为 1 4 3 2 5 6 1 6 5 2 3 4 1 2
  • window10 几款好用的屏幕录制制作动图工具

    有时候静态图片不能够展示交互效果 需要录制一下视频 所以就去网上找了几个好用的屏幕录制软件 一 GifCam GifCam录制视频很方便 打开软件 将窗口拖动到需要录制的地方 点击 Rec 就可以开始录制 在录制的过程中 可以随意的改变窗口
  • SpringBoot之RESTful 接口的实现以及Postman的使用

    SpringBoot实现Restful以及Postman的使用 1 HTTP相关知识 1 1 HTTP 工作原理 1 2 HTTP请求过程 1 3 HTTP请求的方法 2 Restful接口的使用 2 1 Restful风格API 2 2
  • c++随笔-删除文件

    c 删除文件非常简单 只需remove 文件名 即可 需要包含 include
  • java servlet json_Java HttpServlet Json 数据交互

    Android 对其访问进行封装 服务端 packagecom server importjava io PrintWriter importjavax servlet annotation WebServlet importjavax s