一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】

一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】

ID:479644

大小:458.50 KB

页数:41页

时间:2017-08-09

上传者:U-944
一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第1页
一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第2页
一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第3页
一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第4页
一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第5页
资源描述:

《一个简单网络论坛系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

(20届)本科毕业论文一个简单网络论坛系统的设计与实现 摘要:Java技术随着Internet的迅猛发展,已经成为软件业的主流技术。为了编码的规范化和标准化,各种框架技术不断涌现出来,其中最有名的是Struts2、Spring和Hibernate。Struts2.0版本是在2007年推出的全新框架,它改进了Strutsl的一些主要不足。Struts2比Strutsl更加简单,更加灵活,例如它取消了ActionForm组件、支持OGNL语言,支持多种视图技术,如JSP,FreeMarker,等。Hibernate3借助新的HibernateAnnotation库,即可一次性地分配所有旧映射文件——一切都会按照您的想法来定义——注释直接嵌入到您的Java类中,并提供一种强大及灵活的方法来声明持久性映射.本文首先讨论了Struts2、Spring2和Hibernate基础及其相关技术,包括各个架构的关键支撑技术。最后在BBS论坛系统中应用了Struts2、Spring和Hibernate整合技术。关键字:Java;Struts;Spring;JSP;BBS论坛 TheDesignandImplementationofASimpleBBSSystemAbstract:WiththerapiddevelopmentofInterne,Javatechnologyhasbecomeamainstreamtechnologyofthesoftwareindustry.Inordertoprocessthenormalizationandstandardizationincoding,frameworkstechnologycontinuestoemerge,themostfamousofthemistheStruts2,SpringandHibernate.Struts2.0versionislaunchedin2007,anewframework,whichimprovesthemajordeficienciesinStrutsl.Struts2ismorethansimpleStrutsl,moreflexible,forexample,itcanceledtheActionFormcomponentandsupportsOGNLlanguage,supportsmultipleviewtechnologiessuchasJSP,FreeMarker,andsoon.WiththehelpofnewHibernateAnnotationdatabase,youcanmapdistributionofalltheoldfilesinone-time-everythingwillbedefinedinaccordancewithyourthoughts-commentdirectlyembeddedintoyourJavaclass,andprovidesapowerfulandflexiblewaytodeclarepersistentmapping.ThisarticlefirstdiscussestheStruts2,Spring2andHibernatebasedandrelatedtechnologies,includingthekeysupportingtechnologiesofeachstructure.Finally,appliedStruts2,SpringandHibernateintegrationtechnologyinBBSforumsystem.Keywords:Java;Struts;Spring;JSP;BBS 目录1绪论12基本技术介绍23网络论坛详细设计53.1需求分析53.2总体设计53.3实体类设计与实现63.4网络论坛的基本流程93.5网络论坛各页面功能103.5.1网络论坛首页Article-list.jsp详细功能及描述103.5.2显示图书详细信息bookShow.jsp页面详细功能及描述103.5.3用户发帖Article-addInput.jsp页面详细功能及描述103.5.4网络论坛用户登录User-login.jsp页面详细功能及描述103.5.5网上论坛注册User-regist.jsp页面详细功能及描述103.5.6帖子回复ArticleBack-addInput.jsp页面详细功能及描述103.5.7帖子删除Article-delete.jsp页面详细功能及描述114系统实现124.1游客注册功能124.2用户登录功能154.3游客的操作164.3.1浏览论坛的所有版块164.3.2浏览论坛帖子的信息174.3.3文件下载194.4普通用户的操作204.4.1用户信息的修改204.4.2添加版块214.4.3发表帖子224.4.4回复帖子234.4.5文件上传234.5管理员的操作255开发工具与环境275.1JDK275.2MyEclipse27 5.3Tomcat275.4MySQL数据库275.5Log4j276总结28致谢29参考文献3041 1绪论网络论坛专业叫法叫做BBS,是用户可以交换信息的系统,各地的用户都可以通过本地的业余BBS站与远在异地的网友互通信息。在国外,1978年在美国芝加哥便开发出了最早的BBS系统,但只是基于8080芯片的CBBS/Chicago(ComputerizedBulletinBoardSystem/Chicago。直到1983年,通CapitalPCUserGroup(CPCUG)的CommunicationSpecialInterestGroup会员的努力,改写出了个人计算机系统的BBS。我国直到1995年,随着计算机及其外设的大幅降价,BBS才逐渐被人们知道。但是之后便以惊人的速度发展。国内的BBS系统大致分两类:一类是有商业性质的。一般是有大公司建立,人们利用其交流对商品的看法,解决商品的使用等问题。一类是个人或小型集体建立的。有商业性质的BBS要缴纳一笔费用,而非商业性质的网络论坛一般都有志愿者开发,他们推动了中国计算机网络的健康发展,为广大网友提供信息交流的平台。随着BBS系统的发展,国内已经出现了一些多线站,一次可以允许多个用户同时访问,解决了多人同时拨号一个站台发生冲突的问题。随着WEB2.0时代的到来,BBS将朝着以下两个方面发展:(1)BBS论坛系统将朝着即时性方面发展。使论坛成员在不用刷新页面时就可以看到别人刚刚发的帖子。(2)BBS论坛系统也将朝着图形化方向发展。通过外形的不同来区分不同社区的朋友而不是通过ID。4141 2基本技术介绍本次论坛将采用Java程序语言后台开发,整合Hibernate,Struts2,Spring应用框架,使用JSP作为前台页面的实现,采用jQuery和Javascript技术进行前台开发,MYSQL作为数据库系统,Tomcat作为服务器,将实现一个提供大家交流的系统,使用户可以充分交流自己的知识,看法,经验。MVC设计模式。MVC设计模式将应用程序分为模型,视图,控制器三个部分,按照模型层,视图层,控制层进行分解,从而使得整个系统责任明确、接口清晰,加快了设计开发过程。模型层就是指业务逻辑的处理和数据储存。它分为两层:业务逻辑模型和数据模型。模型接收视图的数据,并返回最终的处理结果。数据模型是指对数据的持久化,它是线路对视图和模型的交换的支持。实现时把“做什么”和“怎么做”分离,这样可以实现业务逻辑的重用。视图层主要用来展现用户所需的数据,他是用户和系统进行交互的界面,这部分工作一般可以由美工人员进行开发和维护,一般可以采用HTML页面,JSP等技术。一般来说,视图只接收来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。MVC设计模式对于视图的处理仅是视图的采集和处理,以及用户的请求而视图上业务的处理,业务流程的处理和状态的改变交个模型层来处理。视图部分大致的处理流程是:页面模板定义布局,视图标签的具体内容,而页面布局初始化并加载页面。用户部件提交参数,通过表示层的校验,将数据提交给业务实体,即模型。控制层是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层就像一个中转站,从用户那里接收请求然后根据参数将模型与视图匹配,将选择符合要求的视图转发给用户。Java开发WEBApplication有几种符合MVC设计模式的开发方式:  1:JSP+Servlet+JavaBean(EJB)2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)3:SSH(Struts+Spring+Hibernate)[1]。Hibernate的JDBC封装和注释简介。本次网络论坛的开发将使用这些目前广泛运用的开发技术。利用Hibernate对JDBC进行了非常轻量级的对象封装,避免去写使用JDBC连接数据库的重复的代码和SQL语句,可以使用面向对象的思维来对数据库进行增删改查等操作。传统的Hibernate的配置依赖于外部XML文件,数据库映射是启动时加载XML映射文件进行的。这需要写大量的Hibernate映射文件。Hibernate注释巧妙的借助HibernateAnnotation库,讲一切的映射关系一注释的形式嵌入到Java类中,强大而且灵活。Hibernate核心接口[2]:Session接口。Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。SessionFactory接口。SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration接口。Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Query和Criteria接口。Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。41 Struts简介。利用Struts2接受客户端的参数,根据请求的参数转发请求给适当的控制器,来控制视图的转发,是结构层次分明,可重用性高。Struts的作用避免了在JSP页面当中写太多的代码,做到保持JSP的界面整洁,同时可以实现MVC模式,Struts的根本作用就是方便以后对程序的修改。在视图层可以使用JSP及其标签外,Struts2也提供了强大的标签库。在模型层,Struts提供Action对象,来管理业务逻辑的调用实现分离逻辑业务。Struts通过配置struts.xml很条理地帮你实现了上述事情,减轻了很多工作量,Strust2在Struts1的基础上,增加了很多东西,标签库进行了扩充,实现上传下载文件非常方便等等[3]。Spring简介。SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务,Spring则完全是一种架构型的框架了,它不属于J2EE应用中的任何一个层,但它提供了对象依赖注入的思想,并且为每个层中遇到的实际问题提供了大量现成的模板类,使用这些模板类的方法很easy,大多数情况下只需要你在配置文件里配置一下就可以实现诸如事务管理或安全性控制这样的复杂问题。Spring通过一种称作控制反转的技术。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。Spring提供了面向切面的丰富支持,允许通过分离应用的业务逻辑操作与系统操作。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。通过使用SpringAOP,Hibernate的增删改查之前开session,和之后的关闭session交给了Spring,减少了程序员的工作量并且并与维护[4]。JSP简介。JavaEE环境中的JSPAPI是一个服务器端的脚本。JSP提供了一个被嵌入到HTML的Java语言片段,达到与服务器交互的目的[5]。Javascript与jQuery简介。JavaScript被设计用来向HTML页面添加交互行为,是一种脚本语言(脚本语言是一种轻量级的编程语言)。在HTML基础上,使用Javascript可以开发交互式WEB网页。Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。jQuery是轻量级Javascript脚本库,熟悉使用jQuery可以很容易写出兼容各种浏览器的页面[6]。jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。本次网络论坛系统使用Struts2负责MVC模式里的“C”,控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层表现。实现本网络论坛的业务逻辑层以DAO层为基础,通过DAO组件的包装,完成系统所需要的业务逻辑。而DAO层负责与持久化对象交互。该层封装了数据的增删改查等操作。DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同的需要,可能有多个实现类。用Spring容器代替DAO41 工厂,完全避免了使用工厂模式,因为Spring本身是个非常强大的工厂,可以让Spring充当DAO工厂。无需程序员自己实现工厂模式,只需将DAO组件配置在Spring容器中,由ApplicationContext负责DAO组件的创建即可。借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用DAO实例。本系统采用B/S三层结构,使用JSP技术进行动态页面设计,运用JavaBean对程序的关键代码进行分装,如对实现分页功能的代码进行分装。用Javascript,Struts技术实现对注册,登录失败时的反馈信息。使用Tomcat作为WEB服务器,MySQL作为数据库管理系统[7]。41 3网络论坛详细设计3.1需求分析网络论坛系统主要是实现网上自由发言,回复等功能的系统。一个典型的网络论坛一般都需要实现帖子信息的正确显示、具体帖子的内容以及对某个帖子的多个回复、客户信息注册登录管理、帖子处理等模块[8]。根据网络论坛的基本需求,本系统需要完成的具体任务如下:1.帖子显示及浏览:当用户进入论坛系统时,应该在主页面中看到分页效果后的信息以供用户浏览。点击某个帖子链接,可以进入浏览帖子详细信息以及对该帖子的回复信息。2.帖子管理:当用户的发言不够合体时,带有管理权限的用户可以删除信息不良的帖子。3.用户发言:注册成为会员并成功登录的用户,可以发帖分享自己的信息。4.用户回复:注册成为会员并成功登录的用户,可以对感兴趣的帖子进行回复5.用户注册及登录:为了能够与其他用户进行互动,需要注册。根据注册时提供的用户名和密码进行登录。6.用户信息更改:成为会员的用户随时可以修改自己的个人信息,比如登录密码。7.版块管理:为帖子分类。用户选择相应的版块进入之后发帖,浏览帖子信息。管理员有增加和删除版块的权限。用户有增加版块的权限。8.资源分享:为了加强信息的交流,让用户通过此论坛可以学习和获得更多的资料,次论坛特别增添了文件上传和下载模块。为了保证信息的安全,只有注册成会员的用户才能上传资料。同时为了让用户可以更方便的获取资源,即使是非用户,也可以通过这个论坛下载需要的文件资源。3.2总体设计系统组成.下表中给出了构成网络论坛的各个组件,通过下表,可以从宏观上了解各个组件的功能。Service层是你的系统的业务逻辑体现,一个Service,应该是在有必要跨多DAO操作,或者需要事务时才被调用。DAO只应该针对直接的对数据库的CRUD操作,然后返回操作结果,不应该有别的逻辑,这样才不会破坏层次。只有DAO是可以写出通用的来减少重复代码,因为数据库只有CRUD四种操作。用户表示层(视图)控制处理层(控制层)业务逻辑层(模型层)Service层Dao层Article-list.jspArticleActionArticleBackActionArticleArticleBackArticleServiceArticleBackServiceArticleDAOArticleBackDAOArticle-detail.jspArticle-addInput.jspArticleBack-addInput.jspUser-login.jspUserActionUserUserServiceUserDAOUser-regist.jsp41 User-updateInput.jspBoard-list.jspBoardActionBoardBoardServiceBoardDAOBoard-addInput.jspFileUpload-list.jspDownloadActionFileUpload-upload.jspFileUploadActionFileEntityFileEntityServiceFileEntityDAOfileUpload.jsp3.3实体类设计与实现实体类的实现在包com.cqs.bysj.bbs2011.model下处理。设计如下:1.User(用户),拥有的属性有:id(用户ID),username(用户名),password(用户密码),email(用户EMAIL),tagManager(管理员标志);2.Article(贴子),拥有的属性有:id(贴子ID),title(标题),recount(回复数量),read(点击次数),content(贴子内容),createtime(贴子书写时间),user(用户),board(版块),articlebacks(回复该贴的帖子);3.ArticleBack(帖子回复),拥有的属性有:id(帖子ID),content(内容),backDate(回复时间,user(回复的用户),article(回复的帖子);4.Board(版块信息),拥有的属性有:id(版块ID),boardname(版块名称),articles(该板块拥有的帖);5.FileEntity(上传的文件),拥有的属性有:id(文件ID),describe(对该文件的描述),filename(文件的名称),fileContentType(文件类型),username(上传者)。创建数据表采用hibernate的annotation字段映射来实现。先写好java实体类,利了hibernate注解的方式设定表结构,主键和主键的自动增长的生成方式,生成各个表的主键关联。这样即采用了一种先建立实体类,在实体类的基础上生成数据库里的表格,省去了花时间去编写SQL语句去建立表格(虽然说现在建立表格多半已经不必写SQL语句)。传统的做法是先在数据库里建立表格,然后再表格的基础上建立实体类。两种做法各有都是设计系统的方法,或许传统的方法更好,毕竟经受了时间的考验,这个系统我尝试了先写实体类然后让hibernate去生成表格的方法。如下设立主键和主键增长方式代码:@Id@GeneratedValuepublicintgetId(){returnid;}41 各个实体类之间的关系图:1nnArticleBackBoardArticleUserFileEntitynnnnnn1n1n1nnn1n利用Hibernate的注解生成相应的表格及表格之间的级联关系。一下是Article类和User,ArticleBack类的部分代码:Article.javapublicclassArticle{privateintid;privateStringtitle;privateStringcontent;privateStringcreatetime;privateintreadcount=0;privateintrecount=0;privateUseruser;privateBoardboard;privateSetarticlebacks=newHashSet();………………………………………………………………………………………………@ManyToOne(cascade={CascadeType.PERSIST})publicUsergetUser(){returnuser;}publicvoidsetUser(Useruser){41 this.user=user;}@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER,mappedBy="article")publicSetgetArticleBacks(){returnarticlebacks;}publicvoidsetArticleBacks(SetarticleBacks){this.articlebacks=articleBacks;}User.java:@Entity@Table(name="user")publicclassUser{privateintid;privateStringusername;privateStringpassword;privateStringemail;privateinttagManager;ArticleBack.java:@Entity@Table(name="articleback")publicclassArticleBack{privateintid;privateStringcontent;privateStringbackDate;privateArticlearticle;privateUseruser;………………………………………………………………………………………………@ManyToOnepublicArticlegetArticle(){returnarticle;}publicvoidsetArticle(Articlearticle){this.article=article;}41 @OneToOne(cascade={CascadeType.PERSIST})publicUsergetUser(){returnuser;}数据库选择。MySQL是一个小型关系型数据库管理系统,使用Hibernate的注解和配置true自动建表,用SQL语言建立名为"BBSBYSJ"的数据库。所有的数据库中的数据都存储在表中。3.4网络论坛的基本流程网络论坛在运行过程中页面的基本流程如下图:Article-list.jsp帖子显示页面Article-detail.jsp帖子详情浏览图书详情显示User-login.jsp用户登录User-Regist..jsp用户注册Article-add.jsp帖子增加ArticleBack-add.jsp帖子回复订单确认User-logout.jsp用户退出管理员管理基本流程如下图:Article-list.jsp帖子显示页面Article-add.jsp帖子增加图书详情显示Article-delete.jsp帖子删除帖子删除页面41 Board-delete.jsp版块删除图书详情显示3.5网络论坛各页面功能3.5.1网络论坛首页Article-list.jsp详细功能及描述获取帖子基本信息集合,循环显示图书分类信息,显示的信息为帖子的标题,发帖的用户,发帖的时间。在帖子标题里设置超级链接,传入该帖子的ID作为参数,点击可以进入显示该帖子具体信息的页面。通过在浏览器输入Article-list,在Struts配置文件里配置相应的action,经ArticleAction的list()方法处理,从而转发到Article-list.jsp页面。在该页面,通过Struts标签循环输出每一个帖子。通过&username=<%=username%>">超级链接链接到Article-detail.jsp页面。3.5.2显示图书详细信息bookShow.jsp页面详细功能及描述本页面是在控制器响应了网上论坛主页提交的查看帖子详细信息请求,即“Article-detail”请求后,跳转到的页面。在该页面中通过Struts标签将获取到的指定帖子详细信息显示出来,包括用户的标题,内容,发帖用户,发帖时间等。同时如果该帖子已有回复的帖子,对应的帖子回复也会在该页面显示。同时点击回复链接提ArticleBack-addInput?articleback.user.username=&articleback.article.id="请求进入User-updateInput.jsp,进行用户信息的修改。3.5.5网上论坛注册User-regist.jsp页面详细功能及描述提交新用户注册请求,同时提交新用户注册信息的表单。提交注册用户姓名、地址、电子邮件地址、电话、用户名、密码以及确认密码的表单元素。注册按钮。在本页面中注册用户可以在表单中输入对应的注册信息,在单击“注册”按钮后,将提交“User-regist.”请求,同时提交新用户的相关注册信息,以便于进行后续新用户注册的处理。3.5.6帖子回复ArticleBack-addInput.jsp页面详细功能及描述41 获取帖子信息后进入ArticleBack-addInput.jsp,此页面也是一个表单,用来获取回复帖子内容。Action为ArticleBack-add,通过Struts对应的ArticleBackAction的add()方法,进行增加回复帖子的处理。成功后转入Article-detail.jsp页面显示新增的回复帖子。3.5.7帖子删除Article-delete.jsp页面详细功能及描述本页面是点击Article-list.jsp的删除链接,成功删除后进入的页面。只是提示删除成功,并提供返回主页的按键。本页面只有管理员有权限进入,进入前有权限判断。41 4系统实现该系统采用Spring+Struts+Hibernate框架来构建,其中Hibernate取代了原始的JDBC操作,并且Spring中对Bean的读取来进行Hibernate中的数据库的级联操作。4.1游客注册功能对于一般的游客,是只有浏览和下载文件的权限,无法发表文章和上传文件。想要获得这些权限,必须首先注册成为用户。在浏览器中输入http://localhost:8080/BBSbysj/Board-list,即可进入论坛首页。在此页面中点击文字“注册”,便会弹出填写用户注册信息表单的方框。表单中的信息包括必填的信息有用户名,密码,确认密码,邮箱。下面是注册表单的JSP代码:注册

传统的注册都是以链接的形式进入另一个页面,会浪费用户的等待时间。为了有更好的用户体验,本论坛将注册表单隐藏在首页,游客点击文字“注册”后页面自动弹出注册表单的方框,由于不需跳转到别的页面,所以运行速度更快。此功能利用Javascript框架之一jQuery来实现。下图4-1,4-2演示的就是这一效果。图4-1图4-2外部引入jQuery必须库:41 外部引入实现此功能的jQuery文件:regist.js里面实现此功能的代码的主要代码:$("#panellh5.head").toggle(function(){$(this).next().show();},function(){$(this).next().hide();})为了防止游客不正当操作,在注册时对于表单的操作要求有:不能为空,确认密码必须和密码一致,邮箱要符合一般邮箱的规则,其中只有有一条不符合,JS都会报错。JS主要代码如下:functionchkEmail(str){returnstr.search(/[w-]{1,}@[w-]{1,}.[w-]{1,}/)==0?true:false}functionCheckSubmit1(){if(form1.username.value==""){alert("请输入用户名");returnfalse;}if(form1.password.value==""){alert("请输入密码");returnfalse;}if(form1.password2.value==""){alert("请输入确认密码");returnfalse;}if(form1.password.value!=form1.password2.value){alert("请确认输入的密码一样");returnfalse;}elseif(form1.email.value=="")41 {alert("请输入email");returnfalse;}elseif(!chkEmail(form1.email.value)){alert("请填写有效的Email地址");returnfalse;}returntrue;}为防止用户名重复造成管理不便,如果用户已存在,则页面会提示错误信息:“用户名已经存在”。主要代码如下:UserDAOImpl.java部分:Listuser=hibernateTemplate.find("fromUseruwhereu.username='"+username+"'");if(user!=null&&user.size()>0){returntrue;}returnfalse;UserAction.java部分:if(userService.find(info.getUsername())){this.addFieldError("name","nameisexist");return"registwrong";}Hibernate封装的JDBC增加用户操作:publicStringinsert(Useruser){hibernateTemplate.save(user);return"success";}图4-3,4-4分别是输入邮箱不合规则,注册用户已经存在的情况:41 图4-3图4-44.2用户登录功能登录表单需要输入用户的用户名和注册时的密码,后台验证正确后方能跳转到登录成功的页面。用户名或密码为空则会在直接在页面上输出提示信息:“用户名或密码不能为空“,如果用户不存在或密码错误则会显示错误信息:“用户名或密码错误”。对于登录表单的处理和注册表单一样,先隐藏,点击文字“登录”后才显示登录表单的方框。以下是各个功能实现的主要代码:隐藏与显示部分:$("#panelh5.head").toggle(function(){$(this).next().show();},function(){$(this).next().hide();})错误信息提示已经登录成功的处理和信息提示:UserAction.javapublicStringlogin(){if(user.getUsername().equals("")&&user.getPassword().equals("")){req.setAttribute("msg","用户名或密码不能为空");return"loginwrong";}user=userService.login(user.getUsername(),user.getPassword());if(user!=null){boards=boardService.list();session.setAttribute("user",user);req.setAttribute("msg","已经登录");returnSUCCESS;}elsereq.setAttribute("msg","用户名或密码有错");return"loginwrong";}UserDAOImpl.java//判断是否输入的用户是否存在于系统publicUserloadByName(Stringusername){41 Listuser;user=hibernateTemplate.find("fromUseruwhereu.username=?",username);if(user!=null&&user.size()>0){return(User)user.get(0);}returnnull;}JSP页面错误信息和登录成功信息显示:
你好${username}
${msg}
登录成功后,返回首页,“注册”和“登录”部分被信息“已经登录”代替,并且在首页“欢迎来到BBS,你好”后面接着输出用户名。如图4-5:图4-54.3游客的操作4.3.1浏览论坛的所有版块在访问论坛首页后立即就可以看到论坛的所有的版块,任何人有权限点击版块名称的链接进入相应的版块浏览里面的帖子。在Board-list.jsp页面用struts标签结合HTML的table标签输出用户建立的版块。代码如下:<%inti=0;%>&pageNo=1">|<%i++;if(i>2){out.print("");41 i=0;}%>业务处理:boards=hibernateTemlate.find("fromBoard");图4-64.3.2浏览论坛帖子的信息进入某个版块后,版块里所有的帖子的会这里显示。当帖子的数量超过一定数量时,会自动分页。帖子按发帖的时间的早晚排序,最新的帖子总是出现在最前面的位置,最早的发帖会被置于末页。在帖子列表(Article-list.jsp)页面显示的信息有帖子的标题,点击数,发表时间,发帖的用户昵称。主要代码:Article-list.jsp标题点击时间发帖人&username=<%=username%>">如图4-7:图4-841 对于帖子的详细信息,要点击帖子标题链接进入帖子详细信息(Article-detail.jsp)浏览页面,包括的信息:帖子标题,帖子内容,帖子创建时间,帖子创建者,回复数,该帖子的回贴。对主帖的回复帖子的信息包括回帖的内容,时间和回帖人。另外在帖子列表和帖子详细信息页面上还有显示信息:帖子的记录总数,总页数。链接:首页,上一页,下一页,末页。下面是JSP分页显示的部分代码:<%Pagerpager=(Pager)request.getAttribute("pager");%>&pageNo=<%=pager.getFirstPageNo()%>">&pageNo=<%=pager.getPrePageNo()%>">&pageNo=<%=pager.getNextPageNo()%>">&pageNo=<%=pager.getLastPageNo()%>">控制层处理的部分代码:List
lists=articleService.list(board,pageNo);pager=newPager(5,pageNo,articles.size(),lists);req.setAttribute("pager",pager);Listlists=articlebackService.detail(article,pageNo);pager=newPager(5,pageNo,articlebacks.size(),lists);req.setAttribute("pager",pager);业务层处理的部分代码publicList
list(finalBoardboard,finalintpageNo){List
lists=null;try{lists=hibernateTemlate.executeFind(newHibernateCallback(){41 publicObjectdoInHibernate(Sessionsession){Queryquery=session.createQuery("fromArticleawherea.board=?orderbya.createtimedesc");query.setEntity(0,board);//取得当前页intpageSize=5;intstartIndex=pageSize*(pageNo-1);query.setFirstResult(startIndex);//startIndex起始行数query.setMaxResults(pageSize);//从startIndex开始读取5条List
articles=query.list();returnarticles;}});}catch(HibernateExceptione){throwe;}returnlists;}如图是帖子回复情况及分页效果的展示:图4-9图4-104.3.3文件下载在论坛首页有“文件上传”和“文件下载”的链接,普通游客无法虽然也能进入浏览文件上传页面,但是未登录状态阻止上传。游客点击“文件下载”41 链接后,进入文件列表页面(FileUpload-list.jsp)。在这个页面输出了此论坛所有的上传文件。并提供下载链接。点击“下载”,即弹出下载框,选择路径即可下载,并不转到别的页面。下载时利用文件类型InputStream。图4-11展示了点击下载后弹出的下载框。图4-11主要代码如下:DownloadAction:publicInputStreamgetDownloadFile(){HttpServletRequestreq=ServletActionContext.getRequest();filename=req.getParameter("filename");System.out.println(filename);try{returnServletActionContext.getServletContext().getResourceAsStream("/upload/"+filename);}catch(Exceptionex){}returnnull;}4.4普通用户的操作用户登录成功后,在看到表示成功登录信息的页面(User-login.jsp)。在此页面点击“添加帖子”,“修改个人信息”,“添加版块”,“文件上传”等链接,会进入不同的页面进行下一步的操作。4.4.1用户信息的修改用户点击“修改个人信息”后,进入“添加帖子”页面,在此页面有显示用户的信息,包括用户名,密码,邮箱。但是为了便于管理,系统不允许用户修改自己的用户名,但是可以修改密码等其他的信息。所以要设置用户名编辑框不可编辑,代码如下:用户名:"readonly/>
在控制层处理当信息变为空时,在页面输出错误提示信息。if(user.getEmail().equals("")||user.getPassword().equals("")){req.setAttribute("msg","内容不能为空");41 return"updatewrong";}然后通过控制层调用业务,业务层调用DAO接口处理操作数据库的操作。一下是部分代码。UserAction.java:user=userService.update(user);UserServiceImpl:returnuserDAO.update(user);UserDAOImpl:user1.setEmail(user.getEmail());user1.setPassword(user.getPassword());hibernateTemplate.update(user1);如图当用户将密码修改为空将报错:图4-114.4.2添加版块在未登录状态下点击添加帖子,在“添加版块”链接下方系统会提示错误:“请先成为用户”。如图4-12:图4-12用户点击“添加版块”链接后,进入“添加版块”(Borad-addInput.jsp)页面,在此页面的表单添加要建立的版块的名称。点击添加。成功后会转入Board-add.jsp页面,此页面输出信息增加成功。如果没有输入,版块名为空,则用Javascript弹出框提示内容不能为空:if(boardForm.boardname.value==""){alert("内容不能为空");returnfalse;}若不为空,请求访问控制层BoardAction类。该类接收JSP页面传来的参数,首先判断版块是否已经存在。若已经存在,则会在版块添加(Board-addInput.jsp)页面输出表示版块已经存在的提示信息。部分代码如下:控制层:publicStringadd(){if(!boardService.loadByName(board.getBoardname())){this.addFieldError("board","boardisexist");41 return"boardAddwrong";}board=boardService.insert(board);returnSUCCESS;业务层://添加版块returnboardDAO.insert(board);//根据Id来load版块returnboardDAO.loadById(boardid);DAO层:board=(Board)hibernateTemlate.load(Board.class,id);hibernateTemlate.save(board);当版块已经存在时。添加被拒绝。图4-134.4.3发表帖子用户点击“添加帖子”链接后,进入“添加帖子”(Article-addInput.jsp)页面,在此页面的表单添加帖子的信息。表单包括的内容有发贴人,帖子标题,帖子内容。点击添加。成功后会转入Article-add.jsp页面,此页面输出信息增加成功。要输入的内容有帖子标题,内容,两者皆不能为空,否则Javascript弹出不能为空的对话框。用户名在此页面不可编辑。在JS视图层隐藏帖子所在版块的ID,在控制层接受ID参数和帖子信息,将帖子关联到相应的版块。另外当然也要将帖子关联到相应的用户。主要代码如下:JSP:用户名:"readonly/>
">控制层:board=boardService.loadById(article.getBoard().getId());user=userService.loadByName(article.getUser().getUsername());article.setBoard(board);article=articleService.insert(article,user);业务层:publicArticleinsert(Articlearticle,Useruser){returnarticleDAO.insert(article,user);}returnboardDAO.loadById(boardid);DAO层:article.setCreatetime(CurrentDate.getCurrentDate());article.setUser(user);41 hibernateTemlate.save(article);用游客或户在未登录的情况下也能进入浏览帖子,但这种情况下点击“添加帖子”跳转到有登录和注册操作的页面,而不会进入发帖页面,同时提示信息:“发帖前请先登录”。如图4-13:图4-144.4.4回复帖子与发帖一样,回复帖子时,如果未登录,也无法进入输入回帖信息的页面。某一帖子可以有多个回帖,将帖子的回帖放到集合里面。在Articl.java代码如下:privateSetarticlebacks=newHashSet();下图是回复帖子信息输入页面:图4-144.4.5文件上传点击链接“文件上传”,进入fileUpload.jsp页面。如果要实现文件的上传,则表单的method属性必须设置成:post提交方式。表单的enctype属性必须设置成multipart/form-data,这种编码方式会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。在未登陆的情况下,游客上传文件会弹出错误提示:请先登录。主要代码如下:控制层FileUploadAction:publicStringupload()throwsException{HttpServletRequestreq=ServletActionContext.getRequest();Stringroot=ServletActionContext.getRequest().getRealPath("/upload");InputStreamis=newFileInputStream(file);System.out.println("path:"+file.getAbsolutePath());System.out.println("file:"+file.getName());41 System.out.println("fileFileName:"+fileFileName);req.setAttribute("fileFileName",fileFileName);FiledestFile=newFile(root,fileFileName);FileEntityfileEntity=newFileEntity();fileEntity.setDescription(description);fileEntity.setFileContentType(fileContentType);fileEntity.setFileName(fileFileName);FileEntityInsert(username,fileEntity);OutputStreamos=newFileOutputStream(destFile);byte[]buffer=newbyte[400];intlength=0;while(-1!=(length=is.read(buffer))){os.write(buffer,0,length);Thread.sleep(1000);}is.close();os.close();returnSUCCESS;}业务层FileUploadServiceImpl:returnfileEntityDao.insert(username,file);DAO层FileUploadDAOImpl:file.setUsername(username);hibernateTemplate.save(file);文件上传成功后暂存在根目录的upload文件下。上传成功后由struts.xml处理跳转到文件详细信息(FileUpload-upload.jsp)页面。在此页面输出刚上传的文件的详细信息,包括上传者,上传的文件名,文件类型,以及对此资源的描述。视图层代码如下:41 在文件上传页面fileUpload.jsp:username:"readonly>
file:
描述文件:如图是文件上传部分:图4-154.5管理员的操作论坛管理员由数据库管理员设置。为了时此论坛能够健康的运行,必须对不健康的引论进行整顿。管理员可以除了普通用户的权限之外,还可以对版块,帖子进行删除,来去除不当言论。实体类User的属性(管理员标志)tagManager等于1的用户才是管理员。部分代码如下:视图层<%if(username!=null&&user.getTagManager()==1){%>&username=<%=username%>">删帖<%}%>DAO层:article=(Article)hibernateTemlate.load(Article.class,id);hibernateTemlate.delete(article);删除版块时,应为board类和article类设置了删除级联所以删除某个版块时数据库里相应版块的帖子也会被删除。相关代码如下:@OneToMany(cascade={CascadeType.REMOVE},mappedBy="board")publicSet
getArticles(){returnarticles;}publicvoidsetArticles(Set
articles){this.articles=articles;}41 删除回复帖子时,由于回复贴与主帖存在级联,直接删除不行,必须在article的属性articlebacks里去除这个回复贴,然后才能删除。代码如下:articleback.getArticle().getArticleBacks().remove(articleback);下图分别是图4-16,4-17,4-18删除版块,删除帖子,删除回复帖子的界面:图4-16图4-17图4-1841 5开发工具与环境5.1JDK[9]JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。无论什么Java应用服务器实质都是内置了某个版本的JDK。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。没有JDK,无法运行Eclipse。5.2MyEclipseMyEclipse企业级工资平台是对EclipseIDE的发展,利用它可以在数据库和JavaEE的开发,发布,以及部署应用程序服务器的整合方面极大的提高工资效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts、Hibernate,Spring。5.3Tomcat[10]Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。当在Apache服务器配置完成之后,可以使用它动态响应要访问的HTML页面的请求。Tomcat是Apache服务器的扩展,可以独立的运行,用于独立的Apache的功能。另外Tomcat还是Servlet和JSP的容器,Servlet是Tomcat的默认的模式。5.4MySQL数据库MySQL是一个小型关系型数据库管理系统,广泛地应用于中小型的网站中。由于其体积小,速度快成本低,并且开源,许多小型网站可以用它节约成本。MySQL是一种关系型数据库系统,MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。5.5Log4jLog4j是Apache的一个开源项目,它是一个日志操作包。通过使用Log4j可以指定日志信息输出的目的地,如控制台、文件、GUI组件,甚至是套接字服务器,还可以控制每一条日志的输出格式。这些复杂的操作可以通过一个配置文件进行灵活的配置而不需要编写代码去实现。41 6总结本文讲述了Java/JSP/Struts/Spring/Hibernate在WEB应用的一些基本知识,并通过网上论坛的程序对SS2H框架的运用进行了深化,从这次实践中可很好的掌握了整合SS2H框架的方法和步骤,必要的包和配置。对Hibernate注释,Spring依赖注释的灵活运用,相信会成为将来WEB开发上十分流行的技术,应为它不替程序员省去了很多代码量,不过要真正掌握好它们却并不是一件容易的事情,比如对Struts标签,OGNL表达式的运用时会出现参数类型不匹配的错误,中文问题的处理,一开始都遇到了麻烦,不过在自己不断的钻研中还是得到了处理。当然,在实际应用的WEB开发中,要复杂的多,还有很多关于安全方面的问题需要考虑以及运行效率方面是我这次系统实现中很难考虑全面的,对于页面的布局,美观的处理也不足,需要将来更多的学习。41 参考文献[1]精通JavaEE项目案例:基于EclipseSpringStrutsHibernate/刘乃丽编著.北京:人民邮电出版社,2008[2]葛京.Hibernate3和JavaPersistenceAPI程序开发从入门到精通,清华大学出版社,2007年10月 [3]J2EE成功之路实战Ajax,JSP,Struts2,Spring,Hibernate电子工业出版社2009李钟蔚,马文强,王殊宇[4]J2EE电子商务系统开发从入门到精通:基于Struts和Hibernate技术实现/陈松编著.—北京:清华大学出版社,2007[5][美]Y.DanielLiang.Java语言程序设计进阶篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社2008[6]jQuery开发技术详解.季国飞.电子工业出版社,2010年3月[7]苏年乐,李学志,李金才.Java+SQLServer项目开发实践.北京中国铁道出版社,2006[8]黄明,梁旭.Java信息系统设计与开发实例.北京:机械工业出版社,2004[9][美]Y.DanielLiang.Java语言程序设计基础篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社,2008[10]陈天河等.Java数据库高级编程宝典.北京:北京电子工业出版社,2005[11][美]Y.DanielLiang.Java语言程序设计进阶篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社,2008[12]陆正武,张志立.Java项目开发实践(第2版).北京:中国铁道出版社,2005[13]钟玉,阳昊.浅谈大学校园网BBS,益阳师专学报,2004年11月,P2[14]白淑英.《基于BBS的网络交往特征》,哈尔滨工业大学薛宝(社会科学版),2002年9月第4卷第3期[15]刘冰,从BBS看校园网络文化对大学生学习的影响,现代远程教育研究,2005年2期,P3-441 文献综述一个简单网络论坛的设计与实现一、前言部分1目的网络论坛在国外又叫BBS,是当今世界各行各业,不论是计算机爱好者,还是商业组织,环境组织,宗教组织和其他利益集团相互交流,交换信息的地方。如今网络论坛的花样非常多,好的网络论坛对社会的建设和和谐发展都有非常深远的意义。而言论很差的网络论坛也会导致坏的社会风气,妨碍精神文明建设。因此对网络的管理是非常重要的。本文将分析网络论坛的历史背景,发展现状,和未来的发展等几个方面进行论述。2有关概念(1)数据库系统数据库系统,是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。它是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。(2)MySQL数据库MySQL是一种关系型数据库系统,MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。(3)Java语言Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,可移植的,性能优异、多线程的静态语言。Java语言提供类、接口和继承等,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现。Java语言支持动态绑定。Java语言是一个纯的面向对象程序设计语言。(4)JSP技术JSP技术使用Java编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易、JSP可以使用成熟的JAVABEANS组件来实现重复使用。(5)Ajax技术Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。通过Ajax,JavaScript可使用JavaScript的XMLHttpRequest来直接与服务器进行通信。通过这个对象,JavaScript可在不重载页面的情况与Web41 服务器交换数据。Ajax在浏览器与We服务器之间使用异步数据传输,这样就可使网页从服务器请求少量的信息,而不需要刷新整个页面。JavaScrip编程的最大问题来自不同的浏览器对各种技术和标准的支持。Ajax的一些框架让开发人员不需要担心跨浏览器的问题。(6)MVC模式MVC模式(Model模型-View视图-Controller控制器)是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:(Model模型),(View视图)和(Controller控制器)。Model层实现系统中的业务逻辑,通常可以用JavaBean来实现。View层用于与用户的交互,用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示。(7)TomcatTomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。3主题争论焦点对于论坛的实名制一直是个争论的焦点。采用实名制用户会担心信息的安全性,并且发言也会有所顾忌。而不采用实名制,网上又容易出现行骗,言语上的人生攻击,甚至是对政府的言论攻击,这也会让社会风气恶化,失去正确的向导。二、主题部分1发展现状和动态BBS是英文BulletinBoardSystem的缩写,翻译成中文为“电子布告栏系统”或“电子公告牌系统”。BBS是一种电子信息服务系统。它向用户提供了一块公共电子白板,每个用户都可以在上面发布信息或提出看法,早期的BBS由教育机构或研究机构管理,现在多数网站上都建立了自己的BBS系统,供网民通过网络来结交更多的朋友,表达更多的想法。目前国内的BBS已经十分普遍,可以说是不计其数,其中BBS大致可以分为5类:(1)校园BBSCERNET建立以来,校园BBS很快地发展了起来,目前很多大学都有了BBS,几乎遍及全国上下。象清华大学、北京大学等等都建立了自己的BBS系统,清华大学的水木清华很受学生和网民们的喜爱。大多数BBS是由各校的网络中心建立的,也有私人性质的BBS。(2〕商业BBS站,这里主要是进行有关商业的商业宣传,产品推荐等等,目前手机的商业站、电脑的商业站、房地产的商业站比比皆是。(3)专业BBS站,这里所说的专业BBS是指部委和公司的BBS,它主要用于建立地域性的文件传输和信息发布系统。(4)情感BBS,主要用于交流情感,是许多娱乐网站的首选。(5)个人BBS,有些个人主页的制作者们在自己的个人主页上建设了BBS,用于接受别人的想法,更有利于与好友进行沟通。伴随着Web2.0时代的到来,BBS将朝着以下两个方面发展:41 (1)BBS论坛系统将朝着即时性方面发展。现在动态网站出现一门新技术Ajax。在Ajax之前,页面的部分数据需要更新时必须刷新整个页面。而使用Ajax技术的网站,不需要刷新页面就可以更新数据,这就使Web站点看起来是即时响应的。将来可以把Ajax技术运用到BBS论坛系统当中,使论坛成员在不用刷新页面时就可以看到别人刚刚发的帖子。(2)BBS论坛系统也将朝着图形化方向发展。图形虚拟社区可以非常具体和形象化的模拟整个现实社区的生活,并且具备无限的可扩充性。在论坛中你甚至可以找到和现实生活完全对应的建筑。通过一根网线就可以把远在天南海北的朋友聚到一起。试想,你可以通过外形的不同来区分不同社区的朋友而不是通过ID。你甚至可以通过外形的不同来猜测对方的性格,这些都是传统虚拟社区所不具备的特点。2、开发技术介绍MVC设计模式。MVC设计模式将应用程序分为模型,视图,控制器三个部分,按照模型层,视图层,控制层进行分解,从而使得整个系统责任明确、接口清晰,加快了设计开发过程。模型层就是指业务逻辑的处理和数据储存。它分为两层:业务逻辑模型和数据模型。模型接收视图的数据,并返回最终的处理结果。数据模型是指对数据的持久化,它是线路对视图和模型的交换的支持。实现时把“做什么”和“怎么做”分离,这样可以实现业务逻辑的重用。视图层主要用来展现用户所需的数据,他是用户和系统进行交互的界面,这部分工作一般可以由美工人员进行开发和维护,一般可以采用HTML页面,JSP等技术。一般来说,视图只接收来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。MVC设计模式对于视图的处理仅是视图的采集和处理,以及用户的请求而视图上业务的处理,业务流程的处理和状态的改变交个模型层来处理。视图部分大致的处理流程是:页面模板定义布局,视图标签的具体内容,而页面布局初始化并加载页面。用户部件提交参数,通过表示层的校验,将数据提交给业务实体,即模型。控制层是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层就像一个中转站,从用户那里接收请求然后根据参数将模型与视图匹配,将选择符合要求的视图转发给用户。Java开发WebApplication有几种符合MVC设计模式的开发方式。1:Jsp+Servlet+JavaBean(EJB)2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)3:SSH(Struts+Spring+Hibernate)。在前几年JSP+SERVLET是采用Java进行Web开发的主要技术,而这几年Struts,Spring,Hibernate的组合成了Web开发的主流。本次网络论坛的开发将使用这些目前广泛运用的开发技术。利用Hibernate对JDBC进行了非常轻量级的对象封装,避免去写使用JDBC连接数据库的重复的代码和SQL语句,可以使用面向对象的思维来对数据库进行增删改查等操作。开发人员使用的技术是面向对象的技术,而使用的数据库是关系型数据库。所以使用Hibernate41 提供的ORM在对象型和关系型之间建立联系,从而可以让开发人员完全用OO的思想去设计业务逻辑,而数据的存储依旧使用关系型数据库。利用Struts2接受客户端的参数,根据请求的参数转发请求给适当的控制器,来控制视图的转发,是结构层次分明,可重用性高。Struts的作用避免了在JSP页面当中写太多的代码,做到保持JSP的界面整洁,同时可以实现MVC模式,Struts的根本作用就是方便以后对程序的修改。SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务Spring则完全是一种架构型的框架了,它不属于J2EE应用中的任何一个层,但它提供了对象依赖注入的思想,并且为每个层中遇到的实际问题提供了大量现成的模板类,使用这些模板类的方法很容易,大多数情况下只需要你在配置文件里配置一下就可以实现诸如事务管理或安全性控制这样的复杂问题.使用Spring你的代码不依赖于框架,不依赖于具体实现,而依赖于接口。通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。本次网络论坛系统使用struts2负责MVC模式里的'C",控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层表现。实现本网络论坛的业务逻辑层以DAO层为基础,通过DAO组件的包装,完成系统所需要的业务逻辑。而DAO层负责与持久化对象交互。该层封装了数据的增删改查等操作。DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同的需要,可能有多个实现类。用Spring容器代替DAO工厂,完全避免了使用工厂模式,因为Spring本身是个非常强大的工厂,可以让Spring充当DAO工厂。无需程序员自己实现工厂模式,只需将DAO组件配置在Spring容器中,由ApplicationContext负责DAO组件的创建即可。借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用DAO实例。Hibernate对JPA支持。只要熟悉Hibernate或者其他ORM框架,在使用JPA时会发现其实非常容易上手。例如实体对象的状态,在Hibernate有自由、持久、游离三种,JPA里有new,managed,detached,removed,明眼人一看就知道,这些状态都是一一对应的。再如flush方法,都是对应的,而其他的再如说Queryquery=manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了manager,所以从Hibernate到JPA的代价应该是非常小的。本系统采用B/S三层结构,使用JSP技术进行动态页面设计,运用javabean对程序的关键代码进行分装,如对实现分页功能的代码进行分装。用ajax技术实现对注册,登录失败时的反馈信息。使用tomcat作为web服务器,mysql作为数据库管理系统。三、总结部分网络论坛又名BBS,全称为“BulletinBoardSystem(电子公告)或者BulletinBoardService(公告板服务)”。是Internet上的一种电子信息服务系统。它提供了一块公共电子白板,每个用户都可以在上面发布信息或提出建议。BBS是一种交互性强、内容丰富并且及时的Internet电子信息服务系统。用户在论坛站点上可以获取各种信息,例如,发布信息、进行讨论、聊天等操作。论坛按不同的主题分为许多板块,板块的设立依据是大多数用户的要求和喜好,用户可以阅读别人关于某个主题的看法,也可以将自己的想法发表到论坛中。论坛为用户提供了极大的便利。目前国内的网络论坛已经十分普遍,可以说不计其数。41 本次论坛将采用java程序语言后台开发,整合hibernate,struts2,spring应用框架,使用JSP作为前台页面的实现,采用AJAX技术进行前台与服务器的交换,MYSQL作为数据库系统,tomcat作为服务器,将实现一个提供大家交流的系统,使用户可以充分交流自己的知识,看法,经验。现如今国内外最常用的三种动态网页语言是PHP(personalhomepage)、ASP(activeserverpage)和JSP(javaserverpage)。PHP可以在Windows、UNIX、Linux的web服务器上正常执行,支持IIS和Apache等一般的web服务器。ASP功能强大,简单易学,但是只能在Windows系统下运行。UNIX下有Chilisoft的组件来支持ASP,但是ASP本身功能有限,必须通过与com的群组合来扩充功能。JSP基于平台和服务器的互相独立,支持来自广泛的、专门的工具包,服务器组件和数据库产品由开发商提供。这三种语言各有优缺点,根据BBS的用途不同,可以选择合适的语言来开发。四、参考文献[1]李钟蔚,马文强,王殊宇.Java项目开发实例自学手册.北京:人民邮电出版社,2008[2]我的J2EE成功之路实战Ajax,JSP,Struts2,Spring,Hibernate电子工业出版社,2009[3]精通JavaEE项目案例:基于Eclipsespringstrutshibernate/刘乃丽编著.—北京:人民邮电出版社,2008[4]J2EE电子商务系统开发从入门到精通:基于Struts和Hibernate技术实现/陈松编著.—北京:清华大学出版社,2007[5]基于J2EE的Ajax宝典[专著]/李刚编著.—北京:电子工业出版社,2007[6]JavaJDK实例宝典/夏先波编著.—北京:电子工业出版社,2007[7]苏年乐,李学志,李金才.Java+SQLServer项目开发实践.北京中国铁道出版社,2006[8]黄明,梁旭.Java信息系统设计与开发实例.北京:机械工业出版社,2004[9]陈天河等.Java数据库高级编程宝典.北京:北京电子工业出版社,2005[10][美]Y.DanielLiang.Java语言语言程序设计基础篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社,2008[11][美]Y.DanielLiang.Java语言语言程序设计进阶篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社,2008[12]陆正武,张志立.Java项目开发实践(第2版).北京:中国铁道出版社,2005[13]钟玉,阳昊,浅谈大学校园网BBS,益阳师专学报,2004年11月,P2[14]白淑英:《基于BBS的网络交往特征》,哈尔滨工业大学薛宝(社会科学版),2002年9月第4卷第3期。[15]刘冰,从BBS看校园网络文化对大学生学习的影响,现代远程教育研究,2005年2期,P3-4开题报告41 一个简单网络论坛的设计与实现 一、选题的背景、意义网络论坛专业叫法叫做BBS,是用户可以交换信息的系统,各地的用户都可以通过本地的业余BBS站与远在异地的网友互通信息。在国外,1978年在美国芝加哥便开发出了最早的BBS系统,但只是基于8080芯片的CBBS/Chicago(ComputerizedBulletinBoardSystem/Chicago。直到1983年,通CapitalPCUserGroup(CPCUG)的CommunicationSpecialInterestGroup会员的努力,改写出了个人计算机系统的BBS。我国直到1995年,随着计算机及其外设的大幅降价,BBS才逐渐被人们知道。但是之后便以惊人的速度发展。国内的BBS系统大致分两类:一类是有商业性质的。一般是有大公司建立,人们利用其交流对商品的看法,解决商品的使用等问题。一类是个人或小型集体建立的。有商业性质的BBS要缴纳一笔费用,而非商业性质的网络论坛一般都有志愿者开发,他们推动了中国计算机网络的健康发展,为广大网友提供信息交流的平台。随着BBS系统的发展,国内已经出现了一些多线站,一次可以允许多个用户同时访问,解决了多人同时拨号一个站台发生冲突的问题。随着WEB2.0时代的到来,BBS将朝着以下两个方面发展:(1)BBS论坛系统将朝着即时性方面发展。使论坛成员在不用刷新页面时就可以看到别人刚刚发的帖子。(2)BBS论坛系统也将朝着图形化方向发展。通过外形的不同来区分不同社区的朋友而不是通过ID。二、研究的基本内容与拟解决的主要问题此网络论坛将使用MyEclipse为主要开发工具,同时采用Mysql进行数据库管理,同时将结合使用IntelliJIDEA进行前端开发。拟解决的问题主要涉及:1、注册功能。2、留言功能。包括创建模块,浏览帖子,发表留言,发表帖子。3、并通过上传和下载资料到共享区进行用户之间的信息交换。三、研究的方法与技术路线、研究难点,预期达到的目标研究方法与技术。此网络论坛将采用java语言,jsp技术和sql语言进行客户端和数据库的数据交互,实现基本的用户登录,畅所欲言的功能。研究难点。实现留言的分页显示,上传和下载,用户取回密码,管理员对用户和留言的管理等功能最终完成一个为人们获取信息,发表言论的网络论坛。四、论文详细工作进度和安排第八学期第1周至第3周(2011年3月13日前):撰写论文提纲,完成毕业论文(设计)初稿;需求分析,系统设计;第八学期第4周至第11周(2011年5月8日前):详细设计;第八学期第12周(2011年5月15日前41 ):完成应用软件系统的设计,毕业论文定稿,送指导老师和评阅老师评阅,准备答辩第八学期第13周(2011年5月22日前):参加毕业论文(设计)答辩。五、主要参考文献:[1]李钟蔚,马文强,王殊宇.Java项目开发实例自学手册.北京:人民邮电出版社,2008[2]苏年乐,李学志,李金才.Java+SQLServer项目开发实践.北京:中国铁道出版社,2006[3]黄明,梁旭.Java信息系统设计与开发实例.北京:机械工业出版社,2004[4]陈天河等.Java数据库高级编程宝典.北京:北京电子工业出版社,2005[5][美]Y.DanielLiang.Java语言语言程序设计基础篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社,2008[6][美]Y.DanielLiang.Java语言语言程序设计进阶篇.万波,郑海红,潘蓉,李娜等译.北京:机械工业出版社,2008[7]陆正武,张志立.Java项目开发实践(第2版).北京:中国铁道出版社,2005[8]钟玉,阳昊,浅谈大学校园网BBS,益阳师专学报.2004年11月,P2[9]白淑英:《基于BBS的网络交往特征》,哈尔滨工业大学薛宝(社会科学版),2002年9月第4卷第3期。[10]刘冰,从BBS看校园网络文化对大学生学习的影响,现代远程教育研究,2005年2期,P3-441

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭