Reason:Default Web. XML Configuration
<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>
all requests to the site go through the struts2 filter, which means that Ckfinder related requests are struts2 intercepted, resulting in requests for servlets that are not ckfinder configured.
<servlet > <servlet-name>ConnectorServlet</servlet-name> <servlet-class>com.ckfinder.connector . Connectorservlet</servlet-class> <init-param> <param-name>xmlconfig</param-name> ; <param-value>/WEB-INF/ckfinder.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </ini t-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <URL-PATTERN>/CKFINDER2.4/CORE/CONNECTOR/JAVA/C Onnector.java </url-pattern> </servlet-mapping>
Workaround: Implement STRUTS2 filter, judge whether Ckfinderde request, if is release, otherwise the default struts2 way continue to go down. Some of the code is as follows:
Import Org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter;public class MyStrutsInterceptor Extends Strutsprepareandexecutefilter {public void DoFilter (ServletRequest req, servletresponse Res, Filterchain chain) throws IOException, servletexception { httpservletrequest request = (httpservletrequest) req; String URI = Request.getrequesturi (); string[] Ckfarr = Uri.split ("/ckfinder2.4/core/connector/java/*/"); int arraylen = ckfarr.length; if (Arraylen >= 2) { Chain.dofilter (req, res); } else { super.dofilter (req, res, chain); }}}
Original link: http://www.iyuze.cn/article/485.html
Integration of STRUTS2 and Ckfinder (Java edition)