




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计论文专业班级软件技术软件072学生姓名吴家文指导教师朱克敌密级内部BBS论坛系统BBSFORUMSYSTEM系别名称信息工程系专业班级软件技术软件072学生姓名吴家文学号2007433211指导教师朱克敌摘要随着INTERNET技术的快速发展,人与人之间交流方式逐渐增多。网络视频、网络聊天、博客已成为人们彼此沟通、交流信息的主要方式。此外,为了方便人们在某一专业领域探讨问题和发表意见,INTERNET上还出现了在线论坛。在论坛上,人们可以对某一领域提出自己遇到的问题,即发表某一主题,随后,论坛上的其他人会根据自己的学识、经验发表意见或提出问题的方法。开发BBS论坛系统的目的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的网上社区。因此,BBS论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。此外,为了记录主题的发表者和主题的回复者信息,系统还需要提供用户注册和登录的功能。只有注册的用户登录后才能够发表和回复主题,浏览者(游客)只能浏览主题信息。本论坛系统是基于是STRUTS12SQLSERVER2000实现的,它具有使用方便、操作灵活、运行稳定、安全可靠等特点。关键词在线论坛,BBS,网上社区,STRUTSABSTRACTWITHTHERAPIDDEVELOPMENTOFINTERNETTECHNOLOGY,MEANSOFCOMMUNICATIONBETWEENPEOPLEISGRADUALLYINCREASINGVIDEO,WEBCHAT,BLOGHAVEBECOMETHEMAINFORMSOFEXCHANGINGINFORMATIONWITHEACHOTHERINADDITION,INORDERTOALLOWPEOPLEINAPROFESSIONALFIELDTOPROBEINTOQUESTIONSANDMAKECOMMENTS,INTERNETONLINEFORUMSHAVEEMERGEDATTHEFORUM,PEOPLECANPUTFORWARDTHEIROWNPARTICULARPROBLEMSENCOUNTEREDINTHEFIELD,ASUBJECTTHATISISSUED,THENTHERESTOFTHEFORUM,MAKINGCOMMENTSORRAISEPROBLEMSBASEDONTHEIRKNOWLEDGEANDEXPERIENCEBBSFORUMSYSTEMAIMSTOPROVIDEACOMMUNICATIONPLATFORMFORTHEUSER,FORTHEMAJORITYOFUSERSTOEXCHANGEEXPERIENCESANDEXPLOREISSUESOFCOMMUNITYTHEREFORE,BBSFORUMSYSTEMISTHEMOSTBASICFUNCTIONOFTHEFIRSTKEYNOTE,FOLLOWEDBYOTHEROFFICERSTOEXPRESSTHEIRVIEWSONTHETHEMEINADDITION,INORDERTORECORDTHERELEASEOFTHETHEMEANDTHETHEMEOFTHERESPONDENTSINFORMATIONSYSTEMSALSONEEDTOPROVIDEUSERSREGISTRATIONANDLOGINFUNCTIONONLYREGISTEREDUSERSCANLOGONANDRELEASEPUBLICATIONSANDREPLYTOTOPICS,VISITORSTOURISTSCANONLYVIEWTOPICINFORMATIONTHISFORUMSYSTEMISBASEDONASTRUTS12SQLSERVER2000IMPLEMENTATION,ITISCONVENIENT,FLEXIBLEOPERATION,STABLE,SAFEANDRELIABLEKEYWORDSONLINEFORUM,BBS,ONLINECOMMUNITY,STRUTS目录摘要IABSTRACTII第1章绪论1第2章系统分析221需求分析222可行性分析2第3章系统总体设计431系统目标432系统功能结构4321前台功能结构4322后台功能结构533系统流程图534系统开发环境6341开发环境6342系统平台体系结构的选择7343JSP语言7344SQLSERVER2000数据库8345JDBC技术8第4章数据库设计1041数据库分析1042数据库概念设计1043数据库逻辑设计13第5章系统详细设计与实现1751前台设计17511前台页面设计与实现17512前台显示概述18513查看首页面的论坛类别18514查看某版面中根贴列表20515查看根贴和回复贴内容21516发表帖子模块设计23517根贴操作的设计与实现2752后台设计32521后台页面设计与实现32522版面管理模块设计与实现33结论39致谢40参考文献41第1章绪论随着互联网日益深入社会生活,BBS开发技术发展至今,从CGI,ASP,到PHP已经日趋成熟,功能也更加丰富,但携着SUN公司的JAVA技术所实现的“一次编写,到处运行”的优势,继承这一衣钵的JSP技术越来越受到人们的注视。BBS作为一种对外的展示窗口,进行内外信息交流,已成为大众的广泛需要。为了进行更好的交流,用户想就自己的专业和爱好能和其他的用户进行及时专业的交流,这就有了论坛,这样以来我们就可以在网络这个虚拟的空间中方便地实现交流,BBS论坛是我们在这个地球村中生活的重要交流工具。所以我选择使用JSP开发BBS论坛这一课题作为毕业设计。JAVA是未来的主流开发技术,具有很多优势。JSP则是JAVA在INTERNETINTRANETWEB上的重要应用技术,得到了广泛的支持和承认,它可以和各种JAVA技术完好地结合在一起,从而实现非常复杂的应用。本网站使用JSPSQLSERVER2000在MYECLIPSE系统开发的,从而创建一个更为稳定,高效,安全的运行环境。本文主要实现了基于B/S模式的一种JSP论坛的设计与实现,主要功能是实现客户端和服务器端的动态交互。BBS论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。此外,为了记录主题的发表者和主题的加复者信息民,系统还需要提供用户注册和登录的功能。只有注册的用户登录后才能够发表和回复主题,浏览者(游客)只能浏览主题信息。根据用户的需求及以上的分析,BBS论坛需要具备以下功能显示各论坛类别及版面、查看版面下所有根帖、查看精华帖子、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、发表帖子、回复帖子、进入后台、论坛类别管理、版面管理、用户管理和用户注册。设计BBS论坛系统所要考虑的问题主要有如何通过资源文件显示文字和使用静态代码块。设计中力求界面友好、简洁,易于操作。代码部分尽量避免逻辑错误,算法设计简单合理,尽量使程序具有较好的可读性,有利于其他的设计者对程序的阅读;力求对数据库操作的安全与稳定,尽量避免数据库操作异常,并要保证查询的快速无误。保证程序的逻辑结构,编程时注意多使用通用方法(函数和过程)。第2章系统分析21需求分析1功能性需求开发BBS论坛系统的目的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的社区。因此,BBS论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。此外,为了记录主题的发表者和主题的加复者信息民,系统还需要提供用户注册和登录的功能。只有注册的用户登录后才能够发表和回复主题,浏览者(游客)只能浏览主题信息。根据用户的需求及以上的分析,BBS论坛需要具备前台功能和后台功能。1系统前台功能显示各论坛类别及版面、查看版面下所有根帖、查看精华帖子、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、发表帖子、回复帖子2系统后台功能进入后台、论坛类别管理、版面管理、用户管理、用户注册。2非功能性需求1平台限制基于WINDOWSXP,不需要安装其他软件。2操作方式全部操作都可以基于浏览器进行。22可行性分析可行性分析是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。1技术可行性技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。该BBS论坛管理系统采用了流行的JSP语言和当前新兴的BROWSER/SERVER(浏览器/服务器)模式进行开发。三层的B/S体系结构具有许多传统CLIENT/SERVER(客户机/服务器)体系结构不具备的优点,而且又紧密的结合了INTERNET/INTRANET(国际互联网/企业内部互联网)技术,是技术发展的大势所趋,它把应用系统带入了一个崭新的发展时代。数据库服务器选用SQLSERVER2000数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。它的灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台能满足此系统的需要。2经济可行性主要是对项目的经济效益进行评估,本系统模拟的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的社区。但实际只是用于个人的毕业设计,只是模拟,也不存在资金的流动,故在经济上是可行的。3社会可行性随着INTERNET技术的快速发展,BBS论坛已成为人们彼此沟通、交流信息的主要方式。在论坛上,人们可以对某一领域提出自己遇到的问题,随后,论坛上的其他人会根据自己的学识、经验发表意见或提出问题的方法。BBS论坛接近了人们之间的距离,它早已成为人们网上生活的必备工具。所以说BBS论坛对当今社会是相当重要的。查看版面下根贴查看精华帖子搜索根贴查看根贴内容用户登录用户注册用户注销发表帖子回复帖子查看自己发表的帖子BBS论坛前台第3章系统总体设计31系统目标对于典型的数据库管理系统,尤其是对像论坛这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计需求。本系统在设计时应满足以下几个目标1采用人机对话的操作方式,界面设计美观友好,信息查看灵活、方便、快捷、准确,数据存储安全可靠。2全面展示系统内所有分类的帖子,并进行分页显示。3为用户提供一个方便、快捷的主题信息查看功能。4实现在线发表帖子。5提供登录模块,主要用开管理员登录系统和发表帖子时留下发表者的信息。6用户随时都可以查看自己发表的帖子。7对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。8系统最大限度地实现了易维护性和易操作性。9系统运行稳定安全可靠。32系统功能结构321前台功能结构用户访问论坛首页面后,可进行查看版面下根贴信息、查看自己发表的帖子、查看精华帖子、搜索帖子、查看根贴信息、用户注册等功能。用户在此BBS论坛中通过注册成为该网站的真正用户并成功登录系统后,可进行发表帖子、回复帖子、查看自己发表的帖子等操作。前台功能结构图如图31所示。类别管理版面管理用户管理退出管理BBS论坛后台类别管理版面管理用户管理是否登录是否成功进入后台后台首页用户登录管理员图31BBS前台功能结构图322后台功能结构若用户的权限为管理员,则可进入后台,可进行论坛类别的管理、版面管理和用户管理的操作。后台功能结构图如图32所示。图32BBS后台功能结构图33系统流程图1BBS论坛的系统后台流程图如图33所示。图33BBS论坛系统后台流程图2BBS论坛的系统前台流程图如图34所示。查看精华帖子搜索根贴查看版面下根贴查看根贴内容发表帖子回复帖子提前帖子删除帖子置顶帖子置为精华贴删除回复帖查看自己发表的根贴用户注册是否管理员、版主、帖子发表者是否登录是否登录提示无权操作游客访问是是否是否否前台首页用户登录成功是图34BBS论坛的系统前台流程图34系统开发环境341开发环境在开发此论坛的时候,需要具备下面的软件环境服务器端操作系统WINDOWSXP。WEB服务器TOMCAT60。JAVA开发包JDK16。数据库SQLSERVER2000。浏览器IE60。分辨率最佳效果为1024768像素。客户端浏览器IE60。分辨率最佳效果为1024768像素。342系统平台体系结构的选择在应用开发领域中,目前系统平台的体系结构主要有两种,即C/S(CLIENT/SERVER)结构和B/S(BROWER/SERVER)结构。C/S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到CLIENT端和SERVER端来实现,降低了系统的通讯开销。B/S结构,即浏览器和服务器结构。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是CLIENT端还是SERVER端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用,而且代价高,效率低。B/S结构,是随着INTERNET技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。因此本系统采用了B/S结构。343JSP语言JSP(JAVASERVERPAGES)是由SUN公司倡导,许多别的公司参与一起创建的一种新动态网页技术标准,类似其他技术标准。在传统的网页HTML文件(HTM,HTML)中加入JAVA程序片断(SCRIPTLET)和JSP标签,构成了JSP网页(JSP)SERVLET/JSPCONTAINER收到客户端发出的请求时,首先执行其中的程序片断,软后将执行结果以HTML格式响应给客户端,其中程序片断可以是操作数据库,重新定向网页以及发送EMAIL等等,这些都是建立动态网站所需要的功能。所有程序操作都在服务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP称为SERVERSIDELANGUAGE。所以被许多人认为是未来最有发展前途的动态网站技术之一。语言优势如下1将内容的生成和显示进行分离使用JSP技术,WEB页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成的内容的逻辑被封装在标识和JAVABEANS组件中,那么其他人,如WEB管理人员和页面设计者,能够编辑和使用JSP页面而不影响内容的生成。2一次编写,到处运行作为JAVA平台的一部分,JSP拥有JAVA编程语言“一次编写,到处运行”的特点,随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,但并不影响当前的应用。3JSP的平台适应性更广这是JSP比ASP的优越之处,几乎所有的平台都支持JAVA,它们可以在任何平台下通行无阻。虽然NT的OS占据了很大的市场的份额,但在服务器方面UNIX的优势仍然很大从一个平台移植到另一个平台,JSP和JAVABEANS甚至不用重新编译,因为JAVA字节码都是标注的字节码与平台无关。4健壮的存储管理和安全性由于JSP页面的内置脚本语言是基于JAVA编程语言的,而且所有的JSP页面都被编译为JAVASERVLET,JSP页面就具有JAVA技术的所有优点,包括健壮的存储管理和安全性。344SQLSERVER2000数据库SQLSERVER2000是MICROSOFT公司推出的基于CLIENT/SERVER模式的新一代大型关系数据库管理系统。它功能强大、操作简便,广泛应用于数据库后台系统。SQLSERVER2000代表着下一代MICROSOFTNETENTERPRISESERVERS(企业分布式服务器)数据库的发展趋势。它在电子商务、数据仓库和数据库解决方案等应用中起着重要的核心作用。后台使用DBMS为MICROSOFTSQLSERVER2000。MICROSOFTSQLSERVER2000能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到SQLSERVER2000实例。SQLSERVER2000为这些环境提供了全面的保护,具有防止问题发生的安全措施,例如,可以防止多个用户试图同时更新相同的数据。SQLSERVER2000还在多个用户之间有效地分配可用资源,比如内存、网络带宽和磁盘I/O。超大型INTERNET站点可将其数据分开存放在多台服务器上,从而使处理负荷分散到多台计算机上,使站点能为成千上万的并发用户提供服务。可以在一台计算机上运行多个SQLSERVER2000实例。大型WEB站点和企业级数据处理系统通常会生成大量的数据库处理,超出了一台计算机的支持能力。在这些大型系统中,数据库服务由组成数据库服务层的一组数据库服务器提供。SQLSERVER2000不支持采用平衡负荷的聚集形式建立数据库服务层,但支持跨自主服务器组分存数据的机制。尽管每个服务器需分开管理,但组内的各个服务器可共同分担数据库处理负荷。共享同一工作负荷的一组自主服务器称为服务器联合体。345JDBC技术数据库通信接口采用JDBC(JAVADATABASECONNECTIVITY,JAVA数据库连接)。JDBC是一组API,定义了用来访问数据库源的标准JAVA类库,使用这种类库可以使用一种标准的方法、方便地访问数据库资源。JDBC是用于执行SQL语句的JAVA应用程序接口,由一组用JAVA语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让各数据库厂商为JAVA程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的JAVA应用程序的开发工具和产品成为可能。JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无须对特定的数据库的特点有过多的了解,从而大大简化了和加快了开发过程。一般的JAVA开发工具都带有JDBCODBC桥驱动程序,这样,只要是能够使用ODBC访问的数据库系统,也就能够使用JDBC访问了。有趣的是,不同于ODBC是OPENDATABASECONNECTIVITY的简称,JDBC并不是JAVADATABASECONNECIVITY的简称,而是SUN的注册商标,至少官方说法是这样的。JDBCAPI为访问不同的数据库提供了一种统一途径,像ODBC一样,JDBC为开发者屏蔽了一些细节问题。另外,JDBC对数据库的访问也具有平台无关性。第4章数据库设计41数据库分析数据库的设计,在程序的开发中起着至关重要的作用,它往往决定了在后面的开发中进行怎样的程序编码。一个合理、有限的数据库设计可降低程序的复杂性,使程序开发的过程更为容易。本系统是一个中型的供求信息网站,考虑到开发成本、用户信息量客户需求等问题,决定采用MICROSOFTSQLSERVER2000作为项目中的数据库。MICROSOFTSQLSERVER是一种客户/服务器模式的关系型数据库,它具有很强的数据完整性、可伸缩性、可管理性、可编程性;具有均衡与完备的功能;具有较低的价格与性能比。SQLSERVER数据库可以大容量地存储数据,并对数据进行合理地逻辑布局,应用数据库对象可以对数据进行复杂地操作。SQLSERVER2000也提供了JDBC编程接口,这样可以非常方便地应用JAVA来操作数据库。42数据库概念设计ER模型是对现实世界的一种抽象。它的主要成分是实体、联系和属性。使用这三种成分,我们可以建立许多应用环境的ER模型。现在划出本系统所使用的数据库实体,它们分别为根贴实体、回复贴实体、版面实体、类别实体和用户实体。下面将介绍几个关键实体的ER图。1根贴实体根据实体包括编号、所属版面、标题、内容、发布者、发布时间、表情、对贴子进行操作的时间、是否为置顶贴子、被置顶的时间、是否为精华贴子和被设置为精华贴子的时间等属性。其中是否为置顶贴子与是否为精华贴子属性分别用来标识贴子是否被设置为置顶或是精华贴子,1表示“是”,0表示“否”。根贴实体的ER图如图41所示。根贴内容标题所属版面编号表情发布者发布时间是否为置顶帖子被置顶的时间回复贴内容标题根贴ID编号表情回复者回帖时间间图41根贴实体ER图2回复贴实体回复贴实体包括编号、根贴ID、标题、内容、回复者、回帖时间和表情属性。回复贴实体的ER图如图42所示。图42回复贴实体ER图3版面实体版面实体包括编号、所属类别ID、版面名称、版主和版面公告属性。版面实体ER图如图43所示。论坛类别介绍类别名称编号版面版主版面名称所属类别ID编号版面公告图43回复帖子信息实体图4论坛类别实体论坛类别实体包括编号、类别名称和介绍属性。论坛类别实体的ER图如图44所示。图44论坛类别实体ER图ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1N,MN,还是11等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。本系统的ER模型如图45所示TB_BBS(根贴信息表)TB_BBSANSWER(回复贴子信息表)TB_BOARD(版面信息表)TB_CLASS(论坛类别信息表)TB_USER(用户信息表)图45ER模型图43数据库逻辑设计根据数据库概念设计,可以创建与实体对应的数据表。本系统中所包含的数据表的结构图如图46所示。图46DB_LUNTAN数据库所包含的数据表结构图DB_LUNTAN主题帖子所属回复帖子对应版块1NM1用户管理员浏览管理MNMN本系统共包含3个数据表,下面分别介绍这些表的结构。1TB_BBS(根贴信息表)根贴信息表用来保存发布的全部根贴信息,该表的结构如表41所示。表41TB_BBS表的结构字段名数据类型是否为空是否主键默认值描述BBS_IDINT4NOYES帖子ID自动编号BBS_BOARDIDINT2YES1帖子所属版面的IDBBS_TITLEVARCHAR70YESNULL帖子标题BBS_CONTENTVARCHAR2000YESNULL帖子内容BBS_SENDERVARCHAR20YESNULL帖子的发布者BBS_SENDTIMEDATETIME8YESNULL帖子的发布时间BBS_FACEVARCHAR8YESNULL帖子表情BBS_OPTIMEDATETIME8YESNULL对帖子进行操作的时间BBS_ISTOPVARCHAR1YES0是否为置顶帖子BBS_TOTOPTIMEDATETIMEYESNULL帖子被置顶的时间BBS_ISGOODVARCHAR1YES0是否为精华帖子BBS_TOGOODTIMEDATETIME8YESNULL帖子被置精华帖子时间2TB_BOARD(版面信息表)版面信息表用来保存论坛中的版面信息,该表的结构如表42所示。表42TB_BOARD表的结构字段名数据类型是否为空是否主键默认值描述BOARD_IDSMALLINT2YESYES版面ID(自动编号)BOARD_CLASSIDSMALLINT2YESNULL版面所属类别的ID值BOARD_NAMEVARCHAR40YESNULL版面名称BOARD_MASTERVARCHAR20YESNULL版面版主BOARD_PCARDVARCHAR200YESNULL版面公告3TB_BBSANSWER(回复贴子信息表)回复帖子信息表用来保存回复帖子的信息,该表的结构如表43所示。表43TB_BBSANSWER表的结构字段名数据类型是否为空是否主键默认值描述BBSANSWER_IDINT4NOYESID(自动编号)BBSANSWER_ROOTIDINT4YESNULL回复帖子根帖ID值BBSANSWER_TITLEVARCHAR70YESNULL回复帖子的标题BBSANSWER_CONTENTVARCHAR2000YESNULL回复帖子的内容BBSANSWER_SENDERVARCHAR20YESNULL回复帖子的回复者BBSANSWER_SENDTIMEDATETIME8YESNULL回复帖子的时间BBSANSWER_FACEVARCHAR10YESNULL回复帖子的表情4TB_CLASS(论坛类别信息表)论坛类别信息表用来保存论坛类别信息,该表的结构如表44所示。表44TB_CLASS表的结构字段名数据类型是否为空是否主键默认值描述CLASS_IDSMALLINT2NOYESID(自动编号)CLASS_NAMEVARCHAR40YESNULL论坛类别名称CLASS_INTROVARCHAR200YESNULL论坛类别介绍信息5TB_USER(用户信息表)用户信息表用来保存用户的信息,该表的结构如表45所示。表45TB_USER表的结构字段名数据类型是否为空是否主键默认值描述IDSMALLINT2NOYES用户ID(自动编号)USER_NAMEVARCHAR20YESNULL用户名称USER_PASSWORDVARCHAR20YESNULL用户密码USER_FACEVARCHAR11YESNULL用户表情USER_SEXVARCHAR2YESNULL用户性别USER_PHONEVARCHAR12YESNULL用户电话USER_OICQVARCHAR14YESNULL用户OICQUSER_EMAILVARCHAR100YESNULL用户的邮箱USER_FROMVARCHAR200YESNULL用户的来源USER_ABLEVARCHAR1YESNULL用户能力创建数据表后,还可以创建相关的数据表之间的关系,该关系实际上也反应了系统中各个实体之间的关系。设置了该关系后,当改变TB_USER数据表的USER_NAME字段时,TB_BBS数据表的BBS_SENDER字段也会级联更新或删除;当改变TB_BOARD数据表的BOARD_ID字段时,TB_BBS数据表的BBS_BOARDID字段也会级联更新或删除;当改变TB_CLASS数据表的CLASS_ID字段时,TB_BOARD数据表的BOARD_CLASSID字段也会级联更新或删除。数据表之间的关系图如图47所示。TB_USERPKIDU1USER_NAMEUSER_PASSWORDUSER_FACEUSER_SEXUSER_PHONEUSER_OICQUSER_EMAILUSER_FROMUSER_ABLETB_BBSPKBBS_IDFK1BBS_BOARDIDBBS_TITLEBBS_CONTENTFK2,I1BBS_SENDERBBS_SENDTIMEBBS_FACEBBS_OPTIMEBBS_ISTOPBBS_TOTOPTIMEBBS_ISGOODBBS_TOGOODTIMETB_BBSANSWERPKBBSANSWER_IDFK1BBSANSWER_ROOTIDBBSANSWER_TITLEBBSANSWER_CONTENTBBSANSWER_SENDERBBSANSWER_SENDTIMEBBSANSWER_FACETB_BOARDPKBOARD_IDFK1BOARD_CLASSIDBOARD_NAMEBOARD_MASTERBOARD_PCARDTB_CLASSPKCLASS_IDCLASS_NAMECLASS_INTRO图47数据表之间的关系图第5章系统详细设计与实现51前台设计由于前台功能模块较多,而各模块的实现过程都是类似的,所以对于系统前台,现在只介绍系统重点设计。511前台页面设计与实现本系统中所有页面都采用了一种页面框架,该页面框架采用一分栏结构,分为4个区域页头、功能栏、内容显示区和页尾。网站前台首页面的运行结果如图51所示。图51前台首页面的运行结果实现前台页面的设计需要分别创建实现各区域的JSP文件,如实现页头的TOPJSP、实现功能栏的MENUJSP、页尾文件ENDJSP和首页面中需要在内容显示区显示的DEFAULTJSP等JSP文件。下面主要介绍前台框架页面INDEXTEMPJSP的实现,实现页面显示代码如下“/512前台显示概述论坛的前台显示主要包括首页面的论坛类别显示、某版面下根贴的列表显示、我的帖子的列表显示、精华帖子的列表显示、搜索后根帖的列表显示和根贴与回复贴内容的详细显示。其中在根贴的列表显示系列中,我的帖子、精华帖子和搜索这3个功能的实现是相似的,最终都是生成一个查询SQL语句,并通过执行该SQL语句获取一个符合条件的信息集合,然后返回页面进行显示。不同的是它们生成SQL语句的方式,列表显示我的帖子,需要获取当前登录用户的用户名,然后生成查询SQL语句;列表显示精华贴,要执行的是一个固定、已知的SQL语句;列表显示搜索到的根贴,需要从页面表单中获取条件和搜索关键安后,才能生成SQL语句。不仅如此,这3种功能的页面信息显示也是相同的,不同的是通过STRUTS标签输出信息时所引用的对象不同。现在介绍首页面论坛类别显示、某版面下根贴的列表显示和根贴与回复贴内容的详细显示。513查看首页面的论坛类别该页面的实现效果是分类显示论坛类别,并以超链接形式显示属于该论坛类别中所有版面名称并显示当前版面的版主和一些帖子的相关信息,如图52所示。图52首页面的论坛类别显示效果图在首页面中显示论坛类别时,首先通过STRUTS中的LOGIC标签库中的ITERATE标签遍历存储在SESSION范围的LIST集合对象,该LIST集合对象是在处理用户访问论坛首页面时的请求处理类中实现的,其中存储的是封装了论坛类别信息的ACTIONFORM;然后再使用BEAN标签库中的WRITE标签输出从难从LIST集合对象中遍历出的ACTIONFORM中的属性信息,即可实现论坛类别的显示。在页面中实现输出论坛类别的关键代码如下/省略了输出论坛类别信息的代码/省略了输出版面信息的代码514查看某版面中根贴列表该显示实现的效果是显示某个版面中所有的根贴。该显示方式将单独显示版面中的置顶帖子和其他帖子。对于置顶帖子的显示,将按照帖子被置顶的时间进行降序排列;对于其他帖子的显示,将按照帖子被操作的时间进行降序排列。每条根贴显示其状态、标题、回复数、发表者和最后回复信息,如图53所示。图53某版面中所有根贴的显示效果图当在首页面中单击以超链接形式显示的某个版面的标题时,将列表显示该版面中的根贴,该显示要将置顶帖子与其他帖子分类显示。实现该功能,首先需要获取当前版面中的根贴,这可通过当前版面的ID值查询数据表获取,然后分别将获取的置顶帖子列表和其他帖子列表存储在SESSION范围内,最后回到JSP页面通过LOGIC标签库中的ITERATOR标签进行遍历输出。下面给出在JSP页面中列表显示某版面中根贴的关键代码/省略了输出置顶帖子的代码/省略了输出其他帖子的代码515查看根贴和回复贴内容该显示方式实现的效果图是显示根贴的详细信息,并显示该根贴的所有回复帖,另外对每条帖子都显示发表者的部分信息,如图54所示。图54显示根贴及回复贴的详细显示效果图对于根帖的发表者的信息可通过从获取的根贴信息中取出根贴的发表者,然后将其作为查询条件查询用户信息数据表来获取,最后存储到SESSION对象内。对于回复贴的回复者信息可设想通过一个MAP对象进行相相存储,该MAP对象以加复者的用户名为关键安来存储封装用户信息的ACTIONFORM类。在获取了存储回复贴的集合对象后,首先对该集合对象进行循环处理,在循环体中获取当前回复帖子的回复者的用户名;然后判断在存储回复者信息的MAP对象中是否已经存在以该用户作为关键字的映射,若不存在,则以该用户名为条件查询用户信息数据表获取用户信息,接下来以该用户名作为关键字存储获取的用户名信息到期MAP对象中;最后返回到JSP页面中通过STRUTS标签和EL表达式输出。获取回复贴的回复者信息的关键代码如下SQL“SELECTFROMTB_USERWHEREUSER_NAME“MAPANSWERMAPNEWHASHMAPFORINTI0I/省略了显示发贴者其他信息的代码【表情】/省略了显示根贴其他信息的代码回复该帖将帖子提前/省略了显示生成其他链接的代码2显示回复贴的关键代码如下PAGECURRENTP1PAGEPERRIDIND1楼【回复主题】ANSWERMAPANSWERERNAMEUSERNAME【表情】回复时间/省略了显示回复帖子其他信息的代码516发表帖子模块设计发表帖子主要是为了互相讨论话题而设置的功能,它是论坛系统中的主要功能。通常情况下,需要在论坛中注册一个用户名,然后成功登录,用户才能在论坛中发表帖子。发表帖子页面的运行结果如图55所示。开始是否登录用户登录发贴页面填写贴子信息提交表单表单验证发表帖子是否失败成功图55发表帖子页面的运行结果图用户发表帖子的流程图如图56所示。图56发表帖子的流程图发表帖子模块的实现过程如下1首先创建一个用来封装根贴信息的ACTIONFORM,该ACTIONFORM继承VALIDATORFORM类,并覆盖了VALIDATE方法,其关键代码如下PUBLICCLASSBBSFORMEXTENDSVALIDATORFORMPRIVATESTRINGBBSIDPRIVATESTRINGBBSBOARDIDPRIVATESTRINGBBSTITLEPRIVATESTRINGBBSCONTENTPRIVATESTRINGBBSSENDERPRIVATESTRINGBBSFACE“FACE0GIF“PRIVATESTRINGBBSSENDTIMEPRIVATESTRINGBBSANSWERNUMPRIVATESTRINGBBSLASTUPDATEUSERPRIVATESTRINGBBSLASTUPDATETIMEPRIVATESTRINGBBSOPTIMEPRIVATESTRINGBBSISTOPPRIVATESTRINGBBSTOTOPTIMEPRIVATESTRINGBBSISGOODPRIVATESTRINGBBSTOGOODTIMEPUBLICACTIONERRORSVALIDATEACTIONMAPPINGMAPPING,HTTPSERVLETREQUESTREQUESTSTRINGVALIDATEREQUESTGETPARAMETER“VALIDATE“IFVALIDATENULL|VALIDATEEQUALS“|VALIDATEEQUALS“YES“RETURNNULLELSERETURNSUPERVALIDATEMAPPING,REQUEST/省略了属性的SETXXX与GETXXX方法2创建发表帖子的页面。在该页面中,需要用户输入的信息有根贴标题、根贴表情的根贴内容,根贴表情在ACTIONFORM类中被设置了FACEGIF默认值,所以在设置表单验证时,无须设置该表单字段的验证规则。在发表页面中还需要通过STRUTS标签输出表单验证失败后的提示信息,发表帖子页面的关键代码如下【主题】【表情】【内容】3在VALIDATIONXML文件中编写验证发表帖子表单的验证代码,关键代码如下MAXLENGTH35MAXLENGTH10004配置STRUTS配置文件。在该文件中配置发表帖子表单被提交后的请求处理,配置代码如下通过上面的配置,当提交发表帖子页面的表单后,会先进行表单验证,验证成功后,则调用MEFHOD请求参数指定的COMYXQACTIONBBSACTION类中的方法处理表单。5在BBSACTION类中创建处理发表帖子表单的方法。在发表帖子页面的代码中已经指定了处理表单的方法为ADDBBS,在该方法中主要实现的是获取表单数据,然后生成向数据表中插入记录的SQL语句,最后执行该SQL语句完成发表帖子操作。ADDBBS方法的关键代码如下BBSFORMBBSFORMBBSFORMFORMSTRINGBOARDIDSTRINGSESSIONGETATTRIBUTE“BOARDID“STRINGBBSTITLECHANGEHTMLCHANGEBBSFORMGETBBSTITLESTRINGBBSCONTENTCHANGEHTMLCHANGEBBSFORMGETBBSCONTENTSTRINGBBSSENDERUSERFORMSESSIONGETATTRIBUTE“LOGONER“GETUSERNAMESTRINGBBSSENDTIMECHANGEDATETIMECHANGENEWDATESTRINGBBSFACEBBSFORMGETBBSFACESTRINGBBSOPTIMEBBSSENDTIMESTRINGBBSISTOP“0“STRINGBBSTOTOPTIME“STRINGBBSISGOOD“0“STRINGBBSTOGOODTIME“STRINGSQL“INSERTINTOTB_BBSVALUES,“OBJECTPARAMSBOARDID,BBSTITLE,BBSCONTENT,BBSSENDER,BBSSENDTIME,BBSFACE,BBSOPTIME,BBSISTOP,BBSTOTOPTIME,BBSISGOOD,BBSTOGOODTIMEACTIONMESSAGESMESSAGESNEWACTIONMESSAGESOPDBMYOPNEWOPDBINTIMYOPOPUPDATESQL,PARAMS517根贴操作的设计与实现本论坛系统除了对根贴实现查看详细内容的功能外,还实现了“将帖子提前”、“置顶帖子”、“设为精华帖子”和“删除帖子”4个功能。其中管理员可对根贴进行所有操作,而当前根贴发表者和当前根贴所属版主只可进行“将帖子提前”和“删除帖子”的操作。因为“将帖子提前”与“删除帖子”功能的实现比较相似,“置顶帖子”与“设为精华帖”的功能实现也是相似的,所以现在主要介绍“将帖子提前”与“置顶帖子”的实现。1将帖子提前操作的设计与实现通常情况下,显示版面下根贴的根贴都是按照发表时间降序排列,最新发表的帖子在第一页的最顶部显示,如图57所示。图57最新发表的帖子显示在最顶部将帖子提前,就是将发表的根贴设置为在版面下第一页中的最顶部位置进行显示。将不是最新发表的帖子提前操作后,就会将该帖子提前到最顶部位置,并不是所有用户可对根贴进行提前的操作,除管理员和当前版面的版主外,只有当前根贴的发表者可进行提前帖子的操作;否则会提示用户无权进行操作。提前贴子如图58所示。图58提前帖子以下为将帖子提前操作的实现过程1在查看根贴的页面中实现将帖子提前操作的超链接的实现代码如下将帖子提前2在ACTION处理类中编码实现处理提前帖子的操作。该编码首先需要判断当前操作用户的身份,若当前用户是管理员或当前版面版主或当前帖子的发表者,则实现提前帖子功能,否则生成无权操作提示信息。实现提前帖子功能的关键代码如下USERFORMLOGONERUSERFORMSESSIONGETATTRIBUTE“LOGONER“STRINGBBSIDREQUESTGETPARAMETER“BBSID“/获取被提前帖子的IDSTRINGBBSSENDERREQUESTGETPARAMETER“BBSSENDER“/获取被提前帖子的发布者BBSSENDERNEWSTRINGBBSSENDERGETBYTES“ISO88591“STRINGTIMECHANGEDATETIMECHANGENEWDATE/获取操作时间STRINGLOGNERABLELOGONERGETUSERABLE/获取当前登录用户的权限STRINGLOGNERNAMELOGONERGETUSERNAME/获取当前登录用户的用户名STRINGMASTERSTRINGSESSIONGETATTRIBUTE“BOARDMASTER“/获取当前版面的斑竹IFBBSIDNULLBBSID“1“IFBBSSENDERNULLBBSSENDER“STRINGFORWARDPATH“ACTIONMESSAGESMESSAGESNEWACTIONMESSAGES/如果当前登录的用户是帖子的发表者、帖子所属版面的斑竹、管理员/IFLOGNERABLEEQUALS“2“|LOGNERNAMEEQUALSMASTER|LOGNERNAMEEQUALSBBSSENDERIFBBSIDNULLSTRINGSQL“UPDATETB_BBSSETBBS_OPTIMEWHEREBBS_ID“OPDBMYOPNEWOPDBINTIMYOPOPUPDATESQL,PARAMSIFI2置顶帖子操作的设计与实现置顶帖子就是将根贴与其他根贴单独显示,并且显示在版面下最顶栏,并不是所有用户可以对根贴进行置顶操作,只有管理员才有权限进行此操作;否则会提示用户无权进行操作。置顶帖子的显示位置如图59所示。图59置顶帖子的显示位置以下为置顶帖子操作的实现过程。1在查看根贴的页面中实现置顶帖子操作的超链接,实现代码如下置顶帖子2编写过滤器。当用户触发上面的超链接时,会执行该过滤器,该过滤器用来验证用户身份是否为管理员,首先从SESSION中获取当登录的用户,然后判断其用户身份。实现该过滤器的关键代码如下STRINGABLELOGONERGETUSERABLEIFABLEEQUALS“2“CHAINDOFILTERSREQUEST,SRESPONSEELSEREQUESTSETATTRIBUTE“MESSAGE“,“您没有权限进行该操作“REQUESTDISPATCHERRDREQUESTGETREQUESTDISPATCHER“/PAGES/MESSAGEJSP“RDFORWARDSREQUEST,SRESPONSEELSEREQUESTSETATTRIBUTE“MESSAGE“,“您没有登录,请先登录“REQUESTDISPATCHERRDREQUESTGETREQUESTDISPATCHER“/PAGES/LOGINJSP“RDFORWARDSREQUEST,SRESPONSE3在ACTION处理类中编码实现处理置顶帖子的操作。该编码操作首先获取请求中传递的帖子的ID值,然后获取当前时间,最后生成SQL语句,并执行该SQL语句实现置顶帖子操作。实现置顶帖子功能的关键代码如下STRINGBBSIDREQUESTGETPARAMETER“BBSID“IFBBSIDNULLSTRINGTODAYCHANGEDATETIMECHANGEDATESTRINGSQL“UPDATETB_BBSSETBBS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中改革史课件
- 高三复习修辞手法课件
- 企业间虚假合同抵消债务风险防范协议
- 矿权转让居间协议书(含矿山安全生产责任)
- 文化创意园区租赁协议范本:房东出租艺术工作室
- 离职员工经济补偿金及原公司企业运营管理协议
- 髋骨骨折病人课件
- 品牌口碑优化广告代理合同
- 用电安全与租赁合同范本(适用于商住楼)
- 广告媒体资源储备代理合同
- 细胞生物学-第五章-物质的跨膜运输
- 大学生的环境适应与心理健康
- 云计算对法律数据处理模式的重塑-洞察阐释
- 幼儿跑酷培训
- 中成药相关培训课件
- 景区安全用电管理制度
- 《生物化学》课件-1、绪论
- 大队委选拔笔试题目及答案
- 【劳动教育】幼儿劳动启蒙教育清单
- 全科医师基层实践结业考试试题及答案
- 玉环宏博钢材有限公司年产5万吨钢材及配件生产线技改项目环评报告
评论
0/150
提交评论