java servlet 报文_【java】利用servlet解析报文,上传文件

bfe045e09dd80753bd6aa8fc2211b6d0.png

由于工作需要,需要做一个excel导入的功能,这就需要上传excel文件到服务器,服务器做逻辑判断此文件是否是excel文件,接着利用poi的api就可以将内容转化为利用jdbc插入到数据库,达到批量数据导入的功能。

废话不多说,这其中上传文件有两种实现方式,一种是直接接到输入流,解析这个输入流,将里面的报文数据剔除,将剩下的文件写入到文件流,放到服务器上,这个是很早之前的解决思路,我们已经很少使用了,它不停的在操作数组,但是网上研究这个输入流的文章不多,写下来,没准对有兴趣的童鞋来说也是一件好事。二是我们采取的是apache的旗下一款上传组件,利用两个jar包,即可解决所有上传问题,还能够表单文件混合提交,多文件上传等,这里都将做说明,除此之外,我还从网上寻找了我认为对对此有兴趣的童鞋感兴趣的别人的优秀文章,希望大家能取其精华。

1,解析报文

所谓报文,就是指你的浏览器上传文件的时候,要把文件进行封装,此时如果你将输入流,在servlet里输出的话,里面会在输入流最前面加入文件标示信息,比如

------WebKitFormBoundaryoTPsEUl96q3GhQ0o

Content-Disposition: form-data; name="name"

------WebKitFormBoundaryoTPsEUl96q3GhQ0o

Content-Disposition: form-data; name="file2"; filename="text.txt"

Content-Type: text/plain

------WebKitFormBoundaryoTPsEUl96q3GhQ0o--

这些信息,就是所谓的输入流里读出来的,采用如下代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中,我们可以使用 HttpClient 库来发送 HTTP 请求,并使用 HttpPost 类来发送 POST 请求。为了查看 POST 请求的报文,我们可以在发送请求之前,将请求体打印出来。示例代码如下: ```java import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class MyHttpClient { public static void main(String[] args) throws IOException { // 创建 HttpClient 实例 CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建 HttpPost 请求 HttpPost httpPost = new HttpPost("http://localhost:8080/myServlet"); // 设置请求头 httpPost.setHeader("Content-Type", "application/json"); // 设置请求体 String requestBody = "{\"name\":\"Tom\",\"age\":18}"; StringEntity requestEntity = new StringEntity(requestBody); httpPost.setEntity(requestEntity); // 打印请求体 System.out.println("Request Body: " + requestBody); // 发送请求并获取响应 CloseableHttpResponse httpResponse = httpClient.execute(httpPost); // 处理响应 HttpEntity responseEntity = httpResponse.getEntity(); String responseBody = EntityUtils.toString(responseEntity); System.out.println("Response Body: " + responseBody); // 关闭资源 httpResponse.close(); httpClient.close(); } } ``` 上述代码中,我们使用 HttpClient 库创建了一个 HttpClient 实例,并创建了一个 HttpPost 请求。在设置完请求头和请求体之后,我们通过 System.out.println() 函数将请求体打印出来。当我们发送 POST 请求时,控制台会输出请求体,并打印响应体。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值