網(wǎng)站包括 商家博客,個人博客,論壇,新聞等
設(shè)計采用了MVC模式,具體調(diào)用的時候采用了命令模式
數(shù)據(jù)操作層Model中,例如;BlockDAO,TopicDAO,ResponseDAO,UserDAO等。
里面封裝了一個對象所有的數(shù)據(jù)操作
視圖/傳輸層 View 例如BlockDTO,TopicDTO等,主要是對象的屬性
jsp用它來顯示,dao用它作為DTO
最后就是控制層 Controll 控制層的類都繼承了Service接口
里面有一個方法
execute(ServletContext context, HttpServletRequest request,
HttpServletResponse response) {
}
,因為使用命令模式,后面會說明
例如 ManageBlock, ManageTopic等
主要是接收請求然后調(diào)用DAO,把結(jié)果返回給jsp
調(diào)用的時候,我采用的是命令模式
一個所有請求的總?cè)肟赟ervlet被影射到controll.do;他獲取Service的類名,然后
實例化這個類,調(diào)用對應(yīng)的方法
例如 ../controll.do?Service=ManageBlock&action=save
String Name = request.getParameter("Service");
if (Name == null||Name.equals("")){
ErrorView error=new ErrorView("系統(tǒng)獲取Service錯誤。");
request.setAttribute("error",error);
request.getRequestDispatcher(Constant.ErrorPage).forward(request,response);
}
String serviceName = "aill.bbs.controll." + Name;
try {
Class serviceClass = Class.forName(serviceName);
Service service = (Service) serviceClass.newInstance();
boolean isSuc = service.execute(this.getServletContext(), request,
response);
}catch(Exception e){}
下面說說安全架構(gòu):
網(wǎng)站采用J2EE的身份認證系統(tǒng),通過對不同路徑的權(quán)限限制來做到不用角色具有不同操作捐獻
例如:bbs/user/* 下主要是普通用戶的操作權(quán)限
想新建帖子的時候,請求地址是 bbs/user/insertTopic.jsp
bbs/blockAdmin/*主要是板塊管理員的權(quán)限
bbs/bbsAdmin/* 下是論壇管理員的權(quán)限
bbs/sysAdmin/* 下主要是系統(tǒng)管理員的權(quán)限
最后再說說緩存,
緩存的內(nèi)容主要是數(shù)據(jù)源,所有板塊分類,所有板塊的信息[因為這些內(nèi)容不多,而且使用
比較頻繁];還緩存了最新的N個帖子,和點擊率最高的N個帖子;
另外還緩存了N[差不多是每個板塊前5頁的]個帖子點擊數(shù)
因為緩存主要有兩類,一個是只讀,一種是讀寫。數(shù)據(jù)源就屬于只讀的,點擊數(shù)就屬于讀寫的
我設(shè)計了兩個緩存接口,一個CacheRObject,一個CacheRWObject
CacheRObject里有個init()和 get(key)方法,
init()當(dāng)然是初始化或者更新緩存的時候用 get方法就是獲取被緩存的對象
CacheRWObject里有init(),save()和get(key)方法
這里多出來的save()就是把緩存里的內(nèi)容更新到sql數(shù)據(jù)庫中
具體要緩存什么東西,只要寫一個類繼承CacheRObject,或者CacheRWObject
例如
publicclass BlockKindCache implements CacheRWObject{
HashMap cache=new HashMap();
int size;//還有其他一些屬性,
init(){調(diào)用dao獲取初始化的內(nèi)容}
save(){//保存}
get(key){//獲取}
}
緩存的屬性設(shè)置都是些在cache.xml配置文件中,包括緩存大小,要更新那些緩存對象
更新的間隔等等
服務(wù)器啟動的時候,獲取這些設(shè)置,初始化緩存;
同時服務(wù)器關(guān)閉的時候把所有CacheRWObject類型緩存中的內(nèi)容保存到數(shù)據(jù)庫
---其實做這個網(wǎng)站前我從來沒做過什么大的java項目,在jdon中也只是一個潛水者,通過這個網(wǎng)站真的學(xué)了很多東西,在這里要特別感謝bang大哥和其他各位jdon的兄弟,
說實在的這個網(wǎng)站還有很多自己不滿意的地方,希望大家一起交流一起進步
哦,網(wǎng)站地址:www.cityxiu.com 大家可以去看看
還有bang大哥,我把咱們jdon的logo放到我們論壇的下面了,算是做點貢獻吧