`
waterdh
  • 浏览: 96598 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2 中使用request.getInputStream() 获取POST数据

    博客分类:
  • Java
阅读更多
最近有个项目下需要接收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()。
  
11
1
分享到:
评论
1 楼 d925529 2011-11-11  
小子还不错!

相关推荐

    Struts2文件的上传和下载

    在Struts2中实现文件上传通常包括以下几个步骤: 1. 创建HTML表单:表单应使用`POST`方法提交,并且`enctype`属性设为`multipart/form-data`。例如: ```html <form action="fileUpload.action" method="POST" ...

    Android端使用get post 方法提交数据到服务器demo

    后端服务器可以使用Spring Boot、Struts2、Spring MVC等框架处理来自Android的请求。服务器接收到数据后,进行业务逻辑处理,再将结果返回给Android客户端。 四、使用第三方库OkHttp OkHttp是一个高效的HTTP客户端...

    获取request的参数

    如果参数包含在POST请求体中,比如在一个表单提交或JSON数据中,你需要使用`getInputStream()`或`getReader()`来读取请求体。对于JSON数据,通常会用到Jackson或Gson库进行解析: ```java import ...

    struts2文件上传

    Struts2文件上传是Java Web开发中常见的功能,主要用于让用户在网页上上传文件到服务器。Struts2作为一款流行的MVC框架,提供了便捷的方式来处理文件上传请求。在本篇文章中,我们将深入探讨Struts2文件上传的核心...

    struts1中实现图片上传

    在这个主题中,我们将深入探讨如何在Struts1中实现图片上传功能。首先,我们需要了解图片上传的基本流程,包括前端表单设计、后端接收与处理以及文件存储。 1. **前端表单设计** 在HTML页面中,我们需要创建一个...

    struts2上传文件,个人资料勿下

    在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人资料中的图片或文档。本篇文章将深入探讨Struts2如何实现文件上传,并提供相关的知识点。 **一、Struts2文件上传原理** 在Struts2中,文件上传...

    struts2上传下载

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户提交的数据或者提供资源下载的服务时。本篇文章将深入探讨Struts2中如何实现文件的上传与下载。 一、文件上传 在Struts2中,文件上传主要依赖于...

    档案上传下载

    2. 在服务器端,使用Servlet或JSP接收POST请求。通过`HttpServletRequest.getInputStream()`获取输入流,并创建`BufferedReader`以读取流中的内容。每行数据代表一个表单字段,直到遇到边界标识(以`--`开头和结尾)...

    Struts实现文件的上传下载

    当用户在表单中选择文件并提交时,Struts框架会使用特定的动作类来处理请求,并通过ActionForm对象接收文件数据。这里涉及的关键组件包括`<form>`标签、`<input type="file">`以及Struts的配置文件。 1. **表单创建...

    Struts上传图片生成缩略图

    Struts框架是一个基于MVC...首先,我们需要在Struts配置文件(struts-config.xml)中定义一个Action,用于处理图片上传的请求。这个Action需要指定一个对应的ActionForm,用来接收表单提交的数据。例如: ```xml ...

    flex + servlet 多文件上传

    这些数据通常封装在`HttpServletRequest`对象中,可以通过`request.getParts()`或`request.getInputStream()`方法获取。同时,`Servlet`需要处理文件的保存,包括文件名的处理(防止路径遍历攻击)、文件类型的检查...

    struts1.2实现图片上传

    为了处理文件上传,我们还需要在HTML表单中使用`enctype="multipart/form-data"`属性,并指定一个文件输入控件: ```html <form action="upload.do" method="post" enctype="multipart/form-data"> 上传图片" />...

    struts多文件上传

    这里需要注意的是,`list`集合中的元素类型是`FormFile`,这是因为Struts框架使用`FormFile`类来表示上传的文件。此外,我们还需要提供`getList`和`setList`方法来获取和设置特定索引位置的文件对象。 ##### 3. ...

    struts文件上传 - 两种方式

    以下是如何在Struts中使用它的步骤: #### 1.1 添加依赖 首先,确保在你的项目中引入了Commons-Fileupload和Commons-io的库。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>commons-...

    Struts2和Ajax数据交互示例详解

    示例中使用了Struts2标签和jQuery库来实现AJAX请求。 ###### JSP页面 JSP页面首先通过Struts2标签库定义了一个表单,用户可以通过点击提交按钮发送异步请求。页面中还包含了导入jQuery库的脚本,并定义了一个用于...

    上传及解析excel文件

    此外,为了提高性能,可以使用多线程解析大文件,或者将解析后的数据缓存到内存或数据库中,避免一次性加载整个Excel文件。 综上所述,基于SSH框架上传及解析Excel文件涉及到的技术点包括:Spring的文件上传支持、...

    jsp多文件上传到数据库.doc

    在Struts2中,我们通常会创建一个Action类来处理用户请求。对于文件上传,Action类需要继承`org.apache.struts2.actions.upload.FileUploadAction`基类,并且需要处理`multipart/form-data`类型的请求。 创建上传...

    js异步上传文件

    在更复杂的项目中,我们可能会使用Struts2或Spring MVC等框架,它们提供了Action类来处理请求。Action类的工作原理与Servlet类似,只是封装了更多的业务逻辑和模型绑定。 最后,JSP(JavaServer Pages)通常用于...

    JAVA_servlet的文件上传案例

    同时,使用框架如Spring MVC或Struts2可以简化文件上传的实现,提供更丰富的功能和错误处理机制。 总之,文件上传是Java Web开发中的常见需求,通过Servlet API,我们可以轻松实现这一功能。这个"JAVA_servlet的...

    java上传图片源码

    在实际项目中,我们可能还会结合使用框架,如Spring MVC或Struts2,它们提供了更方便的文件上传支持。此外,为了提升用户体验,我们还可以引入前端库如jQuery Form或Dropzone.js来处理进度显示和错误处理。 总之,...

Global site tag (gtag.js) - Google Analytics