最近,遇到了这个问题,使用FckEditro上传图片时,出现了 下标越界异常。根据分析,得出结论,原来是struts2的拦截器把Fck的上传Servlet拦截了,经过了struts2对HttpServletRequest的包装,FCK已经无法正确的拿到正版的HttpServletRequest。
搜索了一下,发现不少人遇到这个问题,而解决方案是修改web.xml中
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
,把其修改为:
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*.action</url-pattern> </filter-mapping>
这样的话,隐患很大,问题很大,而且在2.1中会报错。具体不多说,上正题。
解决思路:就是让这个拦截器不拦截Fck的Servlet。
步骤:
1.下载struts2.1的源代码,拿出StrutsPrepareAndExecuteFilter.java ,自己在项目新建一个包,把这个类放进去。
2.修改web.xml中原来的过滤器类路径,改为自己的这个。如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>com.hs.fck.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
3.修改StrutsPrepareAndExecuteFilter.java,只需修改doFilter方法即可。如下:底色为绿色是修改的代码。也就是判断一下这个请求的servlet路径,如果是FCK的,就不执行包装。
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if(request.getServletPath().equals("/fckeditor/editor/filemanager/connectors"))
{
chain.doFilter(request, response);
}else{
try {
prepare.setEncodingAndLocale(request, response);
prepare.createActionContext(request, response);
prepare.assignDispatcherToThread();
if ( excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
chain.doFilter(request, response);
} else {
request = prepare.wrapRequest(request);
ActionMapping mapping = prepare.findActionMapping(request, response, true);
if (mapping == null) {
boolean handled = execute.executeStaticResourceRequest(request, response);
if (!handled) {
chain.doFilter(request, response);
}
} else {
execute.executeAction(request, response, mapping);
}
}
} finally {
prepare.cleanupRequest(request);
}
}
}
如有错误,欢迎大家指正。
分享到:
相关推荐
在使用FCKeditor上传图片时,如果没有正确配置Action,Struts2可能无法识别或处理上传请求。因此,你需要在`struts.xml`文件中为FCKeditor的上传操作创建一个专门的Action,并设置相应的接收路径。 2. **文件上传...
如果Struts2的filtermapping配置为"/*",可能与ConnectorServlet冲突,此时需要在struts.xml中添加excludePattern常量来解决这个问题。 3. 为了实现图片上传功能,你需要拷贝以下6个jar包到你的Web项目的lib目录下...
Struts2是一个非常流行的...如果遇到任何错误,建议检查服务器日志,它们通常会提供错误的具体信息,帮助你定位并解决问题。同时,学习并理解Struts2的拦截器机制和FCKeditor的工作原理,对于解决这类问题非常重要。
同时,需要返回一个JSON或XML响应,告知Fckeditor上传是否成功。 接下来,我们需要在页面中集成Fckeditor。在JSP页面中,使用以下HTML和JavaScript代码来创建编辑器实例: ```html <%@ taglib prefix="s" uri="/...
将Struts与FCKeditor整合,主要是为了让用户在Web表单中能够方便地编辑和提交富文本内容。这个整合过程主要包括以下几个步骤: 1. **引入FCKeditor库**:首先需要将FCKeditor的JavaScript文件和相关资源(如CSS、...
在Struts2中集成FCKeditor,可以为用户提供一个方便、功能丰富的文本输入界面,从而提升应用的用户体验。 首先,我们需要了解Struts2的基本架构。Struts2的核心是Action类,它负责处理用户的请求,与业务逻辑层交互...
Struts2+FCKeditor-2.3 是一个集成解决方案,旨在为Java开发人员提供一个强大的文本编辑器,以便在Web应用程序中实现富文本输入。FCKeditor是一款开源的JavaScript组件,它允许用户在Web页面中编辑HTML内容,类似于...
解决fckeditor 上传漏洞,类似asp;.jpg asp.jpg
总之,这个"struts2+fckeditor关于信息发布的实例"提供了一个学习如何将Struts2的MVC架构与FCKeditor的富文本编辑功能相结合的好机会。通过实践这个实例,开发者可以更好地理解两者在Web应用中的实际应用,以及如何...
5. **文件上传**:FCKEditor支持文件上传功能,这需要在Struts2中配置文件上传拦截器,设置允许的最大文件大小和类型。同时,需要提供一个Action来接收并保存上传的文件。 6. **安全考虑**:整合过程中需要注意XSS...
struts2下的FCKeditor插件,解决了兼容问题,例子见本人上传的其他资源
FCKeditor2.6 上传图片报错解决方案 用FCKeditor上传图片时出现XML request error:OK(200)错误。终结解决方案。 替换fckeditor\editor\filemanager\browser\default\js下面的fckxml.js
同时,提供的超详细说明配置步骤将帮助开发者快速理解和解决问题。 总的来说,处理FCKeditor的中文问题需要从字符编码、服务器配置和编辑器配置等多个角度入手。理解并掌握这些知识点,将有助于确保FCKeditor在中文...
解决FCKeditor上传中文名问题的常见方法可能包括: 1. **编码设置**:确保服务器和FCKeditor配置文件的编码设置一致,通常为UTF-8,以支持多语言字符。 2. **修改源码**:找到处理文件名的部分,可能在上传函数或...
综上所述,理解FCKeditor的功能和工作原理,熟悉Struts2的配置和拦截器机制,以及如何利用`commons-fileupload.jar`处理文件上传,是解决FCKeditor与Struts2兼容问题的关键。在实际开发中,开发者应仔细阅读`struts2...
### Struts2项目中JSP页面使用FCKeditor详解 #### 一、引言 FCKeditor是一款功能强大的在线富文本编辑器,广泛应用于各种Web应用程序中,特别是那些需要用户输入格式化文本的场景。在Struts2项目中集成FCKeditor...