当前位置: 首页 > news >正文

jforum架构和主要配置文件的说明

第一步,安装,请查看我的另一片文章“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]" />&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  贴一份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
v

相关文章:

  • Axure--一个很好的原型设计软件
  • flex程序初始化顺序
  • [C/C++] C/C++中数字与字符串之间的转换
  • flex datagrid 设置超链接
  • 攻克vue路由
  • 如何设置光驱启动
  • 三个臭皮匠顶个诸葛亮的随机森林算法!
  • String类的几个方法
  • 捡石子---贪心算法(huffman)
  • HTML特殊字符编码对照表
  • Flex中ArrayCollection的复制(克隆)
  • mysql表的复制
  • 作用域与作用域链
  • 批量修改SQL数据库字段值
  • [C#7] 1.Tuples(元组)
  • 5、React组件事件详解
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • angular学习第一篇-----环境搭建
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Bootstrap JS插件Alert源码分析
  • Fundebug计费标准解释:事件数是如何定义的?
  • Golang-长连接-状态推送
  • JDK9: 集成 Jshell 和 Maven 项目.
  • leetcode46 Permutation 排列组合
  • MySQL几个简单SQL的优化
  • PAT A1050
  • SAP云平台里Global Account和Sub Account的关系
  • spring-boot List转Page
  • Theano - 导数
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 通过git安装npm私有模块
  • 一文看透浏览器架构
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • elasticsearch-head插件安装
  • 进程与线程(三)——进程/线程间通信
  • 数据可视化之下发图实践
  • ​2021半年盘点,不想你错过的重磅新书
  • # include “ “ 和 # include < >两者的区别
  • #、%和$符号在OGNL表达式中经常出现
  • #QT项目实战(天气预报)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (三)elasticsearch 源码之启动流程分析
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)认识微服务
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [.NET]桃源网络硬盘 v7.4
  • []我的函数库