Web 2.0時代時代的Web項目,,是無論如何也少不了一個在線編輯器的,因此在我們的項目中整合一個Web編輯器就顯得至關重要,。在這里,,我依然以前面的xkland項目為例,來探討在項目中整合FCKeditor的方方面面,。
一,、關于用戶發(fā)表文章的功能設計 用戶發(fā)表文章的功能,大家見過不少,,也用過不少,,最簡單的,莫過于提供一個文本框,,數(shù)據(jù)提交后直接寫入數(shù)據(jù)庫了事,,稍復雜一點的最少也要提供一個輸入標題和選擇分類的功能。當然,,我們也可以把我們的功能設計得更有特色,。在這個示例項目中,我假設開發(fā)的是一個以圖文為中心的網(wǎng)絡社區(qū),,我們每一篇文章都需要用戶在它上傳的圖片中選擇一個作為主題圖片,,那么,在網(wǎng)站首頁的文章列表上,,大家看到的將不僅僅只是一個文字的標題,,還有主題圖片的縮略圖。 先來看看數(shù)據(jù)表的結構,,創(chuàng)建數(shù)據(jù)表的SQL語句如下: CREATE TABLE `topics` (
`id` int ( 11 ) NOT NULL auto_increment, `catalogid` int ( 11 ) NOT NULL , `subject` varchar ( 60 ) default NULL , `content` text , `pictures` varchar ( 2000 ) NOT NULL , `mainpicture` varchar ( 40 ) NOT NULL , `userid` int ( 11 ) NOT NULL , `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP , `lastedittime` timestamp NOT NULL default ‘ 2007-01-01 00:00:00 ‘ , `lastreplytime` timestamp NOT NULL default ‘ 2007-01-01 00:00:00 ‘ , `visitcount` int ( 11 ) NOT NULL , PRIMARY KEY (`id`), KEY `subject` (`subject`), KEY `userid` (`userid`), KEY `time` (`time`), KEY `lastreplytime` (`lastreplytime`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 |
在這里,,我們還沒有Web編輯器可用,,暫時用一個文本區(qū)域代替。 二,、初識FCKeditor 下載并解壓縮到fckeditor文件夾,,打開該文件夾,我們可以看到如下文件及目錄: 1 < script src = " fckeditor/fckeditor.js " ></ script >
2 < script language = " javascript " > 3 window.onload = function () { 4 var oFCKeditor = new FCKeditor( ‘myTextArea‘ ) ; 5 oFCKeditor.BasePath = " fckeditor/ " ; 6 oFCKeditor.ReplaceTextarea(); 7 } </scrip>
Width:設置編輯器的寬度,,默認為100% Height:設置編輯器的高度,,默認值為200 ToolbarSet:設置編輯器的工具條集合,默認值為"default",,稍后會講到怎樣自定義工具條 Value:設置顯示在編輯器中的內容(包含HTML),,默認值為空 BasePath:編輯器的目錄,一定要設置正確,,否則編輯器會找不到它需要的文件,,在本例中,由于我們直接將fckeditor目錄放到項目的根目錄下,,因此設置為"fckeditor/" CheckBrowser:設置是否檢測瀏覽器,,默認為true DisplayErrors:設置是否顯示錯誤信息,默認為true 此外,,F(xiàn)CKeditor類還有一個集合屬性Config[ key ] = value,,通過該集合屬性,,我們可以進行一個更高級的設置,如設置默認語言,、更換皮膚等等,。 綜上所述,,下面的代碼將重新設置編輯器的高和寬,、將工具條設置為基本工具條,將皮膚設置為office2003樣式: <script src="fckeditor/fckeditor.js"></script>
<script language="javascript"> window.onload = function(){ var oFCKeditor = new FCKeditor( ‘myTextArea‘ ) ; oFCKeditor.BasePath = "fckeditor/"; oFCKeditor.Width = "800"; oFCKeditor.Height = "300"; oFCKeditor.ToolbarSet = "Basic"; oFCKeditor.Config["SkinPath"] = "skins/office2003/"; oFCKeditor.ReplaceTextarea(); } </script> 效果圖: 四,、通過FCKeditor.java整合FCKeditor 使用JavaScript整合FCKeditor,,我們很快就能看到編輯器的效果,并進行文章的編輯,。但是,,在需要和服務器端進行交互的時候(比如上傳圖片),就會出錯,。因此,,我們不得不在服務器端做一點手腳。這里,,我們需要使用的是FCKeditor.java,,其最新版本是2.3,還是在剛才的下載頁面,,找到下載鏈接,,如下圖: 將下載文件解壓,我們可以看到有doc目錄,,有src目錄,,甚至還有一個build.xml,讓我們可以重新構建項目,;但是,,這些我們統(tǒng)統(tǒng)都不需要,我們只要web\WEB-INF目錄下的東西,,在這個目錄下,,提供了一個web.xml,同時在lib目錄下提供了兩個.jar文件,,這便是全部,。看到這里,,大家肯定能夠想到,,Java Web項目的靈魂是什么?那就是web.xml,。我們所要做的,,就是把lib目錄下的兩個.jar文件拷貝到我們項目的src/main/webapp/WEB-INF/lib下,,同時將web.xml中的內容整合到我們項目的src/main/webapp/WEB-INF/web.xml中。 web.xml中的內容很簡單,,只定義了兩個Servlet映射,,并且對上傳文件的目錄和允許哪些文件上傳、拒絕哪些文件上傳做了設置,,如下: <servlet>
<servlet-name>SimpleUploader</servlet-name> <servlet-class>com.fredck.FCKeditor.uploader.SimpleUploaderServlet</servlet-class> <init-param> <param-name>baseDir</param-name> <param-value>UploadFiles/</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>AllowedExtensionsFile</param-name> <param-value></param-value> </init-param> <init-param> <param-name>DeniedExtensionsFile</param-name> <param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value> </init-param> <init-param> <param-name>AllowedExtensionsImage</param-name> <param-value>jpg|gif|jpeg|png|bmp</param-value> </init-param> <init-param> <param-name>DeniedExtensionsImage</param-name> <param-value></param-value> </init-param> <init-param> <param-name>AllowedExtensionsFlash</param-name> <param-value>swf|fla</param-value> </init-param> <init-param> <param-name>DeniedExtensionsFlash</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Connector</servlet-name> <url-pattern>/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SimpleUploader</servlet-name> <url-pattern>/editor/filemanager/upload/simpleuploader</url-pattern> </servlet-mapping> 然后,,我們就可以拋開JavaScript,而在服務器端使用標簽來創(chuàng)建Web編輯器了,。先在EditPosts.jsp中引入標簽庫: <%@ taglib uri="http:///tags-fckeditor" prefix="FCK" %>
再在原來放textarea的地方,,放如下代碼: <FCK:editor id="EditorDefault" basePath="fckeditor/"
imageBrowserURL="fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" linkBrowserURL="fckeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" flashBrowserURL="fckeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" imageUploadURL="fckeditor/editor/filemanager/upload/simpleuploader?Type=Image" linkUploadURL="fckeditor/editor/filemanager/upload/simpleuploader?Type=File" flashUploadURL="fckeditor/editor/filemanager/upload/simpleuploader?Type=Flash"> This is some <strong>sample text</strong>. You are using <a href="http://www./fckeditor/">FCKeditor</a>. </FCK:editor> 刷新頁面,又見編輯器,,此時,,可以順利的上傳文件了。整合編輯器的任務到此完成,。下一步,,就是怎樣對編輯器進行更多的控制了。 |
|
來自: goldbomb > 《FCKeditor》