JForum框架结构和主要配置文件说明

学习JForum总结:

环境搭建:TOMCAT+MYSQL

第一步:安装部署

1、去http://www.jforum.net/download.jsp网站下载jforum的发布包。

2、安装mysql数据库。为了解决论坛出现的中文乱码问题,可以通过手动修改配置文件或者在安装mysql时设置编码为utf8,

可以避免页面中显示乱码。安装好mysql后,进入>mysql状态输入:CREATEDATABASEJForumDEFAULTCHARACTERSETutf8COLLATEutf8_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-reversezh_CN.propertiesa.properties命令对其反编码,开发者可以配置自己需要的页面中需要显示常量信息,编辑保存后再通过native2asciia.propertieszh_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类文件中配置对应的常量字符串。可以通过Stringq=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实体的一个抽象类,通过XXXDAOum=DataAccessDriver.getInstance().newXXXDAO()方式去实例化dao对象。

6、GenericDataAccessDriver.java类文件为DataAccessDriver抽象类文件的具体实现类,创建DAO对象的类与数据库进行交互。

7、JForumExecutionContext.getConnection().prepareStatement(Stringsql)通过此种方式在DAO中去创建PreparedStatement对象。然后由该对象执行数据库操作获得结果。

第五步:测试DEMO

1、通过修改配置文件modulesMapping.properties类添加一个模块。可以添加一个自己的测试DEMO模块,在该配置文件末尾添加如下代码myTest=net.jforum.test.MyTestAction。作为该模块的处理类。

2.在templatesMapping.properties文件中添加:myTest.addTest=myTest_add.htmmyTest.listTest=myTest_list.htm此文件映射action和result模板的关系,表明执行后跳转的页面对应关系。

3.在urlPattern.properties中添加:myTest.add.0=myTest.list.0=此文件设置每个action参数.我们这action无参数。

4.修改net.jforum.util.preferences.TemplateKeys类,添加:publicstaticfinalStringMYTEST_ADD="myTest.add";publicstaticfinalStringMYTEST_LIST="myTest.list";引号里面的对应的字符串常量要与templatesMapping.

properties文件中定义对应页面的属性保持一致性。通过定义该信息,可以在action中去set其对应的跳转页面信息。

5.参照第二步第1条提示修改a.properties文件后,编辑保存后再通过native2asciia.propertieszh_CN.properties在编码回ascii文件格式。

6、编辑header.htm页面添加如下代码,添加“我的测试”超级连接

<imgsrc="${contextPath}/templates/${templateName}/images/icon_mini_members.gif"alt="[Members]"/>&nbsp;

<aid="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贴一份oracle的配置

#Installationspecificconfigurationoptions

#MonMar1212:54:53CST2007

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