簡單解決Struts2和FckEditor衝突的方法

最近用了struts2.0以後,fck上傳圖片老是彈出警告:java

Security error. You probably don't have enough permissions to upload. Please check your server web

什麼緣由呢?app

通常狀況下跟你的web.xml的配置有關係。通常的配置是jsp

<filter-mapping>   url

    <filter-name>struts2</filter-name>   spa

    <url-pattern>/*</url-pattern>   插件

</filter-mapping> code

這樣作,使得struts2的過濾器也做用到了fckeditor的上傳URL,從而引起衝突。server

一、第一種解決的辦法是修改你的web.xml文件。xml

<filter-mapping>   

    <filter-name>struts2</filter-name>   

    <url-pattern>*.action</url-pattern>   

</filter-mapping> 

只讓過濾器對加有.action後綴的路徑有效,若是須要攔截.jsp,加上*.jsp就好了。

可是,若是項目中定義了能夠不加後綴,那麼這種方式就沒有效果了。這也是我如今碰到的問題。怎麼辦?

二、第二種解決辦法是將fckeditor的上傳方式修改爲struts2的上傳方式。

網上有位網友還作了struts2的fck插件,很是複雜,不建議這麼作,代價太大了。

三、最簡單的方法,能夠有效的解決這個問題,是下面的方法。

自定義一個struts2的過濾器,將配置換成本身自定義的過濾器。固然這個過濾器要繼承StrutsPrepareAndExecuteFilter.java。

而後重寫doFilter方法:

Java代碼
  1. public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException{   
  2.     HttpServletRequest request = (HttpServletRequest)req;   
  3.     if("/fckeditor/editor/filemanager/connectors/fileupload".equals(request.getRequestURI())){   
  4.    chain.doFilter(req,res);   
  5.    }eles{   
  6.      super.doFilter(req,res,chain);   
  7.    }   
  8. }  

經過簡單的重寫就解決了fckeditor上傳和struts2衝突的問題。

 

本文來源於OECP社區http://www.oecp.cn/hi/yongtree/blog/566

相關文章
相關標籤/搜索