1、 JSP在水一方留言簿设计报告 一 需求分析 随着互联网迅猛发展,网站给咱们带来不少便利,于此同步,论坛基本是每个网站必有功能,为顾客之间交流提供较好平台。我通过仔细分析和规划,本论坛有如下功能:顾客注册,登录,顾客信息修改,签写留言,留言查看,回答留言和管理员普通维护功能等。 这些功能详细描述如下: 1)顾客注册模块:顾客可已成为本论坛会员,通过表单把顾客有关信息提交给数据库。 2)登录模块:基本是每个系统必备模块,本论坛登录模块分为两个小模块:普通顾客登录,另一种是管理员登录。 3)签写留言模块:这是论坛重要功能之一,顾客把自己感兴趣话题刊登到论坛上,与网上会员进行
2、探讨。 4)查看留言模块:这也是论坛重要功能之一,把顾客刊登留言逐条,安顺序显示出来。 5)回答留言模块:这也是论坛重要功能之一,顾客对别顾客刊登留言进行回答。 6)普通维护模块:这是给管理员功能,该功能对那些危害社会风气留言删除。 7)顾客信息修改模块:顾客能对自己信息进行修改。 二 分析和设计(页面和数据库) 设计网站论坛时,一方面应当区别是普通顾客登录还是管理员登录。如果是普通顾客登录,那么该顾客只有查看和回答留言权限。如果是管理员登录,则除了具备查看和回答权限外,还用品有管理论坛权限。 在顾客刊登留言后,将显示该顾客顾客名、性别、留言内容和留言时间等内容。如果
3、在某个留言有回答内容,则显示出是谁恢复了该篇留言和回答内容。 此外还能在页面中显示当前系统时间和访问权限。 数据库设计 通过以上分析:数据库应有四个表,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表
4、功能是存储顾客刊登留言,具备如下字段:ID、anthor、face、content、datetime。 3 分析得知tb_reply表功能是用于存储顾客对每条留言所回答信息,具备如下字段:ID、TpoicID、content、replyuser。 4 通过度析得知:tb_counter是记录网站每天访问次数,有如下两个字段:accessTime、hit。 5.通过度析,在显示留言是时候,要用到tb_user和tb_topic两张表,因此要设计一种具备这两张表一种视图:一方面建立关系如下: 视图如下:
5、 页面设计 1 网站流程体如下: 2 各页面功能实现阐明: 1) 系统提供服务(top.jsp) 程序重要实现依照级别设立顾客权限,是用脚本言语(javascript)来显示系统当前时间,并通过
6、@ include file="connDB.jsp" %>
![]() 12、"500" height="124"> |
|
签写留言 | 修改资料 | <%}else{%>顾客注册 | <%}%>
<%if(session.getAttribute("username")!=null){%>
注销顾客
<%}else{%>
顾客登录
<%}%>
15、 |
查看留言 | 刷新页面 |
<%if(eof){%>
注销版主登录
<%}else{
%>版主登录 16、<%}%> |
17、"images/speaker.GIF" width="16" height="16"> |
系统公示: |
<%if(session.getAttribute("username")!=null){
out.println("[ "+session.getAttribute("username")+" ]您好!您不想说点什么吗?如果想请点击“签写留言”!");
}el 18、se{ out.println("您好!如果您想说点什么,那么请先注册或登录!"); }%> |
|||
19、> |
20、tml;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
21、ENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs=stmt.executeQuery("select * from v_board"); ResultSet rs_reply=null; ResultSet rs_user=stmt2.executeQuery("select * from tb_user where username='"+session.getAttribute("username")+"'and status='版主'"); System.out.print("查询成功!");
22、//ResultSet rs_topic=stmt.executeQuery("select * from tb_topic"); %> ------------------------------------------ <% boolean tj=rs_user.next(); String str=(String)request.getParameter("Page"); if(str==null){ str="0"; } int pagesize=5; //每页显示数据条数 rs.last(); int RecordCount=rs.ge
23、tRow(); //获得记录总条数 int maxPage=0; maxPage=(RecordCount%pagesize==0)?(RecordCount/pagesize):(RecordCount/pagesize+1); //得到是总页数 int Page=Integer.parseInt(str); //当前时第几页 if(Page<1){ Page=1; }else{ if(((Page-1)*pagesize+1)>RecordCount){ Page=maxPage;
24、 } } rs.absolute((Page-1)*pagesize+1); for(int i=1;i<=pagesize;i++){ int a=rs.getInt("ID"); %>
<%=rs.getStrin 25、g("UserName")%>(<%=rs.getString("status")%>) <%=rs.getString("Sex")%>生 表情:<%=rs.getString("face")%> |
26、dth="1px" color="#FFCCCC"> |
![]() 27、mepage")%>" width="26" height="20">
28、e")%> |
<% out.println("回答 "); if(tj){out.println("删除");}%> | 29、n="right" style="padding-left:10pt" > |
<%=rs.getString("content")%> |
||||
<%=rs_reply.getString("replyuser")%>回答 | <%=rs_reply.getString("content")%>
|
|||
当前页数:[<%=Page%>/ 34、<%=maxPage%>]
<%if(Page>1){%>
第一页 上一页
<%
}
if(Page 35、 <%}%> 3) 顾客登陆(Login_User_deal.jsp) 在top.jsp中设计是当顾客单击登录连接时候,弹出一种小对话框来提供顾客登录功能,因此在在个页面中需要刷新顾客登录后页面,用到了脚本语言(javascript)中一段代码:open.location.reload().管理员登录(login_manager_deal.jsp)与此页面代码相似,下面就不再写了。重要代码如下: <%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" er 36、rorPage="" %>
37、 UserName='"+username+"' and status='顾客'"); if (rs.next()){ String rsPWD=rs.getString("PWD"); if(PWD.equals(rsPWD)){%> <% session.setAttribute("username",username); }else{%> <%} }e 39、lse{ %> <%} }%> 4) 留言回答(reply_deal.jsp) 回答留言核心如何精确地将回答内容和留言关联起来。本例通过获得留言查看(index1.jsp)页面中留言回答连接所传递过来参数TopicTD(留言记录ID),来完毕回答功能。添加留言(Topic_add_deal.jsp)于此相似,在次就不在简介。重要程序代码如下: <%@ page contentType="text/html 40、charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <%@ include file="connDB.jsp" %> 41、 String temp_p=str; String temp=new String(temp_p.getBytes("iso-8859-1"),"gb2312"); return temp; } catch(Exception e){} return "NULL"; } %> <% String content=getStr(request.getParameter("content")); int TopicID=Integer.par 42、seInt(request.getParameter("TopicID")); String replyuser=getStr((session.getAttribute("username")).toString()); if(content!=null && content.length()>0){ String sql="Insert into tb_reply(TopicID,content,replyuser) values("+TopicID+",'"+content+"','"+replyuser+"')"; int ret=0; 43、 ret=stmt.executeUpdate(sql); if(ret!=0){ out.println(""); }else{ out.println(""); 44、 } }else{ response.sendRedirect("index1.jsp"); } %> 5) 修改资料(modify_deal.jsp) 顾客登录后,如果想修改除了顾客名以外资料时,单击相应连接进入修改资料页面进行操作。重要代码如下: <%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <%@ include file="connDB.jsp" %> 45、 46、 return "NULL"; } %> <% String username=request.getParameter("username"); if (username!=null && username.length()>0 ){ String PWD=getStr(request.getParameter("PWD1")); String birthday=request.getParameter("birthday"); String sex=getStr(request.getPara 47、meter("sex")); String OICQ=getStr(request.getParameter("OICQ")); String tel=getStr(request.getParameter("tel")); String homepage=getStr(request.getParameter("homepage")); String address=getStr(request.getParameter("address")); String postcode=request.getParame 48、ter("postcode"); String Email=getStr(request.getParameter("Email")); int ret=0; String sql="update tb_user set PWD='"+PWD+"',birthday='"+birthday+"',Sex='"+sex+"',OICQ='"+OICQ+"',Tel='"+tel+"',homepage='"+homepage+"',address='"+address+"',postcode='"+postcode+"',Email='"+Emai 49、l+"' where username='"+username+"'"; ret=stmt.executeUpdate(sql); if(ret!=0){ out.println(""); }else{ out.println(""); } }else{ response.sendRedirect("modify.jsp"); } %> 6) 新顾客注册(reg_ok.jsp) 顾客注册时应先判断顾客数据与否对的。例如:两次输入密码与否一致,对必填字段与否为空等要加以限制。这些可以通过jsp所创立静态页面进行判断。这里重要是判断新顾客注册顾客名与否已经被占用,如果没有就将顾客所填写数据添加到数据库中,如果被占用则提示顾客重新填写。重要代码如下: <%@ include file="connDB. ©2010-2025 宁波自信网络信息技术有限公司 版权所有 客服电话:4009-655-100 投诉/维权电话:18658249818 |