📄 comapplication.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! * * 该类主要用于加载全局配置信息 * 控制最上层的全局信息,关于其他,如:BBS的全局信息需要在BBSApplication中获取. * 通过getComApplication可获得相关属性,该全局配置信息将影响整个网站及其他所有部份. * 如email的配置及开启状态,其他相关,待续... */package biz.tbuy.common;import biz.tbuy.common.logs.Elog;import biz.tbuy.common.pool.PoolManager;import biz.tbuy.user.UserAction;import biz.tbuy.user.UserModel;import java.io.Serializable;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import javax.faces.context.ExternalContext;import javax.faces.context.FacesContext;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b><a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b><a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class ComApplication implements Serializable{ // 这里ComApplication使用单态形式,以保证该类在任何时候都能得到引用 private static ComApplication _comApplication = new ComApplication(); // full path private String _servletContextPath; // 全局的上下文路径,(绝对) // display private boolean _register; // 是否开启注册用户 private boolean _login; // 是否允许登录 private boolean _emailRegister; // 是否开启email注册激活 private boolean _validateRegister; // 开/关注册时验证码 private boolean _validateLogin; // 开/关登录时验证码 private boolean _upload; // 是否允许上传文件 // email config private Map<String, String> _conEmail; // admin list private List<String> _admins; // mysetting private Map<String, String> _mySetting; // release private static Map<String, String> _release; // operate the visitors private VisitorsOper _visitorsOper; // auths private Auth _authOper; // ip list private List<String> _disallows; /** Creates a new instance of ComApplication */ private ComApplication() {} /** * 获得本站的全局信息管理器 * @return ComApplication */ public static ComApplication getInstance() { return _comApplication; } /** * 获取系统的全局上下文路径信息,该方法返回的是绝对路径。返回路径可能像这样: * D:/study/web/tbuy 像本站这样,记录该路径主要用于方便读写本地文件. */ public String getServletContextPath() { return _servletContextPath; } /** * 获取当前网站的绝对路径信息,带http的路径信息.像这样本站的这样 * http://www.tbuy.biz/tbuy * @return httpAddress 包含http及域名、上下文路径的信息绝对地址 */ public String getHttpContextPath() { FacesContext fc = FacesContext.getCurrentInstance(); ExternalContext ec = fc.getExternalContext(); String host = ec.getRequestHeaderMap().get("host"); String cPath = ec.getRequestContextPath(); return "http://" + host + cPath; } private void out(Object obj) { System.out.println(obj); } // ------------------------------------------------------------ 全局信息的初始化 /** * 关于系统的全局初始化相关,将所有各部分配置载入ComApplication中, * 可能包含以各部分的初始化:<br> * .初始化数据库连接池<br> * .初始化一般配置configs信息,包含reload<br> * .初始化Email配置信息,包含reload<br> * .初始化总站的Admin列表信息<br> * .初始化系统的个性设置<br> * .初始货版本信息<br> * .初始化在线用户列表_visitors,并启动监测线程<br> * .初始化授权页的配置<br> * .初始化禁止访问的IP列表<br> * @param servletContextPath 网站的本地路径信息,包括上下文路径 */ public void init(String servletContextPath) { _servletContextPath = servletContextPath; initConnection(); initConfigs(); initEmail(); initAdmins(); initMySetting(); initRelease(); initVisitors(); initAuths(); initDisallows(); initUserinfo(); } // ------------------------------------------------------------ 创建连接池 private void initConnection() { try { out("---------------初始化数据库连接池common"); ConfigOper configOper = new ConfigOper(); PoolManager manager = PoolManager.getInstance(); Map<String, String> connConfig = configOper.getPoolConfig(); String pMin = connConfig.get("min").trim(); // 获取最小限制数 String pMax = connConfig.get("max").trim(); // 获取最大限制数 String pFreeTime = connConfig.get("free").trim(); String pBusyTime = connConfig.get("busy").trim(); if (pMin != null) { int min = Integer.parseInt(pMin); manager.setMin(min); } if (pMax != null) { int max = Integer.parseInt(pMax); manager.setMax(max); } if (pFreeTime != null) { long freeTime = Long.parseLong(pFreeTime); manager.setFreeTime(freeTime); } if (pBusyTime != null) { long busyTime = Long.parseLong(pBusyTime); manager.setBusyTime(busyTime); } List<Map<String, String>> dbs = configOper.getConnection(); for (Map<String, String> db : dbs) { String poolId = db.get("id"); String dbDriver = db.get("driver"); String dbUrl = db.get("url"); String dbUser = db.get("name"); String dbPassword = db.get("password"); manager.createPool(poolId, dbDriver, dbUrl, dbUser, dbPassword); } // 启动监测线程 manager.managerStart(); manager.state(); } catch (Exception e) { Elog.log("连接池创建过程中出现错误" + e.getMessage()); } } // ------------------------------------------------------------ 全局“开关” /** * 关于系统全局信息“开关”的初始化及reload * @see biz.tbuy.common.ConfigOper#loadDisplay */ private void initConfigs() { out("---------------load:displays"); ConfigOper configOper = new ConfigOper(); Map<String, Boolean> displays = configOper.loadDisplay(); _register = displays.get("register"); _login = displays.get("login"); _emailRegister = displays.get("emailRegister"); _validateRegister = displays.get("validateRegister"); _validateLogin = displays.get("validateLogin"); _upload = displays.get("upload"); out("register:" + _register); out("login:" + _login); out("emailRegister:" + _emailRegister); out("validateRegister:" + _validateRegister); out("validateLogin:" + _validateLogin); out("upload:" + _upload); } /** * 重新载入系统的配置信息 * @see biz.tbuy.common.ConfigOper#loadDisplay */ public void reloadConfigs() { initConfigs(); } /** * 关于是否允许注册新用户,如果为true,则允许注册新用户, * 如果为false,则不允许注册新用户 * @return true 允许注册新用户,false不允许注册新用户 */ public boolean isRegister() { return _register; } /** * 关于是否允许用户登录系统: * @return true 允许登录,false不允许登录(管理员除外) */ public boolean isLogin() { return _login; } /** * 关于注册帐号的email邮件激活,如果开启该功能,则在用户注册帐号时发送激活邮件给 * 用户所指定的邮箱地址中,以让用户通过点击相关链接激活其帐号。该功能需要配置好 * conEmail.否则将无法发送激活邮件!这样会造成用户无法使用未激活的帐号.<br> * 返回是否开启email激活帐号功能 * @return true 需要进行email激活帐号,false不需要 */ public boolean isEmailRegister() { return _emailRegister; } /** * 关于注册验证,即验证码的开启情况,当开启注册验证时,会在注册页面显示验证码 * 并要求用户填写验证码才能注册用户,有助于防止恶意用户滥注册,默认:false * 验证码保存于session.validateCode中<br> * 获取是否开启进行注册验证,即是否需要进行验证码验证 * @return true 开启注册验证,false未开启 */ public boolean isValidateRegister() { return _validateRegister; } /** * 关于用户的登录验证,如果开启该功能,则在用户登录系统时会提示用户输入验证码, * 以验证用户的登录!默认:false <br> * 获取是否需要进行登录验证 * @return true 需要验证码登录, false 不需要验证码登录 */ public boolean isValidateLogin() { return _validateLogin; } /** * 关于上传文件的开关,如果返回true,则表示允许上传文件(全局)。 * 如果该方法返回false,则所有整站都不允许上传文件。可能会考虑admin * @return true 允许上传文件,false不允许 */ public boolean isUpload() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -