资源描述
论 文 摘 要基于J2EE+STRUTS2+HIBERNATE3设计技术和sql2005数据库技术的开封大学BBS班级论坛系统,是一个用于班级交流,完成班级内部的信息发布与实现,并提供了基础BBS论坛的皱型,包括前台用户交流和后台管理。其功能主要是:帖子的发布,帖子的回复,用户注册,用户信息维护,用户评论,最新帖子显示,最新评论和推荐帖子的实现,用户信息管理,帖子和评论管理,公告管理,友情链接等几大功能模块。 本系统除了使用J2EE+STRUTS2+HIBERNATE3技术外,还加入了jstl,EL表达式,过滤器,jquery无刷新技术。同时也加入了flash元素,使的网页的互动性更强。同时对于想要学习框架技术的同学提供了良好的模板。本系统利用各种面向对象的开发手段,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,真到形成用户满意的可行系统。 整个系统的开发过程严格遵循软件工程的要求,做到模块化分析、模块化设计和代码编写的模块化。本系统有很强的实用性、开发效率高、移植性好、稳定性好等优点。可以在任何安装了java虚拟机和J2EE的系统上面使用,由于java的一次编译,次次运行的特点,所以搭建本系统可以节约成本,不需要额外的增加平台环境和硬件。对于系统的维护也不需要专业人员,只要会基本的电脑操作,那么项目的维护就不是问题。关键字:BBS 论坛系统 struts hibernate jquery jstl目 录一、引言2二、相关软件及技术介绍2(一)java语言2(二)Microsoft SQL Server 20053(三)myeclipse3(四)tomcat3(五)jsp,servlet4(六)struts+hibernate4三、系统概述5(一)功能概述51用户注册52帖子管理53用户信息修改54评论回复55帖子导航,帖子搜索56后台管理6(三)运行环境61软件配置72硬件配置7三、功能需求7(一)系统功能分析及用例图类图7(二)功能描述101用户注册管理102帖子管理103用户信息管理10四、系统功能设计11(1)数据库需求分析11(2)数据表设计14(3)表数据18五、详细设计20(一)主页面20(二)用户23(三)管理功能介绍27六、功能测试28(一)链接测试28(二)设计语言测试28(三)数据库测试29七、安全测试29结 论30BBS班级论坛系统的实现王世阳(开封大学软件学院应用三班)一、 引言随着信息产业和Internet的飞速发展,计算机的使用已渗透到各个领域。这就迫切地要求计算机能够对浩瀚的信息实现自动化处理,以实现及时、准确的掌握信息。科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 本项目是一个基于论坛形式的项目,使用本项目,大家可以实现普通论坛的操作,从而就可以实现互动的效果,但因为时间紧促,所以核心功能已经完善,但扩展功能却无法实现,下面将会详细介绍项目的组成和架构。 本系统除了使用J2EE+STRUTS2+HIBERNATE3技术外,还加入了jstl,EL表达式,过滤器,jquery无刷新技术。同时也加入了flash元素,使的网页的互动性更强。同时对于想要学习框架技术的同学提供了良好的模板。二、相关软件及技术介绍(一)java语言Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。它主要包括javaSE,javaEE,javaME。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。(二)Microsoft SQL Server 2005SQL Server 是一个关系数据库管理系统,SQL Server作为微软在Windows 系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐。另外,SQL Server 2005 除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮数据,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET 战略中发挥着重要的作用。除了sqlserver2005外,还有access,oracle,mysql等其他的很多数据库,对于oracle来说,它是面向企业级应用的大型数据库,所以在这里就不考虑使用oracle。Access则是因为它的关系性功能不强,所以在这里也排除在外。至于mysql,因为mysql的数据库数据转移不方便,所以也不使用。(三)myeclipseMyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。(四)tomcatTomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。(五)jsp,servletJSP是JavaServer Pages 的简写。JSP 技术能让Web 开发员和网页设计员快速地开发容易维护的动态Web主页。用JSP 开发的Web 应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP 将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web 的应用程序的开发变得迅速和容易。JSP 技术是Servlet技术的扩展。Servlet是平台无关的,100%纯Java的Java服务端组件。Servlet类似于通用网关接口(CGI)脚本,servlets 支持请求响应编程模式。当客户端给服务器发送请求时,服务器将请求发送给servlet。然后,servlet 构建一个响应,服务器将该响应发送回客户端。然而,跟CGI 脚本不同的是,servlets 和HTTP服务器运行在同一个进程内。(六)struts+hibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。 除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。以上的软件和技术都是现今主流的开发工具和技术,它们的框架,安全,性能等方面都已经很完善,使用它们可以更好完成对系统的构建和运行,相比于C#和VB,它更具有平台,速度,安全等方面的优势。三、系统概述(一)功能概述提供包括用户注册,帖子发布、评论以及后台管理等内容。1 用户注册 用户注册可以使未注册用户注册到自己的账号,并且可以凭借此账号实现与其他用户的互动。2 帖子管理 本系统实现了帖子的扩展功能,具有对帖子进行动态显示的效果,用户的最新评论,帖子加精推荐等功能。3 用户信息修改 对于注册用户可以修改自己的信息,使用的是jquery插件实现页面的无刷新显示。但碍于时间原因,此处的功能就实现了二处。4 评论回复 可以把关于本帖子的所有用户回复信息进行统一显示出来的效果,使的帖子的内容可以更加的精彩。5 帖子导航,帖子搜索 本系统还完成了基本的帖子搜索功能,用户可以分类搜索帖子也可以通过搜索自己喜欢的关键词进行搜索。6 后台管理 后台管理是每个系统都具有的,本系统也不例外,除了基本的功能外,本后台还具体用户动态信息,帖子的浏览回复等信息。(二)系统的处理流程 如图1所示:登陆系统个人管理员修改个人头像房信息增客房信息前台操作后台管理查询修改个人资料信息增客房信息发表评论发布帖子用户管理信息增客房信息帖子管理房信息增客房信息评论管理息增客房信息在线人数统计信息增客房信息公告发布,友情链接管理信息增客房信息退出退 出图1 处理流程图(三) 运行环境 由于BBS班级论坛系统具有流程复杂、数据量大、操作要求安全的特点,所以必须进行数据库、操作系统、网络等硬软件的合理选择。1. 软件配置 BBS班级论坛系统具有的软件配置主要包括数据库的选择和操作系统的 选择。本系统采用SQLSERVER 2005.操作系统使用windowXP.2. 硬件配置a) 推荐Pentium或更高的处理器,或任何运行于Microsoft Windows NT Workstation的Alpha处理器。b) Microsoft Windows支持的VGA或分辨率更高的监视器。128MB内存以上。三、功能需求(一)系统功能分析及用例图类图 如图2所示:修改个人头像系统整体功能划分查询修改个个人资料个人帖子评论帖子发布管理员公告,友情链接在线人数统计评论管理帖子管理用户管理图2 功能需求设计图系统的基本流程就是上面描述的那样,而对于系统的详细描述则会在后面的部分进行详细的分析及讲解,下面是系统的涉及的基本用例图,通过用例图可以更好的了解系统的构成。 1.用例图图2-1为前台用例,图2-2为后台管理用例图2-1前台用例图图2-2 后台用例图2.实体类图图2-3 实体类图(二) 功能描述用户系统主要由三大子系统组成:用户注册、帖子发布、评论管理,信息维护1. 用户注册管理 提供给非注册用户的合法身份注册,需要用户提供的信息包括用户名,密码,性别,邮箱,真实姓名,身份证ID,教育程度,地址等信息。在系统中管理员具有最高权限。2. 帖子管理 因为本系统开发时间周期短,所以只实现了基本的帖子发布和评论管理功能,对于那些在评论中插入图片等一些特效的展示在这里无法完成。3. 用户信息管理 用户信息管理模块也是比较重要的模块,在这里使用的是页面无刷新技术,利用jquery插件,实现个人图像的上传,信息的修改,但是在这里开发的功能比较少,时间不够,无法完成开发和测试。后台系统除了基本的用户管理、帖子管理、评论管理基本功能外,还加入了一些特色功能,包括:在线人数统计、帖子访问量、公告的发布、友情链接的添加。其中在线人数统计包括了注册人数、访问人数的统计,可以使管理员可以更好更直接的把握住网站的人流信息,从而为网站的后期功能策划提供了参考。帖子访问量可以使管理员更好的了解用户发表的帖子受欢迎程度,从而可以给这些受欢迎的帖子设置加精或者推荐都操作。至于公告的发布,则是把最新最快的网站信息及时的呈现给用户。友情链接可以把那些建立了同盟关系或者是用户反应的那些访问量大的网站进行添加。四、系统功能设计BBS班级论坛系统管理员个人 帖子管理在线人数统计公告,友情链接帖子评论帖子发布 用户管理查询修改个人资料个人头像修改评论管理根据系统功能要求可以将系统分解成几个子系统模块来分别设计应用程序界面,如图3所示:图3功能设计(1) 数据库需求分析 数据库是信息管理的基础。数据库结构直接关系到各种功能的实现和程序运行的效率。进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。数据库的安全也是很重要的,对于sa账户,一定要做到保密。E-R实体图分析用户用户名名email性别密码况身份证号图4 用户E-R实体图用户扩展用户名用户头像访问密码用户最爱用户等级用户别名图5 用户扩展E-R实体图帖子帖子名修改日期发帖日期发帖人帖子状态帖子评论帖子分类帖子内容图6 帖子E-R实体图评论评论的文章评论人评论发表时间评论ID评论内容图7 评论E-R实体图管理员管理员名公告管理访问密码在线人数管理友情链接管理图8 管理E-R实体图分类分类名分类简写ID图9 帖子分类E-R实体图以上的这些E-R图的数据库实体关系为:用户与用户扩展为1:1的关系;用户与帖子之间的关系为1:n的关系;帖子与帖子分类之间的关系为n:1的关系;评论与帖子之间的关系为n:1的关系。(2) 数据表设计数据表中的数据字段和数据类型与相关属性 (1)用户信息表(UserInfo)如图10所示:图10 用户信息表视图 (2)用户信息扩展视图(UserInfo1)如图11所示:图11 用户信息扩展表视图(3)用户ID视图(UserID)如图12所示:图12 userID表视图(4)管理员数据表视图(admin)如图13所示:图13 admin表视图(5)帖子数据表视图(article)如图14所示:图14 article表视图(6)帖子分类数据表视图(articleCate)如图15所示:图15 articleCate表视图(7)评论数据表视图(comment)如图16所示:图16 comment表视图(8)友情链接数据表视图(friend)如图17所示:图17 friend表视图(3) 表数据1.用户资料数据表(UserInfo)如图18所示:图18 UserInfo表2.用户信息扩展表(UserInfo1)如图19所示:图19 UserInfo1表3.用户ID表(UserID)如图20所示:图20 UserId表4.帖子数据(admin)如图21所示:图21 article表5.帖子分类(articleCate)如图22所示:图22 articleCate表6.评论数据(comment)如图23所示:图23 comment表五、详细设计(一)主页面为了提高页面的多样性和可读性,在首页增加了帖子的分类以及最新帖子,推荐帖子等的设置。当用户第一次浏览网站的时候会自己跳转到主页,例如图24所示:图24 主页主要的功能代码如下:public String intercept(ActionInvocation arg0) throws Exception ArticleDao ad=new ArticleDaoImpl();OtherDao od=new OtherDaoImpl();Gonggao g=(Gonggao) od.selectGonggao().get(0);List f=od.selectFriend();List top3=ad.selectArticleTop3(zyjl);List top31=ad.selectArticleTop3(qgyl);List news=ad.selectArticleTop7ByNew();List news1=ad.selectArticleTop7ByComment();List news2=ad.selectArticleTop7ByRecommend();ServletActionContext.getRequest().setAttribute(top3, top3);ServletActionContext.getRequest().setAttribute(top31, top31);ServletActionContext.getRequest().setAttribute(news, news);ServletActionContext.getRequest().setAttribute(news1, news1);ServletActionContext.getRequest().setAttribute(news2, news2);ServletActionContext.getRequest().setAttribute(gonggao, g);ServletActionContext.getRequest().setAttribute(friend, f);arg0.invoke();return OK;同时在主页这里你还可以以非用户身份查看帖子的信息,搜索帖子,还可以通过导航来搜索帖子。图25,图26,图27用来演示这些功能。图25 帖子信息主要的功能代码如下:a href=reback.jsp?articleaid=回复发帖返回列表imgalt=touxiangsrc=users/.jpg / 等级:积分:0发表时间:分享收藏评分a href=reback.jsp?articleaid=回复評論 图26 帖子搜索这些基本的功能介绍完了之后,肯定想试试注册之后带来的乐趣了,下面介绍第二大块:用户模块介绍。(二)用户首先就是需要注册用户了,这是这类网站必不可少的功能,同样我们的网站也提供了这样的功能,下面就看看注册页面吧。如图28图28 注册页面主要的功能代码如下:Overridepublic String execute()System.out.println(users.getUsername();System.out.println(users.getPassword();System.out.println(users.getPid();System.out.println(users.getSex();UserId ui=new UserId();UserInfo1 ui1=new UserInfo1();ui1.setUserInfo(users);users.setUserinfo1(ui1);ui.setUserInfo(users);RegeditUser ru=new RegeditUser();ru.save(users);ru.save1(ui);UserInfo1 ui2=new UserInfo1();ui2.setUsername(users.getUsername();ui2.setUserlevel(0);try ru.save2(ui2); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();ServletActionContext.getRequest().getSession().setAttribute(user, users);return SUCCESS;虽然对于那些大型网站比较注册功能比较单一,但这也是可以实现注册的奥,这里采用了javascript技术,可以使用户注册的时候更加规范。注册之后用户就可以进行帖子的评论回复了,同时也可以修改自己的信息奥。不过这里的用户信息修改就实现了两个功能,所以就比较逊色了。图29 用户信息界面实现代码:function changehead()var change=$(#changeHead);var str=+;change.html(str); function changehead1() var change1=$(#changeHead1); change1.html(邮箱:input name=email id=email value=/); function changeEmail() var data=$(#email).val(); $.post(users/userupdate,userupdate:data,callback) function callback(data) var change1=$(#changeHead1); change1.html(修改成功!请刷新。); 图30 帖子页面图31 评论之后的页面就这样按照上面的流程之后 就可以实现评论的功能。到这里,基本的功能差不多算是介绍完毕了,下面就需要来介绍后台界面了.(三)管理功能介绍对于后台来说,一般安全是最重要的,出于这个考虑,在实现功能的时候对后台的所有请求进行了过滤,从而达到了非法用户的非法请求。public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)if(ServletActionContext.getRequest().getSession().getAttribute(admin) != null)try chain.doFilter(req, res); catch (IOException e) e.printStackTrace(); catch (ServletException e) e.printStackTrace();elsetry ServletActionContext.getResponse().sendRedirect(./admin.jsp); catch (IOException e) e.printStackTrace();管理员登录之后就跳转到管理主页。在这里分成了6大块,分别是用户管理,帖子管理,评论管理,在线人数,其他功能以及版权所有。这里集中介绍前三大块,其他的可以通过演示来介绍。首先就是用户管理模块:它里面包括了用户管理,修改资料,和管理员信息三个模块。其中用户管理可以对用户进行集中的管理,包括删,改功能,需要强调的一点是,删除用户会把帖子内容也删除掉,所以尽量不要删除用户。其次就是帖子管理模块:它包括帖子的分类,帖子管理,帖子信息等功能。这里主要介绍帖子管理,帖子管理可以对帖子进行二次编辑,包括对帖子的加精,推荐的操作,当然了删除也是必须有的。再次就是评论管理模块:管理员可以通过这个功能实现对于那些具有不好意义或者其他敏感类的评论进行管理。至于其他模块就不作说明了。六、功能测试(一)链接测试链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。(二)设计语言测试Web设计语言版本的差异可以引起客户端或服务器端的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言也要进行验证。(三)数据库测试在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误、输出错误。数据一致性错误主要是由于用户提交的信息不正确而造成的输出错误,主要是由网络速度或程序设计问题等引起的错误字段导致提交数据库失败,针对这两种情况,可分别进行测试。七、安全测试针对网站系统的安全性测试主要有: 网站系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如30分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 (1)平台测试 市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Linux等。网站系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。 (2)浏览器测试浏览器是网站客户端核心的构件,另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。针对此项,我们在IE浏览器上浏览正常。结 论对于这个项目,还要许多其他的东西需要考虑,例如项目的整体安全性,数据流量,项目负荷,外链,非法请求,IP统计等都没实现上去,往后的发展方向应该放在用户安全的这方面,包括对于用户session的操作,无权限用户的限制等方面,大体的设计就是这样。对于后台管理方面,则会添加上很实用的信息,例如用户的账号功能设置,敏感词语过滤,会话时间设置,IP地址限制,帖子审阅,用户审阅等功能。对于用户前台,要做到安全,防止入侵,同时还要添加好友功能,喜欢的帖子收藏功能,这都是以后要发展的方向。为期半个学期的设计生活很快就要过去,回忆这一段时间,我的感触很深,由于是第一次开发一个这种论坛系统,而且时间周期也有点短,虽然这些都会,但双拳不敌四手。所以开发起来的时间就不足,感到肩上的压力很大。但随着开发的进程,一个个功能的实现,终于完成了今天这个项目,说真的白天上班,晚上下班回去写代码,真的是不好受类。首先,这次设计我觉得最大的收获是软件设计概念思想的建立。以前做一些小软件的开发或课程设计时,常常是没有明确的思路,就开始编写代码,虽然说编码没有困难,但当遇到问题是才发现是由于刚开始考虑的不够周到所致。通过这次设计我发现,软件设计前工作准备的重要性。在做开题报告的过程中,通过主动的系统调查、系统分析,完成系统的结构设计,数据库规划等工作,这对将要开发的系统有了更深的了解,为下一步系统开发做好了准备。建立了软件设计的正确概念,为今后继续开发系统奠定了基础。三年的学习不算很短,也不算很长。计算机知识的运用也不止一次了,但我觉得这次毕业设计才是一种真正的实战。从开始到结束,老师只能在软件开发的整体设计和思路上给我们指导,但如何用语言把该软件给开发出来,要完全由自己去完成,这对于我们来说是一种锻炼更是一种挑战,这次毕业设计为我们今后的开发工作奠定了基础,积累了经验。30
展开阅读全文