今天在Struts2项目中使用Fckeditor上传文件时报如下异常:
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
上网搜了一下,主要是因为与struts2拦截器的拦截发生冲突引起的原因:
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目录下,即解决以上异常问题,成功实现文件的上传。
上传图片时弹出完全警告:
Security error. You probably don't have enough permissions to upload. Please check your server
struts2对request进行了封装,所以当fck的request.getinputStream的时候就会出错.修改的方法就是对filtermapping的路径进行修改。
解决方法如下:
将下面代码中的“/*”
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
改为:“*.action”。
另外,jsp页面上面用到了struts2的tag,那么就要增加一个*.jsp的url-pattern。
如下:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
分享到:
相关推荐
解决上述问题后,你应该能够成功地在Struts2应用中使用FCKeditor上传图片。如果遇到任何错误,建议检查服务器日志,它们通常会提供错误的具体信息,帮助你定位并解决问题。同时,学习并理解Struts2的拦截器机制和...
在使用FCKeditor上传图片时,如果没有正确配置Action,Struts2可能无法识别或处理上传请求。因此,你需要在`struts.xml`文件中为FCKeditor的上传操作创建一个专门的Action,并设置相应的接收路径。 2. **文件上传...
Struts2 和 FCKeditor 的整合是Web开发中一个常见的需求,特别是在需要提供富文本编辑器功能时。FCKeditor是一款强大的开源JavaScript文本编辑器,而Struts2是一个流行的Java Web应用框架。本文将详细讲解如何将...
FCKeditor2.6 上传图片报错解决方案 用FCKeditor上传图片时出现XML request error:OK(200)错误。终结解决方案。 替换fckeditor\editor\filemanager\browser\default\js下面的fckxml.js
首先,为了在Struts2项目中使用Fckeditor,我们需要将其下载并引入到项目的类路径中。这通常包括添加Fckeditor的JAR文件以及相关的CSS和JavaScript资源。Fckeditor的资源文件通常包含在`fckeditor`目录下,我们需要...
struts2下的FCKeditor插件,解决了兼容问题,例子见本人上传的其他资源
在Struts2中配置FCKeditor,首先需要在项目的类路径下添加FCKeditor的库文件,包括JavaScript文件和相关的CSS样式表。这些文件通常可以从FCKeditor的官方网站下载得到,包含fckeditor.js、fckconfig.js等核心文件。 ...
### Struts2项目中JSP页面使用FCKeditor详解 #### 一、引言 FCKeditor是一款功能强大的在线富文本编辑器,广泛应用于各种Web应用程序中,特别是那些需要用户输入格式化文本的场景。在Struts2项目中集成FCKeditor...
最后,在JSP页面中使用Struts2的`s:textarea`标签,通过配置属性来指定FCKeditor。 4. **配置FCKeditor**:可以通过配置FCKeditor的配置文件(通常为fckconfig.js)来定制编辑器的行为,例如设置默认字体、字号、...
Struts和FCKeditor是两种在Web开发中广泛使用的开源工具。Struts是基于MVC(Model-View-Controller)架构的Java Web框架,而FCKeditor则是一个强大的富文本编辑器,允许用户在Web页面上进行类似Word的文本编辑。 ...
- **编辑器配置**:在页面中使用FCKEditor,需要配置编辑器的路径、宽度、高度、语言等属性,以及与Struts2 Action的交互参数。 5. **文件上传**:FCKEditor支持文件上传功能,这需要在Struts2中配置文件上传拦截...
Struts2和FCKeditor是两个在Web开发中常见的开源工具,它们的结合使用能创建出功能丰富的信息发布系统。在这个实例中,我们将深入探讨如何利用这两个技术来构建一个信息发布的平台。 **Struts2框架** Struts2是...
在使用FCKEditor这款强大的富文本编辑器时,有时我们需要自定义上传文件的路径,使其成为绝对路径,以便更好地管理和访问资源。FCKEditor默认情况下,上传文件的路径通常是相对路径,这可能在多服务器环境或者需要...
集成FCKeditor到SSH2项目涉及多个环节,包括引入必要的Jar包、配置`web.xml`、设置属性文件、在JSP中使用编辑器,以及处理文件上传。理解这些步骤并正确配置,可以让你在SSH2项目中充分利用FCKeditor的强大功能,...
【FCKeditor文件上传漏洞及利用 - File-Upload-Vulnerability-in-FCKEditor1】 本文主要探讨了FCKeditor(现称为CKeditor)中的PHP文件上传模块存在的安全漏洞,允许攻击者绕过文件类型检查,将恶意PHP代码上传到...
NULL 博文链接:https://jumpman.iteye.com/blog/299240
Struts2与FCKeditor的结合,体现了Web开发中前后端分离的理念,Struts2处理后端逻辑,FCKeditor负责前端用户界面的交互。这种组合在小型项目中很常见,既简化了开发流程,又提高了用户体验。 为了运行Struts2 BBS...