太原工业学院毕业论文
List
topicService.findTopTopic(forum.getName(), 5);
map.put(forum, topicList); }
页面设计如图5-5所示
图5-5
图5-
5.2.3.2主题列表显示
单击“版面标题”命令,页面跳转到主题列表页。
详细设计:
1. 根据传过来的参数forumId调用IForumService的findForum方法获取版面信息forum
2. 根据forum中版面名调用ITopicService的findTopicByPage方法查出该版面首页的主题列表,将forum存储到session中
3. 计算该版面的主题总页数,因为测试,暂时使用每页显示2个主题 long topicResult=forum.getTopicCount(); if(topicResult%2==0){
topicTotalPage=topicResult/2;
}else{ }
33
topicTotalPage=topicResult/2+1;
太原工业学院毕业论文
//将主题总页数信息存储到session中
session.setAttribute(\
5.2.3.3发表新主题
在版面页, 单击“发表新主题”,页面将跳转到发表新主题页面 前台采用开源的富文本编辑器kindeditor3.6替代原本的普通的textarea 前台调用kindeditor的javascript代码: 详细设计:
1.判断验证码是否正确,若错误,则立即返回发表新主题页面 2.判断当前用户是否已经登录
3.从session中取出forum的版面信息,将与topic有关的信息封装到topic中 4.处理附件上传
4.1 在struts.xml配置文件中设置了上传的根目录 代码如下:
/attachment
4.2 Action类中的处理代码:
if(upload!=null){
//获取在配置文件中配置的根目录
34
太原工业学院毕业论文
String
parent=ServletActionContext.getServletContext().getRealPath(parentPath);
File file=new File(parent);
//判断指定文件夹是否存在,若不存在就新建一个 if(!file.exists()){ }
//以从1970年到现在的秒数作为上传文件的文件名
String upName=System.currentTimeMillis()+uploadFileName .substring(uploadFileName.indexOf('.')); File upFile=new File(file, upName);
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(upFile));
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(upload)); //设置缓冲区提高文件上传效率 byte[] buf=new byte[1024]; while(bis.read(buf)!=-1){ }
Attachment att=new Attachment(); att.setFileName(upName); att.setFileSize(upload.length());
att.setPath(parentPath.substring(1)+\att.setTopic(topic);
attService.saveOrUpdate(att); //关闭资源 bos.flush(); bis.close();
35
file.mkdir();
bos.write(buf);
太原工业学院毕业论文
bos.close(); }
5.调用ITopicService的add方法保存主题
6.更新版面forum中的信息,更新session中forum和topic对应的值,给用户加 相应的积分,更新用户信息,并记录获得积分的记录
5.2.3.4回复主题
在主题页,点击“回复主题”命令,将进入发表回复页面 详细设计:
1. 判断用户是否已经登录
2. 调用IReplyService接口中的add方法增加回复,更新主题信息 3. 给用户增加相应的积分,更新用户信息,并记录获得积分的记录
5.2.3.5实时回复通知
在论坛首页和主题列表页以及主题页中,采用ajax技术实现了实时回复通知,一旦有其他用户对你所发表的主题进行回复,马上网页标签页上的标题就会显示“您的主题有新回复”
Dwr配置:
前台核心代码: function checkReply(){
36
太原工业学院毕业论文
//直接向后台发送异步请求,检测是否有新回复
}
dwr_reply.findNewReply(checkReplyCallBack);
//回调函数
function checkReplyCallBack(value){ }
//设置每隔3分钟检测一下是否有新回复 setInterval(\
后台在CheckNewReply类中调用findNewReply方法处理这个异步请求
var title=document.getElementsByTagName('title'); if(value!=0){
title.item(0).firstChild.nodeValue=\您的主题有新回复\
}else{ }
console.log(\暂时没有新回复\
5.2.3.6加好友
在主题页中,点击“加为好友”命令,可以加你感兴趣的帖子的作者为好友 核心技术:ajax dwr框架
前台核心代码: