《基于JSP的BBS论坛管理系统-毕业设计.docx》由会员分享,可在线阅读,更多相关《基于JSP的BBS论坛管理系统-毕业设计.docx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 学科分类号 0701 本科生毕业论文(设计)题目(中文): 基于JSP的BBS论坛管理系统 (英文): BBS Forum Management System Based on Jsp 学生姓名: 学号: 系别: 数学与应用数学系 专业: 信息与计算科学 指导教师: 起止日期: 2017年6月12日目录摘 要1关键词1Abstract1Keywords1前 言21 系统技术及运行环境31.1 JSP技术简介31.2 JAVABEAN技术简介41.3 JDBC技术简介41.4 TOMCAT技术简介51.5运行环境52 需求分析62.1 编写目的62.2 任务目标62.2.1基本性能62.2.2
2、开发目标72.2.3 应用目标72.3选择编程语言72.3.1 JSP与ASP的比较72.3.2 JSP的特点与优点83系统设计103.1系统设计思想103.1.1 网上论坛系统说明103.1.2 网上论坛系统总体分析103.2 数据库设计思想113.3 各单元模块设计123.3.1用户注册登陆功能123.3.2会员发贴与回复功能133.3.3管理员管理帖子与用户管理功能154 编码实现164.1 功能总体说明164.1.1 功能总体说明164.1.2主要功能流程174.2各个功能模块的实现174.2.1数据库的连接174.2.2用户登陆与注册模块的实现184.2.3分页显示的功能实现234.
3、2.4 发表与回复功能模块实现244.2.5后台管理模块的实现275 系统测试30总 结31参考文献33致 谢3334基于JSP的BBS论坛管理系统摘 要 为了方便信息的交流,在结合动态服务网页(JSP)和MYSQL 技术之下开发了这个快截、界面友好的网上交流系统。论坛使用动态服务网页(JSP)技术建设论坛的骨干框架,使用MYSQL制作系统的数据库,实现了一个功能相对齐全的论坛系统,网友可以自由地提出问题以及帮助他人解决问题,或者交流经验。 该论坛功能较齐全,在这里可以自由地发表自己的观点和对论坛的主题发表意见,我们还可以对网友的问题及时地解决,获取对自己有用的知识。该论坛还有一些特殊的功能,
4、强大的搜索功能等。关键词动态服务网页;论坛;用户管理BBS forum Management System Based on JSPAbstractIn order to facilitate people information the exchange, in unified JSP and MYSQL under the server technology has developed this quick truncation, the contact surface friendly system. The system use the JSP technology construct
5、ion the main frame, use MYSQL as the systems database, realized a forum system which function relatively completely, the net friend has been possible freely to propose the question as well as helped other people to solve the problem, or exchange experience.This forum function is complete, everyone m
6、ay freely express his viewpoint in here and express the opinion to the subject, we also may promptly solve to net friends question, and gain the useful knowledge from there. This forum also has some special functions, for example the power search function.KeywordsJava Server Pages; BBS; user managem
7、ent前 言Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户
8、提供的服务将越来越丰富,越来越人性化。我们发现这样一个事实,一个用户在访问一个网站时一般来讲只对该网站的部分内容感性趣,而且这种兴趣会持续一段时间。这点启发了我们,如果能根据用户的喜好为不同的用户显示其个性化的页面,即着重显示该用户感兴趣的内容,将为用户节约大量的检索时间,而且这样的网页显然是更具有吸引力的。一些站点已经在这方面做出了一定的尝试,通常采用的方法是,在用户登陆时为其提供一系列的选项,使用户能够对站点进行一些自主的设置。这样做能够使站点呈现一定程度的个性化,但是对用户来讲,还是比较烦琐,而且在用户了解一个站点前让其对站点进行设置,其结果未免有些粗糙。于是我们构想了这样一种方案,对用
9、户登陆后的动作进行跟踪,分析,发掘用户点击的规律,即用户先后点击的关联规则,这样,在用户点击一个主题(链接)之后,系统能够自动生成一个页面,其中包含了该主题下用户经常关注的内容(若干链接),这样便在无须用户做出任何额外工作的情况下实现了为用户量身订做的个性化页面。要实现这样的功能,离不开后台数据库的支持。用户验证信息,收集到的用户点击信息,主题层次信息,分析得出的关联规则表等大量的数据都由数据库管理系统管理。本文中数据库服务器端采用了MYSQL数据库并以先进的JDBC技术进行数据库存取等操作,使Web与数据库紧密联系起来。本文作者主要完成Web服务器端的用户管理、帖子管理、数据库管理、浏览和查
10、找功能等设计、实现与完善以及整个实验网站的组织建立和测试工作。1 系统技术及运行环境1.1 JSP技术简介JSP是服务器端的脚本语言,是以SERVLET为基础开发而成的动态网页生成技术,它的底层实现是JAVA SERVLET。JSP(JAVA SERVER PAGES)由HTML代码和潜入其中的JAVA代码所组成。服务器在页面被客户端请求以后对这些代码进行处理,然后将生产的HTML页面返回客户端的浏览器JSP的特点是面向对象、 跨平台、 和SERVLET一样稳定、 可以使用SERVLET提供的API,同时克服了SERVLET的缺点。在使用JSP时一般和JAVABEANS结合使用,从而将界面表现
11、和业务逻辑分离。1.2 JAVABEAN技术简介JAVABEAN是基于JAVA的组建模型,有点类似于MICROSOFT的COM组建。在JAVA平台中,可以无限扩充JAVA程序的功能,通过JAVABEAN的组合可以快速生产新的应用程序。对于程序员来说,最好的一点就是JAVABEAN可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JAVABEAN 通过JAVA虚拟机(JAVA VIRTUAL MACHINE)执行,运行JAVABEAN最小的需求是JDK1.1或者以上的版本。JAVABEAN传统的应用在于可视化的领域,如AWT下的应用。自从JSP诞生后,JAVABEAN更多的应用
12、在了非可视化领域,在服务器端应用方面表现出了越来越强的生命力。1.3 JDBC技术简介JDBC是一组API,定义了用来访问数据库源的标准JAVA类库,使用这种类库可以使用一种标准的方法、方便地访问数据库资源。JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无须对特定的数据库的特点有过多的了解,从而大大简化了和加快了开发过程。JDBC API 为访问不同的数据库提供了一种统一途径,像ODBC一样,JDBC为开发者屏蔽了一些细节问题。另外,JDBC对数据库的访问也具有平台无关性。1.4 TOMCAT技术简介在已JAVA技术为的WEB开发
13、领域中,TAMCAT是许多JAVA程序员相当喜爱的开放源代码产品,它附属在APACHE SOFTWARE FOUNDATION 所主导的JAKART项目内。由于TAMCT是SERVLET与JSP技术的参考实现(REFERNCE IMPLEMENTATION),所以它不但可以当作独立的WEB服务器,也可以结合其它的WEB服务器,只担任SERVLET容器或JSP容器的角色。1.5运行环境为了保证BBS论坛管理系统运行的高效性和可靠性,服务器应具有较高的软硬件配置,客户端的要求不是很高。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求如下:软件环境:客户端: W
14、indows95/98/2000/XP,Internet Explorer(IE)等。服务器端:Windows NT/Windows2000,Tomcat 5.0,JDK 1.5及其以上版本,IE等;数据库:采用MYSQL,运行于服务器端。硬件环境:服务器 CPU:PIII 500以上 ,内存:512M以上。客户机 CPU:P200MMX以上,内存:32M以上。2 需求分析2.1 编写目的当今网络技术逐渐渗入社会生活各个层面,以前网站上的论坛管理系统要用户登陆以后才能进行相关访问及互动。而随着网络互联技术的进步,现在网站投票只需打开网页就可进行论坛留言。论坛对象是很多的,各个层次都可进行论坛访
15、问,大至国家领导,小至一个普通干部,访问和留言从到指定用户进行表格到现在通过网络直接点击相应就可进行。网上论坛管理系统可解决游客访问及留言,致使现在几乎各个网站都有各种类型网站论坛管理系统,用户可选择自己的看法。所以我提出了本课题的研究。2.2 任务目标2.2.1基本性能系统包括主要的功能:新用户的注册,会员登录,管理员删除用户,管理员删除帖子和修改帖子,查询主题,和查询用户这些功能,游客浏览留言,会员新增主题,会员留言回复,查询主题这些功能,可以满足一般的用户需要。2.2.2开发目标这个系统预期的目的是为了做成交互式的网页,方便客户端和浏览器端之间的交流。通过论坛,人们能够相互交流沟通,把疑
16、惑在论坛里公布,大家献计献策,共同学习,共同进步。2.2.3 应用目标网上论坛系统是一个会员登录留言系统。网上游客能够浏览论坛上的帖子,并且能够注册成为用户。论坛注册会员能够发表帖子,让大家积极参与讨论。论坛管理员能够便于管理论坛,包括浏览游客留言,审核留言,对于不健康或是不利于社会稳定的留言能进行删除操作。2.3选择编程语言2.3.1 JSP与ASP的比较总的来讲Java Server Page(JSP)技术和Microsoft 公司提供的Active Server Pages(ASP)技术在技术方面有许多相似之处:两者都是基于WEB应用实现动态交互网页制作提供技术环境支持。两者都能为程序开
17、发人员提供实现应用程序的编制与自带组建设计网页从逻辑上分离的技术。而且两者都能替代CGI使网站建设与发展变得较为简单与快捷。1).相同之处 都是运行于服务器端的脚本语言,两者都是动态网页生成技术,这两项技术都是由HTML来决定网页的版面,都是在HTML代码中混合某种代码,有语言引擎解释执行程序代码。HTML主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。2).不同之处JSP是由SUN公司推出的一项技术,是基于JavaServlet 以及整个JAVA体系的WEB开发技术,利用这项技术可以建立先进、安全和跨平台的动态网站。ASP是MS公司推出的技术只能在MS的平台上运行,无法实现跨平台,
18、也无安全性保障。ASP下的编辑语言是VBScript 之类的脚本语言,而JSP使用的是JAVA。ASP与JSP还有一个更为本质的区别:两种语言引擎用完全不一样的方式来处理也面中潜入的程序代码。在ASP下,VBScript代码被ASP引擎解释执行。在JSP中,代码被编译生产Servlet并有JAVA虚礼机执行,这种也面仅在对JSP也面的第一次请求时发生。2.3.2 JSP的特点与优点综合而言,JSP技术具有下面的特点:1)write once run anywhereJSP技术继承了JAVA先天性的先进概念“write once run anywhere”这种概念正越来越深远的影响着互连网行业的
19、交互式、WEB设计的理念。JSP Pages 可以非常容易的开平台跨WEB服务器软件来是设计和开放源代码。2)支持多种动态网页格式目前对使用JSP技术设计出来的网页应该采取什么样的格式还没有一个明确的标准。一般来说JSP技术即可以支持HTML/DHTML的传统浏览器文件格式,又可以支持应用与无线通讯设备例如移动电话、PDA等设备进行网页浏览器的VML文件格式,还可以支持其它一些B2B应用的XML格式。与以往的其它WEB应用技术相比较JSP技术有它很鲜明的特点。3)JSP 标签可扩冲性尽管JSP与ASP都使用标签与脚本技术来制造动态WEB网页,但是JSP技术能够使开发者扩展JSP标签,使得应用J
20、SP的开发者能定制标签库所以网页制作者可以充分利用与XML兼容的标签技术,大大减少了对脚本语言的依赖。由于指定标签库技术使得网页制作者降低了制作网页和想多个网页扩充关键功能的复杂程度。4)JSP跨平台的可重用性JSP的开发人员在开发过程中一直关注可重用性,JSP足见、企业JavaBean或制定的标签都是跨平台可重用的。企业JavaBean可以访问传统的数据库并能并能已分布式系统模式工作于UNIX和WINDOWS平台,JSP标签可扩充功能为开发人员提供简便的与XML兼容的接口,即共享网页的打包功能使其完全的工业标准化。这种基于组建的模式能够有效的提高应用程序的开发效率。因为这种模式能够使开发人员
21、利用快捷的子组建快速创建模板应用程序。然后再整和一些附加功能将其打包成一个JAVABEAN组建。5)易于维护性基于JSP技术的应用程序比基于ASP的应用程序更易于维护和管理。脚本语言都很好服务于小的应用程序但不能适宜大型的复杂的应用程序,因为JAVA是结构化的,它比较比较容易创建和维护庞大的组建化的应用程序。3系统设计3.1系统设计思想3.1.1 网上论坛系统说明此网上论坛中三种不同角色游客、注册用户管理员分别可现: 游 客:查看帖子、注册新用户。 注册用户:查看帖子、发新帖子、回复信息、查询主帖。 管理员:帖子管理、用户管理、数据库管理。3.1.2 网上论坛系统总体分析通过上面的功能说明,我
22、们可以将论坛的制作分为四大部分:(1) 会员注册和登陆模块:这个模块的功能,就是新来网友可以填写注册资料 ,通过审核后便成为本论坛的正式会员,并可以以会员身份登陆论坛。(2) 文章显示模块:显示所有会员最新发表的一些文章主题。(3) 发表文章模块:为会员提供发表文章的地方,以及回复主题等。(4) 论坛与用户管理模块:版主以上职务可以进行对文章和用户进行处理,查询,修改,删除等。了解了具体的功能需求后,就可以按模块的开始论坛的设计了。当然,这些模块的只是在功能上对论坛结构的划分,实际上并不能够完全的把他们独立出来进行设计。对于这种较小的应用,也没有必要进行完全的模块化设计,在良好的规划下直接写程
23、序代码或许来的更为简单一些。3.2 数据库设计思想在建设网站系统之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。尽量分离各实体对应的表,一个实体对应一个表,分析该实体有哪些属性,对应有些什么字段,以及各实体之间的联系。实体、属性与联系是进行概念设计时要考虑的三个元素,也是一个好的数据库设计的核心。从实际出发,经过仔细地设计,得到各表的设计如表3.13.3所示。表3.1 帖
24、子信息表article字段字段名类型宽度小数位索引可否为空id编号Aotu_increment一一是否pid父亲编号INT11一一否Rootid孩子编号INT11一一否Title标题varchar50一一一Writer作者varchar20一一一cont内容varchar250一一一pdate发贴日期日期型一一一一表3.2 用户信息表user字段字段名类型宽度小数位索引可否为空id会员编号Aotu_increment一一是一name 会员姓名varchar32一一一password会员密码varchar14一一否sex会员性别varchar2一一否email会员邮箱varchar20一一一表3
25、.3管理员信息表adminuse字段字段名类型宽度小数位索引可否为空id会员编号Aotu_increment一一是一name 会员姓名varchar32一一一password会员密码varchar14一一否3.3 各单元模块设计3.3.1用户注册登陆功能此部分是实现用户的注册功能。通过填写注册资料,正确填写后,点击注册按钮后便可注册成为正式的会员。如图3.1图3.1 注册用户资料填写正确就可以注册了。而且对其用正则表达式做了一些限制。用户名只能是3-12位单字字符,而且不允许注册重复的用户名。性别只能选择男或女其中一个。密码最多不能超过12位,两次密码必须输入一致,否则不可以注册。E-mail
26、必须输入有效的邮箱地址,以便日后能使用到论文的各种功能。只要用户按照出现提示信息输入进去就可以了。用户注册成功后就可以使用会员所拥有的一切功能了。3.3.2会员发贴与回复功能此部分实现会员的发表新帖以及回帖等功能。发表帖子会员只针对会员开放,如果想发表新的主题,必须登陆如果没有账号必须注册以后便可直接点击发表帖子按钮。进到发表帖子页面后,首先要写自己想发表的主题,然后填写作者和正文。如果没有登陆直接点击发表主题,则会直接跳到用户登陆页面。发表主题如图3.2所示:图3.2 发表新贴回复主题界面 如图 3.3所示:图3.3 回复主题发表成功回到显示主题页面 再点击主题会看到主题贴的相关内容和回复内
27、容。回复帖子只针对会员开放,游客不可以回复主题。回复内容比较全面,可有表情,也可以设置字体大小颜色,段落格式等。如果没有登陆直接点击回复则直接跳转到登陆页面。3.3.3管理员管理帖子与用户管理功能此部分主要是管理员对论坛的帖子和会员进行综合管理,删除、编辑、查询、等等。普通会员是不可以进行此操作的。管理员登陆界面如图3.4所示:图3.4 管理员登陆首先用session判断管理员是否登陆,如果没有登陆直接在浏览器里面输入管理界面的地址则不能对其内容进行操作。这样保证了数据的安全性。管理员登陆以后可以对有些文章内容有地方不足时,可以对其进行编辑修改,当然对于不好的帖子或者就是灌水的帖子,严重的可以
28、直接删除了。帖子都是按照发表时间和回复时间排列的,时间最新的帖子则排在最前面,时间越旧的就越靠后面。如果登陆成功则进入管理员管理页面,如图3.5所示:图 3.5 后台管理4 编码实现4.1 功能总体说明4.1.1 功能总体说明(1)前台功能页面登陆与注册:register.jsp、uselogin.jsp、reg_failure.jsp、log_failure.jsp帖子展示:articleFlat.jsp 、articleDetailFlat.jsp发表主题帖:post.jsp回复:reply.jsp、replyDeal.jsp搜索:articleSearch.jsp(2)后台功能页面主页面
29、框架: fram.jsp、left.jsp、main.jsp、top.html帖子管理:modify.jsp、delete.jsp、articleSearch.jsp、searchResult.jsp、articleFlat1.jsp用户管理:userMrg.jsp、login.jsp、searchResultUser.jsp、deleteUser.jsp4.1.2主要功能流程主页面后台管理用户登陆注册是否会员帖子管理注销登陆会员管理发表新帖回复帖子搜索主帖删除帖子修改帖子主帖查询会员删除会员查询图 4.1 主要功能流程图4.2各个功能模块的实现4.2.1数据库的连接出于安全性的考虑,我们将与
30、数据库的连接,单独写出来并进行编译,也就是数据库连接的javabean文件,编译出来的.class文件是无法被修改的只能通过源文件进行修改,我们在JSP页面中只用直接调用该方法即可,在本系统中我们将其命名为DBConMgr.java关键代码如下:表4.1 数据库的连接import java.sql.*;public class DBConMgr private String driverName=com.mysql.jdbc.Driver; /驱动程序名private String userName=root; /数据库用户名private String userPwd=123456; /密码
31、private String url= jdbc:mysql:/localhost:3306/bbs; /连接字符串private Connection conn=null; /数据库连接对象public Statement sm=null; /数据库语句对象 public void ConnectDB() try Class.forName( driverName); conn = DriverManager.getConnection(url, userName , userPwd); sm=conn.createStatement(); System.out.println(-数据库连接
32、成功!); catch(Exception e) e.printStackTrace(); System.out.println(-数据库连接失败!); public void CloseDB() try if (sm != null) sm.close();conn.close(); catch (SQLException SqlE) SqlE.printStackTrace(); System.out.println(-数据库关闭失败!); 4.2.2用户登陆与注册模块的实现用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行发贴或回复时,首先要进入的
33、就是身份验证界面,只有在密码正确的情况下才能进行以后的操作,如果输入的密码不正确,则不能进行发表新帖和回复。如果用户以浏览者的身份进入网站,则只能进行一般的帖子浏览和搜索,而不能发表新帖和回复,在点击发表新帖后,系统会判断该用户是否是登陆用户,如果不是则进入登陆页面,如果是第一次登陆,请先注册。登陆的具体实现要通过一个全程变量,即Session变量来实现,用户登录的界面userlogin.jsp,从user表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息该变量称为session.setAttribute(uLogined, true);。具体的判断过程为:表
34、4.2用户登陆代码实现 boolean ulog = false; /判断用户是否登陆String u = (String)session.getAttribute(uLogined);if (u != null & u.trim().equals(true) ulog = true;若ulog为false,表明没有经过登陆与否的验证,则只能已游客的生份浏览和搜索帖子如果想留言和发表帖子,只有登录或注册用户才可以。若ulog为true则表名用户已经登陆,而且可以用session得到用户名(String)session.getAttribute(name),显示在主页上。如果用户还不是会员则提示
35、用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即user表,并提示用户注册成功。就可以进行其它有效的操作了。系统对用户的注册信息的验证实现如下:首先是用正则表达式对表单的控制表4.3 正则表达式对表单的控制 function Check() reName =/w3,12$/; rePwd =/w6,12$/; reEmail=/w+w+.w+$/;if(!reName.test(document.register.use
36、rname.value)window.alert(用户名只能是3-12单字字符!);window.register.username.focus();return false;if(!rePwd.test(document.register.pwd.value)window.alert(密码只能是6-12位单字字符!);window.register.pwd.focus();return false;if(document.register.pwd.value!=document.register.confpwd.value)window.alert(请验证密码!);window.regist
37、er.confpwd.focus();return false;if(!reEmail.test(document.register.email.value)window.alert(E_mail格式不对!);window.register.email.focus();return false;document.register.submit();/填写的内容都符合那么就会提交表4.4 用户注册代码实现% request.setCharacterEncoding(gb2312);String action = request.getParameter(action);/提交到自身所以需要做判断
38、String username;if (action != null & action.trim().equals(login) username = request.getParameter(username);/得到表单信息 String pwd = request.getParameter(pwd); String confpwd = request.getParameter(confpwd); String email = request.getParameter(email); String sex = request.getParameter(sex); try /创建一个用户表数据库读写类 UserMgr userdb=new UserMgr(); User user=userdb.get(username); if (user != null) / 如果记录集为非空,表明有相匹配的用户名,注册失败 try /转发至注册错误页面 response.sendRedirect(reg_failure.jsp); catch (Throwable t) /写异常日