struts2上传文件异常:multipartrequest(jakarta)-[unknownlocation]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struts2上传文件异常:
multipartrequest(jakarta)-[unknownlocation]
Struts2上传文件异常:ng.RuntimeException: Unable to load bean
org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
在测试Struts2权威指南介绍的struts2文件上传,发现如下异常:
ng.RuntimeException: Unable to load bean
org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
再回去仔细看该章节,发现是自己粗心了,忘记加所需要的两个除struts2外的jar文件.所加jar文件所图所示:
Struts2默认使用的是Jakarta的Common-FileUpload的文件上传框架,而struts2的filter拦截了上传文件的动作,拦截器代码是这样写的:
//org.apache.struts2.dispatcher.Dispatcher.java
public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException { // don't wrap more than once
if (request instanceof StrutsRequestWrapper) {
return request;
}
String content_type = request.getContentType();
if (content_type != null &&
content_type.indexOf("multipart/form-data") != -1) {
MultiPartRequest multi =
getContainer().getInstance(MultiPartRequest.class);
request = new MultiPartRequestWrapper(multi, request, getSaveDir(servletContext));
} else {
request = new StrutsRequestWrapper(request);
}
return request;
}
注意MultiPartRequest multi =
getContainer().getInstance(MultiPartRequest.class);这句是上传文件时拦截器实现所需要的,出错的原因是所不到MultiPartRequest.class的实现类.这个类在上传框架jar文件中.这是文件上传fileupload解析器。
因此,如果需要使用Struts2的文件上传功能,则需要在web 应用中增加两个JAR文件,即commons-io-1.4.jar和commons-fileupload-1.2.1.jar。
将这个包或是包的最新版本放
在工程的lib目录下,即解决以上异常问题,成功实现文件的上传.。