4.调用ConfigLoader.startSystemglobals(appPath)加载全局变量文件SystemGlobals.properties以及用户自定义的配置文件,例如,mysql.properties文件。
5.调用ConfigLoader.startCacheEngine()启动缓存引擎
a、获取缓存引擎实现类,SystemGlobals.getValue(…)
b、加载并初始化缓存引擎类
c、获取、加载并实例化可缓存的对象(主要是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(一个Map)属性中。
(二)实例化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对象中
|
相关推荐
* 安装:下载 JForum,创建数据库,创建数据库用户,执行 JForum 数据库创建脚本和初始化数据脚本 * 修改配置文件:SystemGlobals.properties 和 mysql.properties * 部署 jforum.war,启动 jboss 服务器,访问 ...
这个压缩包文件包含了关于Jforum的多个重要知识点,包括配置、初始化流程、处理请求的MVC架构、数据库访问实现、文件监控、缓存机制以及权限控制等内容。下面将对这些主题进行详细阐述。 首先,Jforum的配置是论坛...
- 如果需要特定的CKEditor插件,如图片上传、视频插入等,需要将这些插件的JavaScript文件引入,并在初始化CKEditor时配置启用它们。 5. **处理表单提交** - JForum在处理帖子或回复的提交时,可能需要对富文本...
6. **初始化数据**:访问安装URL,按照向导完成论坛的初始化设置,如管理员账户、默认板块等。 7. **运行论坛**:安装完成后,通过浏览器访问论坛地址,即可开始使用。 对于开发者而言,JForum 2.1.8的源代码是一份...
需要创建一个新的数据库,并将提供的SQL脚本导入以初始化表结构。 7. **数据源连接**:在服务器的配置文件(如Tomcat的`context.xml`或`server.xml`)中,你需要配置数据源连接,包括数据库URL、用户名、密码和驱动...
5. **执行初始化脚本**:运行SQL脚本来创建所需的表结构以及初始化数据。 6. **启动应用服务**:通过命令行或IDE启动jForum应用程序。 7. **访问首页**:在浏览器中输入http://localhost:8080/jforum即可看到论坛...
2.4 数据库操作:使用jforum_dump.sql文件对数据库进行初始化或者更新,确保新增功能所需的数据表和字段存在。同时,对原有的SQL脚本进行修改或扩展,以适应新功能的存储需求。 2.5 测试与调试:在开发过程中,利用...
4. 启动Tomcat,访问JForum的安装页面,根据提示完成论坛的初始化设置。 5. 版面设计:根据需求设计论坛的版块,可以创建多个版块并分配不同的权限。 6. 用户管理:设置用户分组,如管理员、版主和普通用户,定义...
**五、JForum3的数据库初始化** 在安装JForum3时,需要先创建对应的数据库结构。JForum3提供了一个SQL脚本文件(如`schema.sql`),用于在数据库中创建表和索引。在运行应用程序前,需要执行这个脚本,确保数据库已...
6. **初始化论坛**:首次启动应用后,访问JForum的安装URL(通常是服务器地址/jforum/install),按照提示完成论坛的初始化设置,包括管理员账号创建、语言选择等。 四、语言设置 在你提供的文件列表中,有两个与...
6. **初始化论坛**:首次访问解压后的应用URL(如`http://your_server/jforum`),JForum会引导你完成初始化过程,包括创建管理员账户、设置论坛的基本信息等。 7. **测试与使用**:完成初始化后,就可以使用新创建...
4. 运行初始化脚本,创建必要的数据库表结构。 5. 访问Web应用,完成初始管理员账户设置。 ### 4. 源码分析与二次开发 由于JForum是开源的,开发者可以深入研究源码,了解其工作原理,并进行二次开发。这包括但不...
4. **运行与安装**:将WAR文件部署到Tomcat或其他Servlet容器,启动后访问`install`目录进行初始设置,包括创建数据库表、设置管理员账户等。 5. **升级与维护**:若已有旧版本JForum,需按照官方文档进行数据迁移...
6. 初始化安装:通过浏览器访问服务器上的JForum安装地址,按照提示完成安装过程,包括设置语言、论坛信息、管理员账户等。 7. 访问论坛:安装完成后,输入安装时设定的域名和端口,即可访问到全新的JForum论坛。 ...
- 运行位于同一目录下的`<DBNAME>_data_dump.sql`脚本来初始化表中的信息。 ##### 3.2 配置Tomcat - 如果你已经熟悉如何配置Tomcat来运行Java Web项目,则此步骤应该很简单。只需将JForum的WAR包复制到Tomcat的`...
5. 执行数据库脚本:在JForum的`sql`目录下,找到对应数据库类型的脚本文件,如`mysql.sql`,使用数据库管理工具执行该脚本,初始化JForum的表结构。 6. 构建JForum应用:进入JForum的主目录,使用Maven或者Ant(取...
- **初始化流程**:`JForumBaseServlet` 类中定义了 `init` 方法,该方法在Servlet初始化时被调用。在 `init` 方法中完成了以下关键步骤: - 调用父类的 `init` 方法; - 配置日志框架 log4j; - 加载全局配置...