JForum框架結構和主要配置文件說明 – JAVA編程語言程序開發技術文章

第一步:安裝部署
   安裝mysql數據庫。為瞭解決論壇出現的中文亂碼問題,可以通過手動修改配置文件或者在安裝mysql時設置編碼為utf8,
可以避免頁面中顯示亂碼。安裝好mysql後,進入>mysql狀態輸入:CREATE   DATABASE   JForum  DEFAULT   CHARACTER   SET   utf8   COLLATE   utf8_general_ci;
   將jforum發佈包拷貝到D:\apache-tomcat-6.0.16\webapps目錄下即可。安裝配置jforum可以通過兩種方式實現,手動修改配置文件 或者通過頁面提示信息安裝步驟。為避免出錯,我們選取自動安裝的方式進行。
啟動TOMCAT服務後,
第二步:分析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]" />&nbsp;
<a id="latest2" class="mainmenu" href="${JForumContext.encodeURL
("/myTest/addList")}">${I18n.getMessage("myTest")}</a> &nbsp;
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(該文件為通過自動方式安裝配置jforum時產生)  貼一份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

發佈留言