用struts2寫完了後臺,但是突然說要加一個文本編輯器,想當然就用FCK了。
經過上網搜索N邊文章后,再經過N+1此失敗后,終於成功配上FCK。
界面,功能的都沒有問題,但最重要的一項,卻因為STRUST2的原因而出了問題,
顯示器前的讀者可能已經知道是XX問題,
沒錯,就是圖片上傳問題。
於是乎繼續上網搜索。。。。。。。。。。。。。。。。。。。。。
幾萬個結果都是修改web.XML
<filter> <filter-name>struts2</filter-name> <filter-class>com.mcar.util.MyStrutsFilterDispatcher</filter-class> </filter> <!-- FilterDispatcher 用来初始化 strtus2 并且处理所有的 web 请求 --> <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> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
這個方法當然是沒有問題,完全能實現FCK圖片上傳。
但問題就在於我的後臺已經寫完,我的所有路徑連接不是不帶後綴的。
如果用上述方法修改,那麼我的連接: admin/login 就要變成 admin/login.action
後臺都不知有多少個這要的連接,一個個改,那要改到什麽時候,並且我也不想一個個文件去修改。
所以我就想有沒有其他方法可用,繼續上網搜索。。
可惜結果千篇一律。
好,靠人不如靠自己。閉目冥想。。。。。。。一不小心就差點睡著了
好,廢話不多說。
不知各位是否留意到我上面的XML
<filter> <filter-name>struts2</filter-name> <filter-class>com.mcar.util.MyStrutsFilterDispatcher</filter-class> </filter>
filter-class 已經改變指向,變成了我自己修改的Class.
下面再來看一下這個class
public class MyStrutsFilterDispatcher extends FilterDispatcher { /** *struts2的攔截器與fck 上傳文件時衝突 *重寫struts2的攔截器,增加了判斷,如果是fck的編輯器上傳文件,不進行攔截。 * 判斷路徑是否有fckeditor 實現在fckeditor下的操作不進行攔截 */ @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { String url = ((HttpServletRequest)req).getRequestURI(); if (url.indexOf("fckeditor") < 0) { super.doFilter(req, res, chain); } else { chain.doFilter(req, res); } } }
重寫了strut2 的攔截器。
因為FCK所有的文件,我們都是放在fckeditor目錄下。
所以所有fckeditor的操作都不會受影響
以上就是本人對於Fck 與 struts2 衝突的看法。
也是基於自身項目需求出發的,如果各位兄弟姐妹有什麽意見的話。
歡迎指正。但是請不要惡意攻擊。