java请求servlet,[Java]Servlet发送Post请求

演示实例:AServlet发送一个Student对象到BServlet

#### 1.AServlet部分

首先造一个学生stu,然后通过fastjson的`toJSONString`方法把对象转换成字符串,再通过MyHttpUtils的`sendPost`方法把数据发送到BServlet

核心部分是`MyHttpUtils`类,还用到了`fastjson.jar`包

```java

@WebServlet("/AServet")

public class AServet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

Stu stu = new Stu();

stu.setAge(12);

stu.setName("ergou");

stu.setSex(1);

String str = JSON.toJSONString(stu);//将java对象转换为json字符串

response.getWriter().append("将发送请求给B");

String ret = MyHttpUtils.sendPost("http://localhost:8080/HttpServletTest/BServet", "data="+str);

System.out.println("来自BServlet的返回值:" + ret);

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

```

##### MyHttpUtils类

```java

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.URL;

import java.net.URLConnection;

public class MyHttpUtils {

/**

* 向指定 URL 发送POST方法的请求

*

* @param url

*            发送请求的 URL

* @param param

*            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

* @return 所代表远程资源的响应结果

*/

public static String sendPost(String url, String param) {

PrintWriter out = null;

BufferedReader in = null;

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)");

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// 获取URLConnection对象对应的输出流

out = new PrintWriter(conn.getOutputStream());

// 发送请求参数

out.print(param);

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream()));

String line;

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

result += line;

}

} catch (Exception e) {

System.out.println("发送 POST 请求出现异常!"+e);

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result;

}

}

```

#### 2.BServlet部分

接收来自AServlet的数据String,然后通过fastjson包的parseObject方法把字符串转成Stu对象,再取出需要的值

```java

/**

* Servlet implementation class AServet

*/

@WebServlet("/BServet")

public class BServet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf-8");

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

if(data == null) {

response.getWriter().append("data为空");

return;

}

Stu stu = JSON.parseObject(data, Stu.class);

System.out.println();

System.out.println("收到请求,学生是: " + stu.getName());

response.getWriter().append("收到请求,学生是: " + stu.getName());

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

活动选择

D14554. 活动选择 时间限制:1.0s 内存限制:256.0MB 代码提交间隔:1分钟(现在可以提交) 输入文件名:test.in 输出文件名:test.out 问题描述 假设有一个需要使用某一资源的n个活动组成的集合S,S&…

怎样安装联想慧盾

1.如果是刚买的新计算机里面什么都没有,必须要有联想慧盾盘.2.在启动时,按F4键进行安装,按F10键进行卸载.3.联想慧盾安装过程:T1 200000G NTFS 902(暂…

我爸开车撞人

国庆收假回来的最后一天,我哥给我发消息,给我发了个视频,里面里面有一辆救护车,救护车在呼呼呼的发出声音。然后我以为是我哥出了什么事,就打电话过去,我哥着急的说,是爸妈开车撞人了。之后我打…

Adobe CTO:Android将超预期获50%份额

Adobe首席技术官凯文•林奇近日在《财富》杂志的采访中表达了他对Android操作系统的看法和期望。按照官凯文•林奇的预测,Android将超过业界的预期,在未来半年内将其智能手机份额提升至50%。Adobe凯文•林奇表示,苹果iPhone和黑莓手机的市场份…

女士怎么就不适合PhP呢,女人可以不美丽,但不能不智慧

相信世界上的所有30女人都有一个梦想,那就是希望自己能够有“闭月羞花,沉鱼落雁”的容貌。可是,上天不会将这倾国倾城的美貌平均分到每一个女人身上,而且,假如世界上所有30女人都拥有同样出众的容貌,也就没…

898 C. Phone Numbers

传送门 [http://codeforces.com/contest/898/problem/C] 题意 题意比较难理解直接看样例就知道了,给你个n接下来n行,每行包括一个名字和号码的数量,还有具体的每个号码 让你整理他的电话本,使得一个人的号码不能有重复&#xff0c…

嵌入式行业需要什么样的技术人才?

关注「嵌入式大杂烩」,选择「星标公众号」一起进步!来源 | 巧学模电数电单片机嵌入式行业需要什么样的技术人才?仔细观察各种招聘的岗位要求吧,无非是两方面。1)通用要求比如什么学历,多少年工作经验&#…

oracle临时表空间地址,Oracle认证:详解OracleTemp临时表空间处理方法

临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当oracle里需要用到sort的时候,PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序,同…

消除VIM光标闪烁

2019独角兽企业重金招聘Python工程师标准>>> VIM光标闪烁比较影响人读代码的心情,消除光标闪烁,在配置文件中写下set gcra:block-blinkon0 保存并重启VIM 即可消除光标闪烁。 转载于:https://my.oschina.net/tonyyang/blog/10240

java异常个人理解

废话不说先贴图 所有的异常和错误都继承与Throwable类,它的下面又分为两大子类。 1.Error(uncheck) Error,错误。它是java程序中不被捕获的错误,并且总是不被控制。 例如:OutOfMemoryError 2.Exception(check) Exception,异常。所有的异常类都…

华为专家助你1个月拿下物联网高工认证,首次提供全方位就业指导!

物联网职业方向主要包括研究型岗位、研发型岗位、技术型岗位和技能型岗位4类:技能型岗位:工作内容主要是系统部署实施、运维管理等技术支持服务。技术型岗位:工作内容主要是负责物联网系统规划、设计、集成、技术咨询。研发型岗位&#xff1a…

小型机oracle命令,Oracle小型机如何选型

Oracle小型机如何选型我们知道服务器在选型时具备以下五个原则:高性能、高可靠、高可扩展、安全性以及可管理性等。而实际上,不同的应用程序对服务器硬件的需求也有所不同。我们将针对Oracle目前的产品系列,分析其对不同应用系统的需求符合程…

linux 每日学一点《明明白白配置lilo启动引导器》

明明白白配置lilo启动引导器怎样配置好lilo文件?LILO 是Linux 自带的一个优秀的开机启动管理程序,它可以开机时启动Linux,PC/MS-DOS,DR DOS,OS/2,Windows 95,Windows NT,386BSD, SC…

openstack添加热添加硬盘并识别

假定在虚拟机当中添加了磁盘,但是虚拟机没有识别出来;如何识别出来 可以使用命令 echo - - - >/sys/class/scsi_host/host0/scan 使用后就可以识别出来了 ###增加两块硬盘 默认是不会识别 [rootcompute1 ~]# fdisk -l Disk /dev/sda: 53.7 GB, 536870…

php获取linux是几核的,linux下怎么查看机器cpu是几核的

linux下怎么查看机器cpu是几核的?linux下查看机器是cpu是几核的几个cpumore /proc/cpuinfo |grep "physical id"|uniq|wc -l每个cpu是几核(假设cpu配置相同)more /proc/cpuinfo |grep "physical id"|grep "0"|wc -lcat /proc/cpuinfo…

我的自学编程之路!

大家好,我是写代码的篮球球痴昨晚上打车回家,接我的滴滴司机是一个年纪比较大的大姐,她说她儿子毕业了,但是找不到好的工作,就报名参加了编程培训,培训费两万多。我就问,那谁给他学费&#xff0…

鹰眼拓扑锁定跟踪 网络管理一目了然

为什么要在网管软件中引入“鹰眼”的概念? 企业网管经常遇到的问题是:为什么业务人员访问生产系统(例如ERP等)速度非常慢,甚至无法访问?邮件系统无法使用?下载数据时总是无法连接&#xff…

读工作31年退休的同事离职信有感

大家好,我是写代码的篮球球痴,下面的文章是我的朋友痞子衡写的。大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡不讲技术,跟大家随便唠唠嗑。这周五,痞子衡收到了一位来自恩智浦深圳分公司同事的离职信…

winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...

远程连接Oracle数据库的配置文件及sql语句近期,应朋友的要求,用C#语言开发了一个winform应用程序,要求的是连接到远程的Oracle数据库,用惯了SQL Server的我突然有点懵,然后通过一个简单的笔记来记录下对应的坑。连接本…

Silverlight 计时器

代码 publicpartialclassMainPage : UserControl{inti 1;TextBlock myTextBlock;publicMainPage(){ InitializeComponent(); myTextBlock newTextBlock(); myTextBlock.Loaded this.StartTimer; myTextBlock.Margin newThickness(30); LayoutRoot.Children.Add(myTextBlock);}p…