基于JSP留言板课程设计.docx
- 文档编号:8976274
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:24
- 大小:29.26KB
基于JSP留言板课程设计.docx
《基于JSP留言板课程设计.docx》由会员分享,可在线阅读,更多相关《基于JSP留言板课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
基于JSP留言板课程设计
JSP在水一方留言簿设计报告
一需求分析
随着互联网的迅猛的发展,网站给我们带来不少的便利,于此同时,论坛基本是每个网站必有的功能,为用户之间的交流提供的很好的平台。
我通过仔细的分析和规划,本论坛有如下功能:
用户注册,登录,用户信息修改,签写留言,留言查看,回复留言和管理员的普通维护功能等。
这些功能的具体描述如下:
1)用户注册模块:
用户可已成为本论坛的会员,通过表单把用户的相关信息提交给数据库。
2)登录模块:
基本是每个系统必备的模块,本论坛的登录的模块分为两个小模块:
普通用户登录,另一个是管理员登录。
3)签写留言模块:
这是论坛的主要功能之一,用户把自己感兴趣的话题发表到论坛上,与网上的会员进行探讨。
4)查看留言模块:
这也是论坛的主要功能之一,把用户发表的留言逐条,安顺序显示出来。
5)回复留言模块:
这也是论坛的主要功能之一,用户对别的用户发表的留言进行回复。
6)普通的维护模块:
这是给管理员的功能,该功能对那些危害社会风气的留言删除。
7)用户信息修改模块:
用户能对自己的信息进行修改。
二分析和设计(页面和数据库)
设计网站论坛时,首先应该区别是普通用户登录还是管理员登录。
如果是普通用户登录,那么该用户只有查看和回复留言的权限。
如果是管理员登录,则除了具有查看和回复权限外,还用具有管理论坛的权限。
在用户发表留言后,将显示该用户的用户名、性别、留言内容和留言时间等内容。
如果在某个留言有回复内容,则显示出是谁恢复了该篇留言和回复的内容。
另外还能在页面中显示当前的系统的时间和访问权限。
数据库设计
通过以上的分析:
数据库应有四个表,tb_user、td_topic、tb_reply、tb_counter。
由于是个小型的论坛,选择AEESS数据库。
具体各表的设计如下:
1分析得知tb_user表功能的记录用户的信息,具有如下字段:
ID、UserName、PWD、Birthday、Sex、OICQ、
Tel、homepage、address、postcode、Email、status。
2分析得知tb_topic表功能是存放用户发表的留言,具有如下字段:
ID、anthor、face、content、datetime。
3分析得知tb_reply表功能是用于存放用户对每条留言所回复的信息,具有如下字段:
ID、TpoicID、content、replyuser。
4通过分析得知:
tb_counter是记录网站每天的访问次数,有如下两个字段:
accessTime、hit。
5.通过分析,在显示留言的是时候,要用到tb_user和tb_topic两张表,所以要设计一个具有这两张表的一个视图:
首先建立关系如下:
视图如下:
页面设计
1网站的流程体如下:
2各页面功能实现说明:
1)系统提供的服务(top.jsp)
程序的主要实现根据等级设置用户权限,是用脚本言语(javascript)来显示系统的当前时间,并通过
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<%@includefile="connDB.jsp"%>
includepage="counter.jsp"/> <% ResultSetrs_user=stmt.executeQuery("select*fromtb_userwhereusername='"+session.getAttribute("username")+"'andstatus='版主'"); booleaneof=rs_user.next(); %> functionclockon(){ vardate=newDate(); varYY=date.getYear(); varMM=date.getMonth()+1; varDD=date.getDate(); varKK=date.getDay(); varHH=date.getHours(); varmm=date.getMinutes(); varSS=date.getSeconds(); if(MM<10)MM="0"+MM; if(DD<10)DD="0"+DD; if(HH<10)HH="0"+HH; if(mm<10)mm="0"+mm; if(SS<10)SS="0"+SS; switch(KK){ case1: KK="星期一"; break; case2: KK="星期二"; break; case3: KK="星期三"; break; case4: KK="星期四"; break; case5: KK="星期五"; break; case6: KK="星期六"; break; case0: KK="星期日"; break; } varstr_date="系统公告: "+YY+"年"+MM+"月"+DD+"日"+KK+""+HH+": "+mm+": "+SS; if(document.all){ div_date.innerHTML=str_date; } vartimer=setTimeout("clockon()",200); }
<%if(session.getAttribute("username")!
=null){%>
<%}else{%>
<%}%>
<%if(session.getAttribute("username")!
=null){%>
<%}else{%>
<%}%>
<%if(eof){%>
<%}else{
%>
<%if(session.getAttribute("username")!
=null){
out.println("["+session.getAttribute("username")+"]您好!
您不想说点什么吗?
如果想请点击“签写留言”!
");
}else{
out.println("您好!
如果您想说点什么,那么请先注册或登录!
");
}%>
您好!
欢迎访问“在水一方”留言簿!
!
!
已经有[<%=application.getAttribute("count")%>]人访问过本网站!
<%
stmt.close();
con.close();
%>
2)查看留言(index1.jsp)
将所有的;留言记录通过循环显示在客户端,并将某条留言的回复记录和回复者的姓名也显示出来。
如果是登录用户的权限为普通用户,那么该用户的权限极为回复留言。
如果是管理员,那么该用户的权限就是回复和删除留言。
由于涉及到多条记录的显示,我们用了分页显示的方法出来。
定义每个页面显示的记录,通过ResultSet对象计算出总的记录数,通过这两个数据计算总的页数。
主要代码如下:
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
includepage="counter.jsp"/> <% Statementstmt2=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); Statementstmt3=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSetrs=stmt.executeQuery("select*fromv_board"); ResultSetrs_reply=null; ResultSetrs_user=stmt2.executeQuery("select*fromtb_userwhereusername='"+session.getAttribute("username")+"'andstatus='版主'"); System.out.print("查询成功! "); //ResultSetrs_topic=stmt.executeQuery("select*fromtb_topic"); %> ------------------------------------------ <% booleantj=rs_user.next(); Stringstr=(String)request.getParameter("Page"); if(str==null){ str="0"; } intpagesize=5;//每页显示的数据条数 rs.last(); intRecordCount=rs.getRow();//获得记录的总条数 intmaxPage=0; maxPage=(RecordCount%pagesize==0)? (RecordCount/pagesize): (RecordCount/pagesize+1);//得到的是总页数 intPage=Integer.parseInt(str);//当前时第几页 if(Page<1){ Page=1; }else{ if(((Page-1)*pagesize+1)>RecordCount){ Page=maxPage; } } rs.absolute((Page-1)*pagesize+1); for(inti=1;i<=pagesize;i++){ inta=rs.getInt("ID"); %> <%=rs.getString("Sex")%>生 表情: <%=rs.getString("face")%> 10pt"> <%=rs.getString("Email")%>"width="16"height="16"> <%=rs.getString("homepage")%>"width="26"height="20"> <%=rs.getString("OICQ")%>"width="14"height="16"> <%=rs.getString("datetime")%> 10pt"> <%out.println(" TopicID="+a+"'>回复 "); if(tj){out.println(" TopicID="+a+"'>删除");}%> 10pt"> 10pt"> 10pt"> <% rs_reply=stmt3.executeQuery("select*fromtb_replywhereTopicID="+a); while(rs_reply.next()){ %> 10pt"><%=rs_reply.getString("content")%> 10pt"> <%}%> <% try{ if(! rs.next()){break;} }catch(Exceptione){} } %> [<%=Page%>/<%=maxPage%>] <%if(Page>1){%> Page=1">第一页 Page=<%=Page-1%>">上一页 <% } if(Page %> Page=<%=Page+1%>">下一页 Page=<%=maxPage%>">最后一页 <%}%> 3)用户登陆(Login_User_deal.jsp) 在top.jsp中设计的是当用户单击登录连接的时候,弹出一个小的对话框来提供用户的登录功能,所以在在个页面中需要刷新用户登录后的页面,用到了脚本语言(javascript)中的一段代码: open.location.reload().管理员登录(login_manager_deal.jsp)与此页面的代码相似,下面就不再写了。 主要的代码如下: <%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%> includepage="counter.jsp"/> <% request.setCharacterEncoding("GB2312"); Stringusername=request.getParameter("username"); StringPWD=request.getParameter("PWD"); if(username! =""){%> <% ResultSetrs=stmt.executeQuery("select*fromtb_userwhereUserName='"+username+"'andstatus='用户'"); if(rs.next()){ StringrsPWD=rs.getString("PWD"); if(PWD.equals(rsPWD)){%> opener.location.reload(); window.close(); <% session.setAttribute("username",username); }else{%> alert("您输入的密码不正确,请重新输入! "); history.back(); <%} }else{%> alert("您输入的用户名不正确,请重新输入! "); history.back(); <%} }%> 4)留言回复(reply_deal.jsp) 回复留言的关键如何准确地将回复内容和留言关联起来。 本例通过获得留言查看(index1.jsp)页面中的留言回复连接所传递过来的参数TopicTD(留言记录ID),来完成回复功 能。 添加留言(Topic_add_deal.jsp)于此相似,在次就不在介绍。 主要程序代码如下: <%@pagecontentTy 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1<%=rs.getString("content")%>
冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。