net.sf.hibernate.id包,自定义数据库底层id生成器
TableCustomGenerator同时实现PersistentIdentifierGenerator, Configurable
TableID通过自增,到达最大添加INCREASE方法生成。共有25个TableID静态对象
====================================================================================
bbscs.xml是社区配置文件,可以修改,com.laoer.bbscs.sys包中的SysInfo则是控制此文件的类
====================================================================================
applicationContext.xml:
一个TimerFactoryBean管理着5个TimerTask:
1,boardsCountTask每隔一个小时没有延迟检查帖子和主题数
2,onlineClearTask每隔一个小时延迟一个小时检查在线用户
3,advloadTask每隔半个小时检查广告
4,subscibeSendTask每隔5分钟延迟5分钟[检查是否需要通知搂主]
5,voteUserClearTask每隔24小时没有延迟[todo]
有两个触发器:
1,onlineStatJobCronTrigger每天24小时都触发,检查在线的人
2,sysNumStatJobCronTrigger每天1点触发,检查系统参数
其次,friendService管理好友,voteService管理投票
最后,mySessionFactory载入所有的*.hbm.xml;数据库连接池使用dbcp,里面的配置参数由init.properties文件取得。
=====================================================================================
com.laoer.bbscs.sys:系统配置
>>advloadTask:加载广告的TimerTask
>>AppContext存储整个应用程序的ApplicationContext(ClassPathXmlApplicationContext)
>>过滤器(正规表达式):以支持UBB代码
FilterBuilder接口
RegFilterBuilder使用JDK中的java.util.regex实现
Filter接口
RegexFilter由RegFilterBuilder生成
AutoFilter能在生成实例的同时进行过滤
IMGFilter对“[IMG]”的过滤
其中FilterDirector生成FilterBuilder的各种实现
>>BoardLoadThread加载boardlist的线程[todo]
>>BoardLoadTimerTask加载boardlist的TimerTask
BoardsCountTimerTask计算帖子和主题数量的TimerTask
SubscibeSendTimerTask有人回复时用站内消息或邮件通知的TimerTask
UserOnlineClearTimerTask:在线用户清除TimerTask
VoteUserClearTimerTask:?[todo]
>>缓存使用oscache
ICache接口
SysOSCache中生成GeneralCacheAdministrator(oscache)进行缓存管理
CacheManager:有4个静态对象,每个里面有一个SysOSCache,由CacheFactory用反射生成
BoardsCache版面缓存
PostFileCache帖子缓存[todo]
UserCache用户缓存[todo]
UserFileInPostCache用户上传文件缓存
UserInfoCache用户信息缓存
>>BoardsComparator根据主题数来对版面排序
>>CheckAdminUser管理超级用户的信息,存储在adminiinfo.properties里面
>>Constant常量
>>Forbid封禁的IP以及词组,存储在forbid.xml中
>>IndexTimerTask检索首页的TimerTask
>>NewPost管理最新的帖子,在file/include/newpost.js中存储
>>OnlineStatJob管理在线人数(用户和游客)的QuartzJobBean
>>分页
PageList包装好的分页列表
Pages是一个多功能分页类,能传入文件名(地址)对多种内容进行分页。另外有4种style:
1,首页 上一页 下一页 尾页
2,首页 上一页 下一页 尾页 共 {0} 条 第 {1}/{2} 页
3,首页 上一页 下一页 尾页 共 {0} 条 第 {1}/{2} 页 (与2的参数名不同)
4,首页 上一页 下一页 尾页 共 {0} 条 第 {1}/{2} 页 到?页
>>Queue模拟队列(线程同步)
>>Result结果?[todo]
>>RunTimConstant一个提交队列[todo]
>>SysInfo系统配置
>>SysNumStatJob的QuartzJobBean,包括社区人数,主题数,帖子总数,前一天的统计数据并记录到数据库
>>SysStat记录在file/include下面的sysstat.properties文件中的统计数据,包括帖子数,最新注册过户,最高在线用户数,发生时间,主题数,所有用户数
>>SysUtil有关系统的工具类,n多工具方法
>>UserLevel用户级别
===================================================================================
com.laoer.bbscs.lucene:全文检索[todo:补课!]
DeleteFiles删除文件
FileDocument读文件
HTMLDocument读HTML文件
IndexFiles写索引
IndexHTML
SearchFiles
com.laoer.bbscs.lucene.html:
Entities
HTMLParserConstants
HTMLParser
人间悲剧,完全看不懂
===================================================================================
com.laoer.bbscs.dao:全是DAO接口
===================================================================================
com.laoer.bbscs.dao.hibernate:
DAO实现类,继承org.springframework.orm.hibernate.support.HibernateDaoSupport,使用getHibernateTemplate方法取得HibernateTemplate,里面包装了各种hibernate的方法。
回调:
getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException, SQLException {
Query query = s.createQuery(LOAD_BU);
query.setShort(0, atSite);
query.setLong(1, atBoard);
query.setLong(2, atBoards);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
List list = query.list();
return list;
}
})
===============================================================================
com.laoer.bbscs.business:业务逻辑接口
===============================================================================
com.laoer.bbscs.business.service:业务逻辑实现类,大多数调用DAO
===============================================================================
com.laoer.bbscs.bean:与数据库对应的实体类
===============================================================================
com.laoer.bbscs.web.servlet:
AuthImg生成认证码图片,使用common包里面的Util生成4位认证码,并生成cookie
SysLoadServlet初始化加载所有版面
SysListener监听器,当生成context时,schedule BoardLoadTimerTask和IndexTimerTask[todo]
UserCheck[todo]
================================================================================
web.xml
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/npe.htm</location>
</error-page>
================================================================================
关于认证码图片:JSP中使用<img src="authimg">而/authimg映射到AuthImg Servlet,在servlet中生成图片并从response中输出。并把认证码放进cookie。在LoginAction中从cookie中取得认证码和form中的比较。
================================================================================
社区广播标题写在file/include/bull.html中,其中链接指向bulllist.bbscs
<action input="/error.jsp" name="bullForm" path="/bulllist" scope="request" type="com.laoer.bbscs.web.action.Bull" validate="true">
<forward name="bulllist" path="/bulllist.jsp" />
</action>
从首页点进去的时候虽然没有bullForm,但由于这里配置了bullForm还是会生成bullForm的实例
=================================================================================