最近有个项目下需要接收POST过来的XML数据包,在struts中的Action方法中,调用request.getInputStream() 发现无法读到任何数据。
以下是POST数据的程序代码:
URL url = new URL(urlBuf);
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("POST"); httpURLConnection.setConnectTimeout(5000);
httpURLConnection.setReadTimeout(5000);
httpURLConnection.connect();
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
httpURLConnection.getOutputStream(), "GBK"));
out.write(word);
out.flush();
这个是读取程序代码:
BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine())!=null){
sb.append(line);
}
开始还以为是犯了什么低级错误,不断调试查找原因,无果。baidu上搜索了下,众说纷纭,也没有很好的解决方案。我也左思右想,文件上传也是在Action立面处理的,组件肯定用到inpputStream一点问题没有,没可能这里不行,后来灵光一闪,在POST程序中加入:
httpURLConnection.setRequestProperty("content-type", "text/html");
,测试成功!
根据以上现象,我们不难看出struts对没有指定content-type的request请求,封装时候作了一些处理,导致无法在Action中获取request.getInputStream() 和 request.getReader()。
分享到:
相关推荐
在Struts2中实现文件上传通常包括以下几个步骤: 1. 创建HTML表单:表单应使用`POST`方法提交,并且`enctype`属性设为`multipart/form-data`。例如: ```html <form action="fileUpload.action" method="POST" ...
后端服务器可以使用Spring Boot、Struts2、Spring MVC等框架处理来自Android的请求。服务器接收到数据后,进行业务逻辑处理,再将结果返回给Android客户端。 四、使用第三方库OkHttp OkHttp是一个高效的HTTP客户端...
如果参数包含在POST请求体中,比如在一个表单提交或JSON数据中,你需要使用`getInputStream()`或`getReader()`来读取请求体。对于JSON数据,通常会用到Jackson或Gson库进行解析: ```java import ...
Struts2文件上传是Java Web开发中常见的功能,主要用于让用户在网页上上传文件到服务器。Struts2作为一款流行的MVC框架,提供了便捷的方式来处理文件上传请求。在本篇文章中,我们将深入探讨Struts2文件上传的核心...
在这个主题中,我们将深入探讨如何在Struts1中实现图片上传功能。首先,我们需要了解图片上传的基本流程,包括前端表单设计、后端接收与处理以及文件存储。 1. **前端表单设计** 在HTML页面中,我们需要创建一个...
在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人资料中的图片或文档。本篇文章将深入探讨Struts2如何实现文件上传,并提供相关的知识点。 **一、Struts2文件上传原理** 在Struts2中,文件上传...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户提交的数据或者提供资源下载的服务时。本篇文章将深入探讨Struts2中如何实现文件的上传与下载。 一、文件上传 在Struts2中,文件上传主要依赖于...
2. 在服务器端,使用Servlet或JSP接收POST请求。通过`HttpServletRequest.getInputStream()`获取输入流,并创建`BufferedReader`以读取流中的内容。每行数据代表一个表单字段,直到遇到边界标识(以`--`开头和结尾)...
当用户在表单中选择文件并提交时,Struts框架会使用特定的动作类来处理请求,并通过ActionForm对象接收文件数据。这里涉及的关键组件包括`<form>`标签、`<input type="file">`以及Struts的配置文件。 1. **表单创建...
Struts框架是一个基于MVC...首先,我们需要在Struts配置文件(struts-config.xml)中定义一个Action,用于处理图片上传的请求。这个Action需要指定一个对应的ActionForm,用来接收表单提交的数据。例如: ```xml ...
这些数据通常封装在`HttpServletRequest`对象中,可以通过`request.getParts()`或`request.getInputStream()`方法获取。同时,`Servlet`需要处理文件的保存,包括文件名的处理(防止路径遍历攻击)、文件类型的检查...
为了处理文件上传,我们还需要在HTML表单中使用`enctype="multipart/form-data"`属性,并指定一个文件输入控件: ```html <form action="upload.do" method="post" enctype="multipart/form-data"> 上传图片" />...
这里需要注意的是,`list`集合中的元素类型是`FormFile`,这是因为Struts框架使用`FormFile`类来表示上传的文件。此外,我们还需要提供`getList`和`setList`方法来获取和设置特定索引位置的文件对象。 ##### 3. ...
以下是如何在Struts中使用它的步骤: #### 1.1 添加依赖 首先,确保在你的项目中引入了Commons-Fileupload和Commons-io的库。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>commons-...
示例中使用了Struts2标签和jQuery库来实现AJAX请求。 ###### JSP页面 JSP页面首先通过Struts2标签库定义了一个表单,用户可以通过点击提交按钮发送异步请求。页面中还包含了导入jQuery库的脚本,并定义了一个用于...
此外,为了提高性能,可以使用多线程解析大文件,或者将解析后的数据缓存到内存或数据库中,避免一次性加载整个Excel文件。 综上所述,基于SSH框架上传及解析Excel文件涉及到的技术点包括:Spring的文件上传支持、...
在Struts2中,我们通常会创建一个Action类来处理用户请求。对于文件上传,Action类需要继承`org.apache.struts2.actions.upload.FileUploadAction`基类,并且需要处理`multipart/form-data`类型的请求。 创建上传...
在更复杂的项目中,我们可能会使用Struts2或Spring MVC等框架,它们提供了Action类来处理请求。Action类的工作原理与Servlet类似,只是封装了更多的业务逻辑和模型绑定。 最后,JSP(JavaServer Pages)通常用于...
同时,使用框架如Spring MVC或Struts2可以简化文件上传的实现,提供更丰富的功能和错误处理机制。 总之,文件上传是Java Web开发中的常见需求,通过Servlet API,我们可以轻松实现这一功能。这个"JAVA_servlet的...
在实际项目中,我们可能还会结合使用框架,如Spring MVC或Struts2,它们提供了更方便的文件上传支持。此外,为了提升用户体验,我们还可以引入前端库如jQuery Form或Dropzone.js来处理进度显示和错误处理。 总之,...