離線環境搭建:TOMCAT + MySQL
第一步:安裝部署
1、 去http://www.jforum.net/download.jsp網站下載jforum的釋出包。
2、 安裝mysql資料庫。為了解決論壇出現的中文亂碼問題,可以透過手動修改配置檔案或者在安裝mysql時設定編碼為utf8,
可以避免頁面中顯示亂碼。安裝好mysql後,進入>mysql狀態輸入:CREATE DATABASE JForum DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3、 將jforum釋出包複製到D:/apache-tomcat-6.0.16/webapps目錄下即可。安裝配置jforum可以透過兩種方式實現,手動修改配置檔案 或者透過頁面提示資訊安裝步驟。為避免出錯,我們選取自動安裝的方式進行。
啟動TOMCAT服務後,透過瀏覽器訪問http://localhost:8080/jforum/install.jsp依照提示資訊配置好所需資訊,一路next。安裝完成之後訪問http://localhost:8080/jforum將會出現論壇首頁。
第二步:分析JFORUM框架中配置檔案
1、 zh_CN.properties檔案中配置頁面中顯示的中文常用漢字。cmd下可以透過native2ascii -reverse zh_CN.properties a.properties命令對其反編碼,開發者可以配置自己需要的頁面中需要顯示常量資訊,編輯儲存後再透過native2ascii a.properties zh_CN.properties 在編碼回ascii。
2、 modulesMapping.properties檔案中描述了模組名與實現該模組功能的java類的對應關係。
3、 locales.properties檔案在SystemGlobals.properties檔案中被配置載入,locales.properties 檔案中配置各種國家支援的語言。locales.properties檔案在ConfigAction.java中被讀取。
4、 webapps/jforum/WEB-INF/config/database/generic/generic_queries.sql 檔案中配置資料庫查詢語句而該sql檔案又在SystemGlobals.properties檔案中被配置載入。
SystemGlobals.properties檔案中配置的變數資訊在ConfigKeys.java類檔案中配置對應的常量字串。可以透過 String q = SystemGlobals.getSql(”XXX”)方式去獲得需要的配置好的sql語句。I18n.getMessage(”XXX”)方式可以在 頁面中或者類中獲得zh_CN.properties配置檔案中配置的中文常量
5、 templatesMapping.properties配置檔案配置相關的頁面對應檔案。templatesMapping.properties檔案中配置的變數資訊在TemplateKeys.java類檔案中配置對應的常量字串。
6、 jforum-custom.conf配置檔案為有關資料庫資訊的檔案,可以透過手動去修改,該檔案為透過自動方式安裝配置jforum時產生。
7、 urlPattern.properties配置檔案為相關的action配置引數。
第三步:開發常用的包說明
1、 net.jforum.view.admin目錄和net.jforum.view.forum目錄下為存放的action檔案,action檔案中去呼叫dao介面對應的方法。
2、 net.jforum.dao目錄下檔案為資料庫操作介面類檔案。
3、 net.jforum.dao.generic目錄下檔案為與資料庫互動的類檔案,即介面的具體實現。
4、 net.jforum.util.preferences目錄下的檔案為比較重要的幾個常量配置類以及配置檔案讀取類。
5、 net.jforum.entities目錄下檔案為論壇中各個物件實體。
第四步:重要的類說明
1、 ConfigLoader.java 類檔案載入各個配置檔案。
2、 ConfigKeys.java類檔案中配置SystemGlobals.properties檔案中配置的變數資訊
3、 TemplateKeys.java類檔案中配置templatesMapping.properties檔案中對應的頁面資訊 action中呼叫時透過this.setTemplateName(XX)去實現跳轉,透過this.context.put(”message”, message)方式實現向頁面set物件資訊供頁面呼叫。
4、 SystemGlobals.java類檔案為一個讀取相關配置檔案獲得相關配置資訊的幫助類。
5、 DataAccessDriver.java類檔案為建立dao實體的一個抽象類,透過XXXDAO um = DataAccessDriver.getInstance().newXXXDAO()方式去例項化dao物件。
6、 GenericDataAccessDriver.java類檔案為DataAccessDriver抽象類檔案的具體實現類,建立DAO物件的類與資料庫進行互動。
7、 JForumExecutionContext.getConnection().prepareStatement(String sql) 透過此種方式在DAO中去建立PreparedStatement物件。然後由該物件執行資料庫操作獲得結果。
第五步:測試DEMO
1、 透過修改配置檔案modulesMapping.properties類新增一個模組。可以新增一個自己的測試DEMO模組,在該配置檔案末尾新增如下程式碼myTest=net.jforum.test.MyTestAction 。作為該模組的處理類。
2. 在templatesMapping.properties檔案中新增: myTest.addTest = myTest_add.htm myTest.listTest = myTest_list.htm 此檔案對映action和result 模板的關係,表明執行後跳轉的頁面對應關係。
3. 在urlPattern.properties中新增: myTest.add.0 = myTest.list.0 = 此檔案設定每個action引數.我們這action無引數。
4. 修改net.jforum.util.preferences.TemplateKeys 類,新增: public static final String MYTEST_ADD = “myTest.add”; public static final String MYTEST_LIST = “myTest.list”; 引號裡面的對應的字串常量要與templatesMapping.
properties檔案中定義對應頁面的屬性保持一致性。透過定義該資訊,可以在action中去set其對應的跳轉頁面資訊。
5. 參照第二步第1條提示修改a.properties檔案後,編輯儲存後再透過native2ascii a.properties zh_CN.properties 在編碼回ascii檔案格式。
6、 編輯header.htm頁面新增如下程式碼,新增“我的測試”超級連線
- <img src=”${contextPath}/templates/${templateName}/images/icon_mini_members.gif” alt=”[Members]” />
- <a id=”latest2″ class=”mainmenu” href=”${JForumContext.encodeURL
- (”/myTest/addList”)}”>${I18n.getMessage(”myTest”)}
- </a>
7、 上面部分為測試demo跳轉正常的測試,如果要與資料庫進行互動,需要在另行參照如下步驟進行:
a)、資料庫中增加一張測試表供測試使用。
b)、修改zh_CN.properties新增需要在頁面顯示的測試表欄位中文資訊。(步驟略)
c)、在net.jforum.dao目錄下增加一測試類DAO介面檔案TestDAO.java 以及net.jforum.dao.generic目錄下的測試介面實現類GenericTestDAO.java 內部實現該測試物件的一系列與資料庫互動的方法。
d)、在net.jforum.entities目錄下增加測試試題物件的javabean檔案。
e)、在WEB-INF/config/database/generic/generic_queries.sql檔案中增加有關測試實體資料庫互動的資料庫指令碼。
f)、完善MyTestAction.java 類檔案中的list方法。內部實現與之對應的查詢方法,並將結果物件返回到頁面。
PS:如果用的是Oracle資料庫 只要修改jforum-custom.conf 貼一份oracle的配置:
- #Installation specific configuration options
- #Mon Mar 12 12:54:53 CST 2007
- dao.driver=net.jforum.dao.oracle.OracleDataAccessDriver
- database.connection.dbname=zjport
- database.connection.driver=oracle.jdbc.OracleDriver
- database.connection.host=192.168.180.25
- database.connection.implementation=net.jforum.PooledConnection
- database.connection.password=action
- database.connection.pool.max=50
- database.connection.pool.min=5
- database.connection.pool.timeout=120
- database.connection.port=1521
- database.connection.string=${database.connection.string_thin}
- database.connection.string_local=jdbc/:oracle/:oci/:${database.connection.username}/${database.connection.password}@${database.connection.dbname}
- database.connection.string_thin=jdbc/:oracle/:thin/:${database.connection.username}/${database.connection.password}@${database.connection.host}/:${database.connection.port}/:${database.connection.dbname}
- database.connection.username=operation
- database.driver.name=oracle
- database.support.autokeys=false
- database.support.subqueries=true
- dbencoding=utf-8
- forum.link=http/://localhost/:8080/JForum.T/
- homepage.link=http/://localhost/:8080
- i18n.board.default=zh_CN
- installed=true
- search.indexing.enabled=true
- user.hash.sequence=348032218c3b45d92e8075662f8b1614