Struts上传文件request为空系列问题
来源:互联网 发布:小苍的淘宝店铺 编辑:程序博客网 时间:2024/05/10 20:23
问题一:upload.parseRequest(request)得到的items为空
private HttpServletRequest request; FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(request); #request有值,但items却为null
原因:
web.xml中的过滤器: <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
struts2过滤时,会改变request的类型,由HttpServletRequest变成MultiPartRequestWrapper
解决:
第一步:加一个类
public class RequestParseWrapper extends JakartaMultiPartRequest { public void parse(HttpServletRequest servletRequest, String saveDir) throws IOException { } }
第二步:struts.xml配置文件加如下
<!-- upload filt httpreqest process--> <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="myRequestParser" class="com.dirsir.base.frame.RequestParseWrapper" scope="default" optional="true" /> <constant name="struts.multipart.handler" value="myRequestParser" />
这样配置之后引来了问题二。
问题二:action中通过getUpload()获取jsp页面中的表单数据<input type="file" name="upload"/>
得到的files为空
jsp中:<input type="file" name="upload"/> action中:List<File> files = getUpload(); #files为空
原因:
struts2的过滤器:StrutsPrepareAndExecuteFilter源代码解析
由于重写了RequestParseWrapper 类,并把里面的内容置为空,影响了action中对file类型的表单数据“upload”的获取。
解决:
在action中采用HttpServletRequest的方式获取“upload”,即:
private HttpServletRequest request; FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(request);
然后再对items进行分情况处理。
注意:action中获得HttpServletRequest四种方式
import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 在action中获得HttpServletRequest四种方式 */ public class Login extends ActionSupport implements ServletRequestAware,RequestAware{ private HttpServletRequest req1=null; private HttpServletRequest req2=null; private HttpServletRequest req3=null; private HttpServletRequest req4=null; public String execute(){ HttpServletRequest req2 = ServletActionContext.getRequest(); req4 = (HttpServletRequest) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST); return "success"; } public void setServletRequest(HttpServletRequest request) { req1=request; } public void setRequest(Map<String, Object> request) { req3 = (HttpServletRequest) request; } }
0 0
- Struts上传文件request为空系列问题
- Android+struts上传文件时upload.parseRequest(request)为空
- struts 上传文件request
- 解决post提交表单(文件上传) request.getParameter 取值为空的问题
- kindeditor上传文件在SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题 .
- struts2 上传文件 parseRequest()解析request为空 解决办法
- struts2 上传文件 parseRequest()解析request为空 解决办法
- struts2 上传文件 parseRequest()解析request为空 解决办法
- struts2 上传文件 parseRequest()解析request为空 解决办法
- IE8 文件上传文件为空的问题
- 遇到问题-----uploadify上传文件ServletFileUpload.isMultipartContent(request)为false
- struts上传文件问题
- uploadify集成struts2上传文件为空的问题
- Spring boot上传文件时MultipartFile为空问题
- php curl上传文件$_FILES为空问题
- Spring boot上传文件时MultipartFile为空问题
- 解决文件上传时upload.parseRequest(request)得到的List为空
- sturts2和kindeditor的文件上传,upload.parseRequest(request)得到的List为空
- linux下mege88单片机的IAP在应用编程
- Smooth Signatures
- Learning Java(2)——简介
- C语言函数名与函数指针详解
- OAuth2.0认证和授权原理
- Struts上传文件request为空系列问题
- Mysql 开启Federated引擎的方法
- Java byte数据类型详解
- 使用BadgeView轻松实现消息数目
- winform 控件闪烁的问题
- 集合工具箱代码开源
- Just a hook
- 软件设计中的单例模式开发
- Activemq学习笔记---Topic及JNDI使用