网站包括 商家博客,个人博客,论坛,新闻等
设计采用了MVC模式,具体调用的时候采用了命令模式
数据操作层Model中,例如;BlockDAO,TopicDAO,ResponseDAO,UserDAO等。
里面封装了一个对象所有的数据操作
视图/传输层 View 例如BlockDTO,TopicDTO等,主要是对象的属性
jsp用它来显示,dao用它作为DTO
最后就是控制层 Controll 控制层的类都继承了Service接口
里面有一个方法
execute(ServletContext context, HttpServletRequest request,
HttpServletResponse response) {
}
,因为使用命令模式,后面会说明
例如 ManageBlock, ManageTopic等
主要是接收请求然后调用DAO,把结果返回给jsp
调用的时候,我采用的是命令模式
一个所有请求的总入口Servlet被影射到controll.do;他获取Service的类名,然后
实例化这个类,调用对应的方法
例如 ../controll.do?Service=ManageBlock&action=save
String Name = request.getParameter("Service");
if (Name == null||Name.equals("")){
ErrorView error=new ErrorView("系统获取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){}
下面说说安全架构:
网站采用J2EE的身份认证系统,通过对不同路径的权限限制来做到不用角色具有不同操作捐献
例如:bbs/user/* 下主要是普通用户的操作权限
想新建帖子的时候,请求地址是 bbs/user/insertTopic.jsp
bbs/blockAdmin/*主要是板块管理员的权限
bbs/bbsAdmin/* 下是论坛管理员的权限
bbs/sysAdmin/* 下主要是系统管理员的权限
最后再说说缓存,
缓存的内容主要是数据源,所有板块分类,所有板块的信息[因为这些内容不多,而且使用
比较频繁];还缓存了最新的N个帖子,和点击率最高的N个帖子;
另外还缓存了N[差不多是每个板块前5页的]个帖子点击数
因为缓存主要有两类,一个是只读,一种是读写。数据源就属于只读的,点击数就属于读写的
我设计了两个缓存接口,一个CacheRObject,一个CacheRWObject
CacheRObject里有个init()和 get(key)方法,
init()当然是初始化或者更新缓存的时候用 get方法就是获取被缓存的对象
CacheRWObject里有init(),save()和get(key)方法
这里多出来的save()就是把缓存里的内容更新到sql数据库中
具体要缓存什么东西,只要写一个类继承CacheRObject,或者CacheRWObject
例如
publicclass BlockKindCache implements CacheRWObject{
HashMap cache=new HashMap();
int size;//还有其他一些属性,
init(){调用dao获取初始化的内容}
save(){//保存}
get(key){//获取}
}
缓存的属性设置都是些在cache.xml配置文件中,包括缓存大小,要更新那些缓存对象
更新的间隔等等
服务器启动的时候,获取这些设置,初始化缓存;
同时服务器关闭的时候把所有CacheRWObject类型缓存中的内容保存到数据库
---其实做这个网站前我从来没做过什么大的java项目,在jdon中也只是一个潜水者,通过这个网站真的学了很多东西,在这里要特别感谢bang大哥和其他各位jdon的兄弟,
说实在的这个网站还有很多自己不满意的地方,希望大家一起交流一起进步
哦,网站地址:www.cityxiu.com 大家可以去看看
还有bang大哥,我把咱们jdon的logo放到我们论坛的下面了,算是做点贡献吧