




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于MVC架构的校园论坛的设计与实现摘要:在现代社会,高新科技日新月异,尤其是信息技术发展的很快,极大地方便了人们的交流。对于不同的客户群体来说,他们需要的通信平台是不一样的。校园论坛就是因为这样才形成的。论坛为用户提供了一个公共的交流场所,可以方便人们进行即时在线交流,发布各种信息,实现网络资源的共享。本次设计的校园论坛系统的研究基础是MVC的设计模式,使用现在十分流行的网站开发技术JSP语言进行开发,并且扩展Struts框架。本次设计的论坛使用了B/S体系结构,用户通过浏览器就可以访问论坛。在功能方面,本论文设计的校园论坛分为娱乐部分和专业学习部分。用户在疲倦时可以享受适宜的娱乐,并且在娱乐时能够学到一些理论知识。关键字:校园论坛;MVC;SSH;B/S;JSPDesignandImplementationofCampusForumBasedonMVCArchitectureAbstract:Inmodernsociety,highandnewtechnologiesarechangingwitheachpassingday,especiallytherapiddevelopmentofinformationtechnology,whichgreatlyfacilitatespeople'scommunication.Fordifferentcustomergroups,theyneeddifferentcommunicationplatforms.Thisiswhythecampusforumwasformed.Theforumprovidesapublicplaceforuserstocommunicate,whichcanfacilitatepeopletocommunicateonlineinrealtime,releasevariousinformationandrealizethesharingofnetworkresources.TheresearchfoundationofthecampusforumsystemdesignedthistimeisMVCdesignpattern,whichusestheverypopularwebsitesnow.ThedevelopmenttechnologyJSPlanguageisdevelopedandStrutsframeworkisextended.ThisdesignedforumusesB/Sarchitecture,anduserscanaccesstheforumthroughbrowsers.Intermsoffunction,thecampusforumdesignedinthispaperisdividedintoentertainmentpartandprofessionallearningpart.Userscanenjoyappropriateentertainmentwhentired,andcanlearnsometheoreticalknowledgeduringentertainment.Keywords:Campusforum;MVC;SSH;B/S;JSP目录TOC\o"1-3"\h\u第1章绪论 31.1研究背景 31.2国内外的发展现状 31.3本课题的主要研究内容 3第2章开发工具以及开发技术简介 42.1MyEclipse软件简介 42.2Tomcat介绍 42.3SSH架构介绍 42.4JSP介绍 52.5数据库介绍 5第3章系统分析 53.1系统分析的任务与步骤 53.2系统可行性分析 53.2.1技术可行性 53.2.2经济可行性 63.2.3操作可行性 63.3系统需求分析 63.3.1系统功能模型 63.3.1系统用例说明 7第4章系统概要设计 84.1系统整体框架结构 84.2系统数据模型 94.2.1系统概念数据模型 94.2.2系统物理数据模型 104.3数据库设计 10第5章详细设计 135.1系统主流程 135.2登录注册 145.2.1用户登录 145.2.2用户注册 165.3用户模块 165.4贴子模块 175.4.1版块选择 175.4.2学习版块类型 185.4.3娱乐版块类型 195.4.4查看选定类型下的所有帖子 205.4.5查看帖子信息 215.4.6回复帖子信息 225.4.7发贴新帖 225.4.8查找用户发表的贴子 235.5管理员模块 245.5.1贴子加精 255.5.2贴子置顶 255.5.3贴子删除 265.5.4用户禁言 275.6信息检索模块 28第6章系统测试 296.1测试方法 296.2测试目的 296.3主要模块测试 29总结 31参考文献 31致谢 32第1章绪论1.1研究背景当今,中国自己研发设计的论坛一般都是最古老的JSPmodel1类型的,这种类型是控制层和表示层的组合,虽然它设计编写起来很容易,但是它的可扩展性和可维护性都非常不理想。这样看来,这种论坛的发展空间是有限的,所以本次论坛将基于MVC模式进行研发设。MVC框架是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式。Model表示应用程序核心(比如数据库记录列表)。View显示数据。Controller处理输入。MVC的分层有利于对繁杂的应用程序进行有条不紊的管理。它具有耦合度低,可重用性高,生命周期成本低,部署快,可维护性高等好处,还有利于软件工程化的管理。MVC分层还能简化分组开发。另外,与使用ASP进行页面显示的一般论坛相比,本论坛使用JSP来显示页面。JSP的好处十分明显:运行速度快,运行耗损较小,容易掌握,支持多平台,扩展性好,安全性好,支持XML等。JSP将Web逻辑与Web设计显示分离,支持可重用的基于组件的设计,并使基于Web的应用程序的研发变得快速而简单。在功能方面,本论坛分为专业学习部分和娱乐部分,以实现工作与休息相结合的目的。1.2国内外的发展现状论坛是在上个世纪70年代的美国发源起来的,它当时的用途是进行成员之间的信息交流和网络通信,那时候是没有浏览器、搜索引擎和个人网站的。当时,论坛一般有四个大体的作用:发布新闻,发布交易信息,发布个人感受,以及互动问答。近年来,人们一直在密切关注这论坛本身的研究。尽管通过对其进一步的研究成果使得这种研究呈现出相对下降的趋势,但其在各组织开展的研究中所占比例仍然很强。2010年由中国网络咨询公司和中国互联网电子峰会组委会共同主办的第二届中国互联网电子商务峰会在北京举行。2010年中国网民社交网站应用研究报告显示,截至2010年12月,在众多类型的社交网站中,论坛的用户规模达2.35亿人,活跃用户规模约为1.5亿人,年增用户人数达5918万人,年增长率33.7%。论坛已成为人们生活中不可或缺的组成成分,校园论坛对学生的影响力很强。中国有名的校园论坛有北京大学未名论坛,清华大学水木社区等。总的来说,中国校园论坛普及率高、影响深刻并且注重管理。1.3本课题的主要研究内容这个校园论坛采用MVC模式进行开发。MVC通常是企业级应用程序的开发模式。它具有低耦合高内聚、可维护性强、高可重用性、有利于软件工程化等好处。通过系统分析,需求分析,初步总结设计,本项目采用MyEclipse,MySQL,Tomcat等工具,和SSH框架等技术进行进一步的设计。经过认真细致的系统测试来完成需求分析功能。本次校园论坛的整体要求是能够进行会员的登录、发布信息、回复、管理员的管理功能、帖子搜索功能等,使系统结构清晰、界面简洁美观、操作简单、易于学习和使用,并且查询灵活便利和数据存储安全可靠,使这个论坛能够让成员进行娱乐和学习。第2章开发工具以及开发技术简介2.1MyEclipse软件简介MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernat。MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse可以支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。2.2Tomcat介绍Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。Tomcat是一个应用服务器。可以运行你按照J2EE中的Servlet规范编写好的Java程序。简单的说它是一个Web网站的运行容器,把你写好的网站放进去就可以运行。2.3SSH架构介绍Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.4JSP介绍JSP全名为JavaServerPages,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以<%,%>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。通常JSP页面很少进行数据处理,只是用来实现网页的静态化页面,只是用来提取数据,不会进行业务处理。2.5数据库介绍MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。第3章系统分析3.1系统分析的任务与步骤系统分析的目的是要认识到用户在功能、性能、外观等方面的要求,并记下用户的需求来进行分析报告的撰写。用很多统一的图表和文字来尽力逻辑模型,以实现系统所需要的功能。系统分析的一般步骤为:(1)在详细调查的基础上,用一定的图标、文字描述。(2)分析用户新的要求,改进现行模型,形成新系统的逻辑模型。(3)编写系统分析说明书。3.2系统可行性分析3.2.1技术可行性技术可行性就是对我们现存的技术条件进行分析,判断是否能够成功完成开发工作,软件和硬件是否能满足基本的要求。该校园论坛基于MVC模型,利用SSH框架开发美观并且好用的界面,方便了用户的理解和操作。使用MySQL的数据库管理系统,可以对大量的数据进行处理,并且保持数据的完整与安全。3.2.2经济可行性课题设计的校园论坛使用的工具为MyEclipse、Tomcat等都是免费软件。数据库采用MySQL,用B/S模式,都十分方便便宜,完全可行。3.2.3操作可行性界面设计简洁明了,用户可以轻松理解和使用。3.3系统需求分析3.3.1系统功能模型功能模型本质上是一个用户需求模型,描述了系统可以做什么,即定义了系统的功能,性能,接口和接口。因此,功能模型反映了系统的功能需求,这是用户界面模型设计的主要依据。本次设计的系统是基于MVC模式的校园论坛。它采用B/S结构的开发模式,其开发主要包括数据库的建立和维护、普通用户功能以及管理员功能的开发等几个方面。本校园论坛分为两类角色:普通用户以及管理员用户。管理员和普通用户都有的功能登录,个人信息修改,发表帖子,浏览贴子,回复帖子,查看自己发表的所有帖子,以及能够通过关键字来搜索贴子的功能。管理员比普通用户多存在的功能有贴子的置顶,加精,删除,以及限制用户发言。依照这些功能研究,本次课题的用例图如图所示。1校园论坛用例图3.3.1系统用例说明本次课题设计的校园论坛详细的用例说明为:登录:注册用户可以通过在登录页面上输入用户名,密码和验证码来登录。如果您尚未注册,则登录失败。注册:未在此论坛注册的用户可以现在进行注册。注册后,可以使用注册完成的帐户来登录。管理员帐户是固定的,无需注册。修改:用户登录后,可以修改基本信息,如修改密码。发表帖子:登录用户可以发布帖子,未登录的用户无法发布。浏览贴子:已登录的用户可以浏览帖子。回复帖子:已登录的用户可以进行回复帖子。查看本人所有贴子:已登录的用户可以查看自己发表过的所有帖子。贴子检索:已登录用户根据关键词可以检索出论坛相匹配的发表过的贴子。贴子加精:管理员具有给贴子加精的权限。贴子置顶:管理员具有给帖子置顶的权限,贴子置顶之后,就会显示在列表的最上一行。帖子删除:管理员具有删除帖子的功能。普通用户登录之后,删除标志不显示,无法删除帖子。用户禁言:管理员可以对特定的用户拉黑,使其禁言,禁言之后用户无法发表帖子以及恢复贴子。第4章系统概要设计4.1系统整体框架结构本论坛主要有两大版块(娱乐版块、学习版块),用户或者管理员登录之后可以选择版块,通过对以上用例图的分析,每个版块由四大模块构成分别,用户模块、贴子模块、管理员模块、信息检索模块,其整体框架图如图所示。系统整体框架系统各个功能模块的分析如下:(1)登录注册模块:该模块可以为普通用户实现登录注册,可以进行管理员登录。普通用户或管理员都可以在登录后选择喜欢的部分(娱乐部分和专业学习部分)。(2)用户信息模块:此模块可以实现登录用户的个人信息修改。(3)贴子模块:该模块可以实现帖子发布和发布回复的功能。注册用户登录后,在相应的部分中,可以发布新帖子。在用户发布新帖子后,用户可以查看用户发布的所有帖子的列表,用户可以浏览其他人的帖子并回复其他人的帖子。(4)管理员模块:管理员对贴子进行删除、加精、置顶等操作,并对特定的用户进行禁言操作。(5)信息检索模块:此模块允许用户通过输入关键字搜索过去发布的帖子并返回搜索结果。4.2系统数据模型数据模型本质上是实体或类的状态关系模型,用于描述系统之前的数据来源,工作中的数据临时存储的位置,工作后的数据放置位置,以及数据的状态和彼此关联的状态。即对系统的数据结构进行定义。因此,数据模型反映了系统的数据关系,它是实体或类的状态设计依据。若站在B/A/S三层结构上看,数据模型就对应在数据层(数据库服务器层)上建模。信息系统中的数据模型分为概念数据模型CDM和物理数据模型PDM两个层次。CDM就是数据库的逻辑设计,即E-R图。PDM就是数据库的物理设计,即物理表。有了CASE工具后,从CDM就可以自动转换为PDM,而且还可以自动获得主键索引、触发器等[16]。数据模型设计是企业信息系统设计的中心环节,数据模型建设是企业信息系统建设的基石,设计者与建设者万万不可粗心大意。4.2.1系统概念数据模型概念数据模型(简称CDM)是数据库设计的开始。在概念数据模型设计过程中,不需要考虑实际物理实现的细节,只要考虑实体的属性及实体之间的关系。通过建立概念数据模型可以进行数据图形化、形象化,数据表设计的合法性检查,为物理数据模型的设计提供基础等[16]。本系统的概念数据模型如图所示。概念数据模型4.2.2系统物理数据模型物理数据模型(简称PDM)。基于特定DBMS,在概念数据模型、逻辑数据模型的基础上进行设计。由物理数据模型生成数据库,或对数据库进行逆向工程得到物理数据模型。由概念数据模型(CDM)可以自动转化为物理数据模型(PDM),如图所示。物理数据模型4.3数据库设计数据库的规划和设计在整个软件工程中占有非常重要的地位,它在整个系统中不但起着存储各种信息,供统计、查询、分析等使用的作用,而且协调各个子系统之间的数据接口。数据库设计应具有合理性、规范性以及适应性,数据库之间的关系及设置直接关系到系统的优劣。设计数据库系统时应首先需要充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。为了提高系统开发的质量和效率,基础数据管理和查询维护子系统的数据库设计遵循以下原则:(1)层次分明,布局合理数据库系统必须层次分明,合理布局,数据信息进行浓缩、归纳、合并,减少冗余,提高数据共享程度。(2)保证数据结构化、规范化、编码标准化这是建立数据库系统和进行业务部门内、外信息交换的基础。在每一个数据库设计之前都有一个充分的、详细的数据分析、数据格式及较为统一的编码,为减少数据的冗余量,应尽量避免数据库结构的重复,并保证整个数据库设计的完整性。(3)数据的独立性和可扩展性做到数据库的数据具有独立性,独立于应用程序,使数据库的设计及其结构的变化不影响程序,反之亦然。此外,由于业务也是在不断变化的,所以数据库设计需考虑其扩展接口,使系统增加新的应用或新的需求时,不会引起整个数据库系统的重新改写。(4)共享数据的完整性、正确性和一致性应充分考虑数据资源的共享,合理建立公共数据库。采用数据库分层管理,使不同层次的信息数据共享。另外,由于共享数据是面向多个程序或多个使用者的,多个用户存取共享数据时,必须保证数据的正确性和一致性。(5)减少不必要的冗余建立数据系统后,应避免不必要的数据重复和冗余。(6)保证数据的安全可靠数据库是整个信息系统的核心,它的设计要保证其可靠性和安全性,不能因某一数据库的故障导致整个系统的瘫痪。做好对数据库访问的授权设计,对数据的非法访问,病毒侵扰和软、硬盘故障破坏,采取相应的保密措施。通过上面对概念数据模型的分析,本系统共有6个实体,分别为用户、贴子、娱乐版块、学习版块、回复、浏览,进而设计出6张数据库表。用户表列名数据类型允许NULL值主键用户IDInt(11)NOYES用户名Varchar(45)NONO密码Varchar(30)NONO是否管理员Varchar(2)YESNO邮箱Varchar(45)YESNO性别Varchar(2)NONO电话Varchar(20)YESNO生日Varchar(20)YESNO注册时间datatimeYESNO学习版块表列名数据类型允许NULL值主键学习版类型IDInt(11)NOYES贴子类型名称Varchar(255)NONO贴子类型描述Varchar(255)YESNO娱乐版块表列名数据类型允许NULL值主键娱乐版类型IDInt(11)NOYES贴子类型名称Varchar(255)NONO贴子类型描述Varchar(255)YESNO主贴表列名数据类型允许NULL值主键贴子IDInt(11)NOYES学习版类型IDInt(11)NONO娱乐版类型IDInt(11)NONO用户IDInt(11)NONO贴子标题Varchar(50)YESNO贴子内容textYESNO是否置顶Varchar(2)YESNO是否加精Varchar(2)YESNO上次更新时间datatimeYESNO回帖表列名数据类型允许NULL值主键回复IDint(11)NOYES用户IDInt(11)NONO贴子IDInt(11)NONO回复内容textYESNO回复时间datetimeYESNO浏览贴子表列名数据类型允许NULL值主键浏览IDInt(11)NOYES浏览时间datetimeYESNO贴子IDInt(11)YESNO第5章详细设计5.1系统主流程用户登录后,选择版块,进入版块之后,进行一系列操作。流程图为系统主流程图5.2登录注册此模块可以实现会员登录,会员注册,会员可以通过此模块对论坛进行登录,登录后便可以使用所有的会员功能。没有会员帐号的用户,可以通过此模块注册会员信息,添加成功后便可登录论坛,使用会员的功能。5.2.1用户登录用户登录界面如图所示。用户登录界面部分主要代码如下:publicUserlogin(Useruser){ Stringhql="fromUserwhereuserName='"+user.getUserName() +"'andpassword='"+user.getPassword()+"'"; Listlist=this.getHibernateTemplate().find(hql); if(list!=null&&list.size()>0){ return(User)list.get(0); }else{ returnnull; } } functionlogin(){ if($.trim($('#userName').val())==''){alert('用户名不能为空');return; } if($.trim($('#password').val())==''){alert('密码不能为空');return; } varvalidate=$('#validate').text(); varvalidate_input=$('#validate_input').val();if($.trim(validate_input)==''){alert('验证码不能为空');} if(validate!=validate_input){alert('验证码不对,请重新输入');return; } loginForm.submit(); }5.2.2用户注册用户注册页面如图所示。用户注册页面部分主要代码如下:publicStringaddUser(){ user.setRegisterTime(newDate()); user.setIsAdmin("0"); userDao.addUser(user); this.setCurrUser(user); this.setMsg("个人注册成功!"); return"toSuccessPage"; }5.3用户模块用户修改界面如图所示。用户修改界面主要代码如下:publicStringtoUpdatePage(){ Useruser=this.getCurrUser(); this.user=this.userDao.querySingleUser(user.getUserId()); return"toUpdatePage"; }publicvoidupdateUser(Useruser){ this.update(user); }5.4贴子模块5.4.1版块选择版块选择界面如图所示。版块选择界面主要代码如下所示: publicStringenterMyBlock(){ return"toMyBlockPage"; }<tablewidth="100%"height="50%"><tr><td><aonclick="enterStudyForum()"><imgsrc="images/laixuexiba.jpg"/></a></td><td><imgsrc="images/lef01.gif"/></td><td><aonclick="enterEntertainmentForum()"><imgsrc="images/xiuxiyixia.jpg"</td></tr></table>5.4.2学习版块类型学习版块界面如图所示。学习版块界面主要代码如下:publicStringstudyForum(){ isStudyPart=true; studyArticleTypesList=articleDao.queryAllStudyArticleType(); return"studyForum"; }publicList<StudyArticleType>queryAllStudyArticleType(){ returnthis.getCriteria(StudyArticleType.class).list(); }5.4.3娱乐版块类型娱乐版块界面如图所示。娱乐版块界面主要代码如下:publicStringentertainmentForum(){ isEntertainmentPart=true; entertainmentArticleTypesList=articleDao.queryAllEntertainmentArticleType(); return"entertainmentForum"; }PublicList<EntertainmentArticleType>queryAllEntertainmentArticleType(){ returnthis.getCriteria(EntertainmentArticleType.class).list(); }5.4.4查看选定类型下的所有帖子查看选定类型下帖子的界面如图所示(以学习版块为例)。查看选定类型下帖子主要代码如下:publicList<Article>findArticlesByType(Stringtype,StringfirstResult,StringmaxResults){ intfirst=newInteger(firstResult).intValue(); intmax=newInteger(maxResults).intValue(); Criteriacriteria=this.getCriteria(Article.class); List<Article>list=criteria.add( Restrictions.eq("articleTypeName",type)).addOrder( Order.desc("lastUpdateTime")).list(); returnlist; }5.4.5查看帖子信息查看帖子详细信息界面(以学习版块为例)如图所示。查看帖子详细信息主要代码如下:publicStringquerySingleArticle(){ this.article=articleDao.querySingleArticle(this.article .getArticleId().toString()); return"singleArticle"; }publicArticlequerySingleArticle(StringarticleId){ Stringhql="fromArticlewherearticleId="+articleId; return(Article)this.find(hql).get(0); }5.4.6回复帖子信息回复帖子界面(以学习版块为例)如图所示。回复帖子主要代码如下所示:publicStringaddReply(){ UsercurrUser=this.getCurrUser(); if(currUser==null){ JSONKit.outJSONInfo("{success:false,msg:'你还没有登录,不能回复'}"); returnNONE; } this.reply.setReplyTime(newDate()); this.replyDao.addReply(reply); JSONKit.outJSONInfo("{success:true,'userName':'" +currUser.getUserName()+"','replyTime':'" +this.getNowTime()+"','content':'" +this.getReply().getContent()+"'}"); }5.4.7发贴新帖发表新帖界面(以学习版块为例)如图所示。发表新帖主要代码如下:publicStringaddStudyArticle(){ Useruser=newUser(); user.setUserId(this.getCurrUser().getUserId()); this.article.setUser(user); this.article.setEmitTime(newDate()); this.article.setLastUpdateTime(newDate()); this.articleDao.addStudyArticle(article); this.myArticles=this.articleDao.queryAllArticleByUser(user,this .getFirstResult(),this.getMaxResults()); return"myArticle"; }5.4.8查找用户发表的贴子查找用户发表帖子界面如图所示。查找用户发表帖子主要代码如下:publicStringgetArticlesByUserId(){ this.searchArticles=this.articleDao.getArticlesByUserId(this.user .getUserId().toString()); return"userArticle"; }publicList<Article>getArticlesByUserId(StringuserId){ Criteriacriteria=this.getCriteria(Article.class); criteria.add(Restrictions.eq("user.userId",userId)); returncriteria.list();}5.5管理员模块管理员登录论坛查看帖子列表,显示的界面与普通用户显示界面不同。不同之处有是否有加精或者置顶的选项,而且管理员具有可以禁言用户的功能,具有查看所有用户列表的选项。普通用户登录时帖子列表如图所示。普通用户登录时帖子列表而管理员登录论坛查看帖子列表,会有加精,置顶以及查看所有用户列表的的选项。如图5-14所示。管理员登录时帖子列表5.5.1贴子加精管理员具有给帖子加精的权限,界面如图5-15所示。帖子加精代码如下:publicStringsetArticleBest(){ return"isBest"; }publicvoidsetArticleBest(Articlearticle){ Configurationconfig=newConfiguration().configure(); SessionFactoryfactory=config.buildSessionFactory(); Sessionsession=factory.openSession(); Transactiontransaction=session.beginTransaction(); Queryquery=session.createQuery(hql); intret=query.executeUpdate(); mit(); }5.5.2贴子置顶管理员具有给帖子置顶的权限,界面如图所示。 帖子置顶代码如下:publicvoidsetArticleTop(Articlearticle){ //TODOAuto-generatedmethodstub Stringhql="updateArticlesetis_top=1wherearticleId="+article.getArticleId(); Configurationconfig=newConfiguration().configure(); SessionFactoryfactory=config.buildSessionFactory(); Sessionsession=factory.openSession(); Transactiontransaction=session.beginTransaction(); Queryquery=session.createQuery(hql); intret=query.executeUpdate(); mit();} 5.5.3贴子删除管理员具有删除帖子的功能,帖子删除界面如图5-17所示。贴子删除代码如下所示:publicStringdeleteArticle(){ articleDao.deleteArticle(this.article);//删除所选文章 Useruser=newUser(); user.setUserId(this.getCurrUser().getUserId());//取出当前用户 this.article.setUser(user); this.myArticles=this.articleDao.queryAllArticleByUser(user,this .getFirstResult(),this.getMaxResults()); return"myArticle"; }publicvoiddeleteArticle(Articlearticle){ this.delete(Article.class,article.getArticleId()); }5.5.4用户禁言管理员具有禁言用户的功能,禁言界面如图所示。用户禁言具体代码如下所示: publicvoiddeleteUserById(IntegeruserId){ Stringhql="updateUsersetisLock='1'whereuserId="+userId; Configurationconfig=newConfiguration().configure(); SessionFactoryfactory=config.buildSessionFactory(); Sessionsession=factory.openSession(); Transactiontransaction=session.beginTransaction(); Queryquery=session.createQuery(hql); intret=query.executeUpdate(); mit(); }5.6信息检索模块信息检索模块界面如图所示。信息检索代码如下所示:publicStringdoSearch(){ if(searchStr!=null){ searchStr=searchStr.trim(); } Stringtype=this.article==null?null:this.article .getArticleTypeName(); this.searchArticles=this.articleDao.doSearch(type,searchStr,this .getFirstResult(),this.getMaxResults()); return"searchResult"; }publicList<Article>doSearch(Stringtype,Stringstr,StringfirstResult,StringmaxResults){ intfirst=newInteger(firstResult).intValue(); intmax=newInteger(maxResults).intValue(); Criteriacriteria=this.getCriteria(Article.class); if(type!=null&&!type.equals("")){ criteria.add(Restrictions.eq("articleTypeName",type)); } List<Article>list=criteria.list(); returnlist;}第6章系统测试6.1测试方法 随着软件测试技术的发展,测试方法变得越来越多,针对性更强;选择合适的软件测试方法可以让我们用更少的资源做更多事情。下面介绍两种比较常用的软件测试方法:黑盒测试和白盒测试。黑盒测试也称作数据驱动测试或功能测试,它检测每个功能是否都能正常是通过测试来实现的,这是建立在已知产品所应具有的功能的基础上的。黑盒测试注重于测试软件的功能性需求,是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。白盒测试又称为逻辑驱动测试或结构测试,为了确定实际的状态与预期的状态是否一致,它通过在不同点检查程序的状态。白盒测试就是将测试对象看做成一个透明的盒子,并且允许测试人员调用程序内部的有关信息及逻辑结构,设计或选择测试用例,可以对程序所有逻辑路径进行测试。6.2测试目的软件测试是程序的一种执行过程,目的是为了能够最大可能的发现测试软件中的错误并且可以将其改正,使软件的可靠性得到提高。软件工程是将有限的人力和物理资源得到充分利用,高效高品质的完成软件开发项目作为总目标。不足的测试会将一些未揭露的错误隐藏在软件中投入运行,这将意味着用户将承担更大的危险。到测试后期,即使找到了错误,然而付出了过高的代价。因此,在软件开发的过程中选择正确的测试方法尤为重要。6.3主要模块测试本论坛论坛测试主要包括用户模块的登录/注册测试,因为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度个人住房按揭贷款担保协议合同版
- 2025年度公司销售业务员协议书:智能穿戴设备销售代理协议
- 2025年度就业协议违约金赔偿与就业心理调适协议
- 2025年度绿色环保材料研发股东合作协议书
- 2025年度停车场停车费电子支付服务合同
- 2025年度建设银行个人住房贷款合同电子版
- 2025年度不锈钢栏杆项目风险评估与管理合同
- 农资装卸搬运服务协议
- 2025年度农村土地经营权转让与农业扶贫项目合作合同
- 二零二五年度土地承包种植与乡村旅游结合合同
- 山东省2022年高等教育专升本统一考试高等数学III试题及解析
- 现代厨房管理第一章第一节
- GB/T 694-2015化学试剂无水乙酸钠
- GB/T 6728-2017结构用冷弯空心型钢
- GB/T 6539-1997航空燃料与馏分燃料电导率测定法
- GB/T 28253-2012挤压丝锥
- GB/T 27689-2011无动力类游乐设施儿童滑梯
- 普通话教程教学课件第八单元词汇和语法的规范与辨正
- 康复治疗技术概论
- 教学课件:《连锁门店运营管理》(第二版)
- 高速综合检测列车轨道检测系统课件
评论
0/150
提交评论