`

JForum学习(转)

阅读更多
JForum研究
JForum.java可以称为是jforum的引擎,它继承自net.jforum.JForumBaseServlet类,并间接的继承了HttpServlet。当第一次请求该应用的时候,servlet容器将加载该类,并调用其初始化方法init(ServletConfig config),并调用service方法处理请求。(但最好配置成加载应用的时候就初始化该类)
一、init(ServletConfig config)
(一)  调用其父类init(config)方法
该方法主要职责是加载主要配置文件,配置jfreemarker的模板引擎,并保存到net.jforum. JForumExecutionContext类。
详细内容包括:
1.获取servletContext路径;
2.判断应用开发模式;
3.设置log4j文件路径;
4.调用ConfigLoader.startSystemglobals(appPath)加载全局变量文件SystemGlobals.properties以及用户自定义的配置文件,例如,mysql.properties文件。
5.调用ConfigLoader.startCacheEngine()启动缓存引擎
获取缓存引擎实现类,SystemGlobals.getValue(…)
加载并初始化缓存引擎类
获取、加载并实例化可缓存的对象(主要是repository包下的类,如ForumRepository),同时将缓存引擎实例注入到可缓存的对象中。
6.创建freemark的Configuration类实例,并进行相应设置
templateCfg.setTemplateUpdateDelay(2);
templateCfg.setSetting("number_format", "#");
templateCfg.setSharedVariable("startupTime", new Long(new Date().getTime()));
String defaultPath = SystemGlobals.getApplicationPath() + "/templates";
FileTemplateLoader defaultLoader = new FileTemplateLoader(new File(defaultPath));
templateCfg.setTemplateLoader(defaultLoader);
调用ModulesRepository.init(SystemGlobals.getValue(ConfigKeys.CONFIG_DIR)),加载modulesMapping.properties模块映射文件
7.调用this.loadConfigStuff()方法,加载其他属性文件
ConfigLoader.loadUrlPatterns(),加载urlPattern.properties文件
I18n.load();加载国际化文件
Tpl.load(SystemGlobals.getValue(ConfigKeys.TEMPLATES_MAPPING)),加载templatesMapping.properties文件
BBCodeRepository.setBBCollection(new BBCodeHandler().parse());其加载并处理了bb_config.xml文件
8.调用JForumExecutionContext.setTemplateConfig(templateCfg)
(二)  调用父类startApplication()方法
1.SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_GENERIC));加载generic_quries.sql文件
2.SystemGlobals.loadQueries(SystemGlobals.getValue(ConfigKeys.SQL_QUERIES_DRIVER));加载相应数据库的sql文件
3.String filename = SystemGlobals.getValue(ConfigKeys.QUARTZ_CONFIG);
4.SystemGlobals.loadAdditionalDefaults(filename);
5.加载任务调度文件quartz-jforum.properites
6.ConfigLoader.createLoginAuthenticator();
7.创建net.jforum.sso.DefaultLoginAuthenticator对象,并注册到SystemGlobals对象中。
8.ConfigLoader.loadDaoImplementation();
9.加载并初始化net.jforum.dao.mysql.MysqlDataAccessDriver类,该类是访问各种DAO入口。
10. ConfigLoader.listenForChanges();
11. ConfigLoader.startSearchIndexer();
12. ConfigLoader.startSummaryJob();
(三)  调用ForumStartup.startDatabase()方法
创建DBConnection实例
(四)  获得数据库连接DBConnection.getImplementation().getConnection()
(五)  获取net.jforum.JForumExecutionContext 的对象ex = JForumExecutionContext.get()并进行相关设置ex.setConnection(conn);JForumExecutionContext.set(ex);
(六)  调用ForumStartup.startForumRepository()
加载论坛主要信息,包括ForumDAO, CategoryDAO, ConfigDAO的相关信息以及论坛的总体数据(loadUsersInfo()如用户总数,loadMostUsersEverOnline()最高峰值)
(七)  RankingRepository.loadRanks()
(八)  SmiliesRepository.loadSmilies()
(九)  BanlistRepository.loadBanlist()

二、service(HttpServletRequest req, HttpServletResponse res)方法
(一)  request = new WebRequestContext(req);对reqeust对象进行包装,完成了对url路径的解析,将module、action、paremeter等保存request对象的query文件属性中。
(二)  实例化JForumContext对象forumContext = new
JForumContext(request.getContextPath(),SystemGlobals.getValue(ConfigKeys.SERVLET_EXTENSION), request, response);
(三)  将forumContext注册到JForumExecutionContext
ex = JForumExecutionContext.get();ex.setForumContext(forumContext);
JForumExecutionContext.set(ex);
(四)  进一步进行freemarker的配置模板引擎
ontrollerUtils utils = new ControllerUtils();
utils.refreshSession();
context.put("logged", SessionFacade.isLogged());
utils.prepareTemplateContext(context, forumContext);
context为freemarker中的SimpleHash类对象,context是真正的主角,所有需要再页面使用的变量都需放到该对象中。
(五)  调用this.processCommand(out, request, response, encoding, context, moduleClass)
获取moduleClass所对应的Command对象实例
进行请求处理并返回Tamplate对象
调用template.process(JForumExecutionContext.getTemplateContext(), out)进行输出显示
三.几个重要java类
1.   net.jforum.util.preferences.SystemGlobls.java
存储了系统的全局变量,通过该类可以获取SystemGlobals.properties和相关配置文件的值。主要存储内容包括:
defaults = new Properties(),用于存储SystemGlobals.properties中的属性
installation = new Properties(),用于存储额外的属性配置文件,主要是安装jforum时候生成的jforum-custom.conf文件。
additionalDefaultsList = new ArrayList(),用于记录所加载过的附加的属性文件名。
queries = new Properties(),用于存储sql语句
transientValues = new Properties()存放瞬时变量
objectProperties = new HashMap(),存储对象
2.   net.jforum.ConfigLoader.java
加载forum配置文件的通用工具类。主要方法及作用如下:
startSystemglobals(String appPath)
该方法调用了SystemGlobals的方法加载了SystemGlobals.properties、jforum-custom.cof、mysql.properties文件。
startCacheEngine()
实例化缓存引擎对象、实例化可缓存的对象(repository包下的类以及SessionFacade类)、将缓存引擎对象注入到可缓存的对象中。
loadModulesMapping(String baseConfigDir)加载 ModulesMapping.proerties。
loadUrlPatterns(),加载urlPattern.properties文件,解析保存到UrlPatternCollection类中
createLoginAuthenticator(),创建登陆验证对象,登记到SystemGloble.java对象中

分享到:
评论

相关推荐

    JForum3 jforum java 开源论坛 论坛

    JForum3 jforum java 开源论坛 论坛

    JForum论坛数据库表结构.rar

    1、附件关系表JFORUM_ATTACH 2 2、附件详细信息表JFORUM_ATTACH_DESC 2 3、附件配置限定关系表JFORUM_ATTACH_QUOTA 2 4、封锁表JFORUM_BANLIST 2 5、标识表JFORUM_BANNER 3 6、书签表JFORUM_BOOKMARKS 3 7、...

    jforum3.0所需要的jar包

    jforum3.0所需要的jar包

    jforum功能说明

    JForum是著名的开源论坛,支持多达数十种的多国语言,其中包括简体中文。JForum功能强大,界面美观,加上代码结构清晰,而且采用的是BSD授权,不必担心不必要的版权纠纷。可以说JForum是论坛二次开发的绝佳选择。 ...

    jforum漏洞利用源代码

    jforum漏洞利用源代码

    jforum 源码

    JForum 开源代码,是很好的freeMaker学习素材。

    Jforum论坛数据库架构

    Jforum论坛数据库架构Jforum论坛数据库架构

    Jforum数据库

    JForum - Java论坛系统 数据库表结构,如:附件关系表JFORUM_ATTACH,附件详细信息表JFORUM_ATTACH_DESC,用户分组表JFORUM_GROUPS等表结构说明,如帖子表JFORUM_POSTS说明: 名称 字段名 字段类型 字段说明 帖子...

    jforum开源的论坛文档

    jforum开源的论坛文档jforum开源的论坛文档jforum开源的论坛文档

    JForum3 完整项目

    jforum 完整源代码,从svn上 导出 没有任何修改

    JForum数据库ER图

    JForum 开源论坛系统的 数据库ER图,很详细。

    JForum2.6.2.rar

    1、包含jforum2.6.2的war包、源码包 2、war包可直接放在tomcat的webapps目录下 3、2.6.2版本里面自带汉化功能,在http://localhost:8080/jforum/install.jsp安装时,注意选择中文

    jforum3源代码 数据库

    jforum3源代码数据库

    jforum安装部署指南

    jforum安装部署指南:修改对应的数据库文件JFORUM\WEB-INF\config\database下面。例如:mysql.properties修改其中的数据库信息

    jforum说明文档 源码解析 单点登录 jforum缓存

    jforum的开发文档,以及源码解析 数据库 重要配置文件和包,缓存 权限控制 单点登录

    JForum 2.1.9 源码包.zip

    JForum 是采用Java开发的功能强大且稳定的论坛系统。它提供了抽象的接口、高效的论坛引擎以及易于使用的管理界面,同时具有完全的权限控制、多语言支持(包括中文)、高性能、可自定义的用户接口、安全、支持多...

    jforum论坛图片资源

    用于配置中文jforum,里面包含各种语言的图片文件,将其中的zh_CN目录复制到jforum安装目录下的templates\default\images。就可以显示中文图片

    Jforum二次开发成果

    Jforum二次开发成果 Jforum 二次开发 eclipse 给予JForum 2.1.8开发的一个小论坛。 增加了很多功能。(子论坛、主页、热门帖子、推荐帖子等)

    jforum+ckeditor整合案例

    jforum与ckeditor整合,替换自带的编辑器

    JForum_SSO_-_JForum单点登陆原理与配置

    对于我们已有的WEB应用中的用户,若该用户已经登陆,并通过 联结迁移到JForum页面时,JForum要能够识别该用户已经登陆(不需要二次登陆)才不会让用户感到别扭(对用户来说,就好像使用的是同一个系统似的)。...

Global site tag (gtag.js) - Google Analytics