上一篇文章给大家分享了CKEditor+CKFinder+JSP实现了在线编辑器上传图片的功能,这里在给大家分享一下如何在前面的基础上在struts2下实现这样的功能。
实现与Struts2的整合,整合的过程确实easy.不过实现之后,图片上传不上去,上传之后显示“文件不存在”,然后在网上找了一些资料,经过总结最终实现了这个功能。此问题的原因就是struts2的拦截器,在web.xml中,可以清楚的看到:
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>上面的配置,struts2会拦截所有以"/"开头的URL.
<servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern> </servlet-mapping>现在就很明了了,struts2拦截器会拦截所有以"/"开头的URL,CKEditor的servlet拦截器拦截所有以"
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
第二个办法是:
自己来定义一个CKeditor的过滤器,让它来继承Struts2的过滤器FilterDispatcher,其完整代码是
package cn.edu.csu.software.filters; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.dispatcher.FilterDispatcher; @SuppressWarnings("deprecation") public class FCKFilter extends FilterDispatcher { public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String URI = request.getRequestURI(); String[] uriArray = URI.split("/ckfinder/core/connector/java/*/"); int arrayLen = uriArray.length; if (arrayLen >= 2) { chain.doFilter(req, res); }else { super.doFilter(req, res, chain); } } }上面的方法重写了struts2的过滤器FilterDispatcher中的doFilter方法,执行原理为:获得完整的http url的地址,然后判断URL地址中是否包含CKEditor的servlet拦截规则"/ckfinder/core/connector/java /*/",若包含,struts2就不拦截该URL请求,而直接转发,交给CKEditor的servlet来处理;若不包含,则拦截器拦截该URL请 求,由struts2来处理
<filter> <filter-name>struts2</filter-name> <!-- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> --> <filter-class>cn.itcast.utils.FCKFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>本文参考:何枫网友:http://hefeng1987-net-163-com.iteye.com/blog/1231940