博客系统的设计与实现完整样本_第1页
博客系统的设计与实现完整样本_第2页
博客系统的设计与实现完整样本_第3页
博客系统的设计与实现完整样本_第4页
博客系统的设计与实现完整样本_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计题目:基于SSH构架博客系统设计和实现Englishtitle:TheDesignandImplementationfortheblogssystembasedonSSH姓名:xxxxx学号:xxxxxxx专业名称:计算机科学与技术指引教师:xxxxx二零一零年五摘要本文研究了当今博客系统市场需求和种种优势与局限性,以及博客在中华人民共和国发展迅速这一现状,提出了开发一种专业博客管理系统思想。本文对博客系统运营机制、构成、有关可应用技术进行了进一步研究和分析,拟定符合当前博客管理需求,详细阐述了系统总体设计和详细设计,并在此基本上,应用当前最流行J2EE三层构造、JSP技术、数据库等与系统开发有关技术完毕系统重要功能实现。本博客系统致力为广大顾客提供优质互动交流平台,实现对博客刊登文章、评论、图片、朋友等数据管理,同步实现了博客内容及时、迅速更新功能,系统不但保存了老式博客系统功能,还加上了某些人性化界面设计,使顾客对博客操作更为以便。为了满足博客信息管理系统规定,实现系统静态与动态页面互相分离,本系统采用了SSH构架设计,从职责上分为三层:表达层、业务逻辑层、数据持久层。其中使用Struts2作为系统整体基本架构,负责MVC分离,在Struts2框架模型某些,运用Hibernate框架对持久层提供支持,业务层用Spring支持。详细做法是:用面向对象分析办法依照需求提出某些模型,将这些模型实现为基本Java对象,然后编写基本DAO接口,并给出HibernateDAO实现,采用Hibernate架构实现DAO类来实现Java类与数据库之间转换和访问,最后由Spring完毕业务逻辑。核心词:表达层;业务逻辑层;数据持久层;Struts;Hibernate;SpringAbstractInthispaperanalyzesthemarketdemandofbloggingsystemanditsadvantagesandinadequate,andthestatusofthatblogsdevelopedrapidlyinchina.Proposedtodesignacorporatessh-basedbolgsystemsthinking.PapersontheBlogSystemoperationmechanism,composition,relatedtechniquescanbeappliedtoin-depthresearchandanalysis,detaileddesignofthesystemanddetaileddesign,andonthisbasis,applicationofthemostpopularj2eethree-tierstructureandjsptechnology,databasesandthesystemsdevelopmentoftechnologytocompletesystemofthemainfeatures.Thisblogsystemiscommittedtoofferhighqualityinteractiveexchangeplatformforcustomers.Implementemanagethedataofpublisharticles,comments,pictures,companionsandsoon.ThesystemusesSSHframeworkdesigninordertomeetthebloginformationmanagementsystemrequirements,andimplementthestaticanddynamicpagesseparate.Thesystemisdividedintothreelayersbasedonthefunctions;therearePresentationLayer,BusinessLogicLayerandDataPersistenceLayer.ItusesStruts2asoverallinfrastructuretoseparatetheMVC.InthemodelpartoftheStruts2,itusesHibernateframeworktosupportpersistencelayerandusesSpringframeworktosupportbusinesslayer.Thespecificapproachisaccordingtothedemandtoproposesomemodelswiththeobject-orientedanalysismethod,andrealizesthesemodelsforbasicobjectofJava,thencompilesthebasicDAOconnectionandrealizesitinHibernate.ItusestheDAOwhichmadebytheHibernateframeworktoachievetheconversionandaccessbetweenJavaanddatabase,finallyitcompletestheservicelogicbySpringframework.Keywords:PresentationLayer;BusinessLogicLayer;Datapersistencelayer;Struts;Hibernate;Spring目录绪论 11.1概述 11.2研究背景和发展趋势 11.2.1研究背景 11.2.2发展趋势 21.3研究目和意义 21.4本文工作概述 21.5本文构造 3第2章系统有关技术 42.1体系构造 42.2JSP简介 42.3ECLIPSE简介 52.4TOMCAT简介 52.5MYSQL简介 52.6Struts2简介 52.7Spring简介 62.8Hibernate简介 6第3章系统分析 73.1系统可行性分析: 73.2系统需求分析: 73.2.1功能需求分析 73.2.2系统业务需求及流程 83.2.3系统数据分析及数据流图 83.2.4系统数据字典 9第4章系统数据库设计 114.1概念设计 114.2数据表构造 124.3数据表构造关系 16第5章系统总体设计 175.1系统总体设计原则 175.2系统功能设计 175.2.1总体功能描述 175.2.2功能模块设计 17第6章系统详细设计与实现 196.1SSH构架搭建及配备文献 196.2系统编码设计 206.2.1编写持久对象层类 206.2.2编写数据访问层类 226.2.3编写业务逻辑层类 236.2.4编写WEB层类 246.3系统重要功能模块详述 266.3.1后台:博客管理模块 266.3.2前台:顾客界面模块 32总结与展望 377.1博客系统重要特点 377.2系统局限性之处 377.3前景展望 37致谢 38参照文献 39绪论“博客”(Blog或Weblog)一词源于“WebLog(网络日记)”缩写,是一种十分简易傻瓜化个人信息发布方式。任何人都可以像使用免费电子邮件同样,完毕个人网页创立、发布和更新。博客就是开放私人空间,可以充分运用超文本链接、网络互动、动态更新等特点,在网络中,精选并链接全球互联网中最有价值信息、知识与资源;也可以将个人工作过程、生活故事、思想历程、闪现灵感等及时记录和发布,发挥个人无限表达力;更可以以文会友,结识和汇聚朋友,进行深度交流沟通。它当前是众多机构和媒体评为最热门互联网现象。其实博客并没有特别之处。但不经意间,博客竟如雨后春笋般冒出来,博得了越来越多网民欢心,并引起了各种新应用热潮。它最大吸引力在于,只要你会发邮件,就可以轻松创立自己网络媒体。1.1概述博客是个人性和公共性结合体,其精髓不是重要表达个人思想,不是重要记录个人寻常经历;而是以个人视角,以整个互联网为视野,精选和记录自己在互联网上看到精彩内容,为她人提供协助,使其具备更高共享价值。博客精神核心并不是自娱自乐,甚至不是个人表达自由,相反,是体现一种利她共享精神,为她人提供协助。个人日记和个人网站重要体现还是“小我”,而博客体现是“大我”。也许形式上很接近,但内在有着本质差别。所有先进博客网站中,真正表达作者个人内容非常有限,最多只是点缀,而不像个人网站那样是核心。1.2研究背景和发展趋势1.2.1研究背景博客精神是:自由表达,开放宽容,个性张扬,专业精神。在没有自己博客之前,人们会经常进出于论坛刊登贴子或者通过即时通信软件聊天,来表达自已想法,可是这些都是零散和杂乱。博客浮现,让人们可以不断把自己此前和每天激发某些想法或者感受整顿放在自己博客上,每次在写文章时候,也许又会产生新想法。虽然某些想法某些思考只是皮毛,没有什么深度,但是当下笔去写时候每次都会对某个小小问题有了更多一点点思考,再写博客时候就感觉到了一种满足感,一种想法得以释放思考得以延伸满足感。生活中每天一种小小事情都会引起人们思考,甚至是和朋友聊天中一种小小火花迸发。督促自己努力、把一时想法变成观点,争取在生命中每天里留下点什么,这也是人们写博客目之一。这样就能督促自己每一天不要浑浑噩噩,时光流逝无痕无声无息,写博客也是在自己每一天上留下了一道浅浅思考和划痕。1.2.2发展趋势趋势一:博客当前正在形成个人信誉机制,有了博客之后就确立了一种个人虚拟身份,简朴来讲就是个人在互联网上是有名有姓,而不再是一种匿名行为,网民从流浪汉变成了一种定居者。此前在互联网上各种行为都是在匿名状态中,互相之间是不结识,但有了博客之后可以每天关注,而别人也可以通过博客找到这个人。这样随着时间积累就会产生一种新东西,概括叫做“个人信誉”,个人信誉就是博客和博客之间发展各种关系组合,这种信誉对每个人来讲也许是不同,但对每个博客来讲就产生了新评价机制,这个机制将是博客商业化一种前提条件。趋势二:博客越来越呈现出富媒体化,初期博客是以文字为主,但随着多媒体发展博客相册、博客图片已经成为博客基本配备,而当前许多博客网站已经提供了博客音频和博客视频。趋势三:博客当前正在形成并完善精选机制,博客作为自媒体和个人媒体,产生信息非常巨大。其中难免产生信息垃圾,随着博客发展,博客通过精选机制精选出人们喜闻乐见信息,像国内网摘、博客评价系统等。1.3研究目和意义随着计算机及网络技术飞速发展,Internet/Intranet应用在全球范畴内日益普及,人们对Internet应用需求也越来越多,其中网上交友或运用网络和朋友家人联系,在线管理自己相片等已经成为广大网民共同需求,在这个背景下,咱们博客系统应需而出。普通一种博客就是一种页面,它普通由简短并且经常更新帖子构成,所有文章都是按照年份和日期排列,有些类似斑竹日记。看上去平淡,但它可以让每个人零成本、零维护地创立自己网络媒体,每个人都可以随时把自己思想和灵感更新到博客站点上。博客人性化和平民视角使得它提供消息更贴近人们生活,极大丰富了人们业余生活,同步也给人与人之间沟通架起一座桥梁。1.4本文工作概述本论文对基于SSH构造博客管理系统进行了进一步研究,并对系统核心技术和分析设计进行了详细分析阐述。运用该系统,网友可以在网络上刊登日记、修改和删除日记、上传照片、查询博文、浏览博文、对日记刊登评论、给博主留言。其中涉及到重要内容有:(1)对系统可行性及发展趋势进行分析,完毕整个博客管理系统需求分析和总体设计。(2)对系统体系构造及设计实现中使用有关技术进行分析。(3)完毕系统重要功能详细设计与实现,涉及:前台模块、后台模块,其中前台模块涉及:日记浏览模块、相册浏览模块、留言模块、浏览博主朋友模块,后台模块涉及:登陆、注册功能模块、日记管理模块、日记类型管理模块、朋友管理功能、相册管理模块、留言管理模块。(4)关于系统权限和安全性问题探讨。1.5本文构造本文分为七某些。第一某些一方面简介博客系统研究背景及发呈现状,提出运用网络技术开发博客管理系统目和意义。第二某些分析与系统设计及实现有关技术和数据库技术,明确系统操作流程。第三某些对博客管理系统进行需求分析,涉及对系统进行可行性分析,拟定在当前条件下,开发博客系统是可行。第四某些对系统数据库分析设计,对系统中数据库进行模型设计,涉及数据流图、实体联系图及数据表构造。第五某些对系统总体设计进行了全面阐明,拟定系统开发思想以及开发环境,并对系统中代码进行设计。第六某些阐述基于SSH构造博客管理系统重要功能详细设计与实现。第七某些对博客系统研究与设计工作进行总结,指出系统建设中存在局限性及解决方案,为将来系统设计改进打下基本。第2章系统有关理论基本本系统开发采用是当下最流行SSH构架Struts2+Hibernate+Spring框架,在该框架中,JavaEE3层构造:表达层、业务逻辑层、数据持久层完美结合在一起。实现了视图、控制器与模型彻底分离,并且还实现了业务逻辑层与持久层分离。这样无论前端如何变化,模型层只需很少改动,并且数据库变化也不会对前端有所影响,大大提高了系统可复用性。并且由于不同层之间耦合度小,有助于团队成员并行工作,大大提高了开发效率2.1体系构造SSH框架是典型J2EE三层构造,分为体现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层解决。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。体现层是老式JSP技术,自1999年问世以来,通过近年发展,其广泛应用和稳定体现,为其作为体现层技术打下了坚实基本。中间层采用是流行Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为如下几种。Web层,就是MVC模式里面“C”(controller),负责控制业务逻辑层与体现层交互,调用业务逻辑层,并将业务数据返回给体现层作组织体现,该系统MVC框架采用Struts。Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基本,通过对DAO组件正面模式包装,完毕系统所规定业务逻辑。DAO层,负责与持久化对象交互。该层封装了数据增、删、查、改操作。PO,持久化对象。通过实体关系映射工具将关系型数据库数据映射成对象,很以便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。Spring作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存储数据。一种良好框架可以让开发人员减轻重新建立解决复杂问题方案承担和精力;它可以被扩展以进行内部定制化;并且有强大顾客社区来支持它。框架普通能较好解决这个问题。2.2JSP简介

JSP即JavaServerPages,是基于JavaServlet以及整个Java体系Web开发技术。JSP已经成为开发Web动态网页重要、迅速和有效工具,是全新网络服务器编程环境。JSP充分运用了Java强大功能,是一种先进服务器端技术。随着Java技术日益成熟和流行,JSP在网络编程中也变得越来越重要。JSP基于强大Java语言,具备极强扩展能力,良好缩收性,与平台无关开发特性,成为构建动态网站主流技术之一,JSP有着其她技术所不具备优势。其优势在于:可以将内容生成和显示进行分离、生成可重用组件、采用标记简化页面开发。2.3ECLIPSE简介MyEclipse公司级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE扩展,运用它咱们可以在数据库和JavaEE开发、发布,以及应用程序服务器整合方面极大提高工作效率。它是功能丰富JavaEE集成开发环境,涉及了完备编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。在构造上,MyEclipse特性可以被分为7类:JavaEE模型、WEB开发工具、EJB开发工具、应用程序服务器连接器、JavaEE项目布置服务、数据库服务、MyEclipse整合协助。2.4TOMCAT简介Tomcat运营时占用系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统惯用功能;Tomcat是一种小型轻量级应用服务器,在中小型系统和并发访问顾客不是诸多场合下被普遍使用,是开发和调试JSP程序首选。当在一台机器上配备好Apache服务器,可运用它响应对HTML页面访问祈求。事实上Tomcat某些是Apache服务器扩展,但它是独立运营,因此当运营tomcat时,它事实上作为一种与Apache独立进程单独运营。配备对的时,Apache为HTML页面服务,而Tomcat事实上运营JSP页面和Servlet。Tomcat和IIS、Apache等Web服务器同样,具备解决HTML页面功能,它还是一种Servlet和JSP容器,独立Servlet容器是Tomcat默认模式。2.5MYSQL简介(1)MySQL是一种数据库管理系统。计算机是解决大量数据抱负工具,因而,数据库管理系统在计算方面扮演着核心中心角色,或是作为独立实用工具,或是作为其她应用程序构成某些。(2)MySQL是一种关联数据库管理系统。关联数据库将数据保存在不同表中,而不是将所有数据放在一种大仓库内。这样就增长了速度并提高了灵活性。(3)MySQL软件是一种开放源码软件。(4)MySQL数据库服务器具备迅速、可靠和易于使用特点。MySQL服务器有一套实用特性集合,这些特性是通过与咱们顾客密切合伙而开发。在咱们基准测试主页上,给出了MySQL服务器和其她数据库管理器比较成果。(5)MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。MySQL数据库软件是一种客户端/服务器系统,由支持不同后端1个多线程SQL服务器,数种不同客户端程序和库,众多管理工具和广泛应用编程接口API构成。2.6Struts2简介Struts2是一种先进,可扩展公司级JavaWEB应用程序框架。它是一种MVC(ModelViewController,模型,视图,控制)框架,Struts2提供控制和视图组件,并通过集成其他技术来提高模型。框架控制功能体当前连接应用程序模型和WEB视图。当接受到一种祈求,控制层调用一种Action类。Action类检查或更新应用程序状态通过模型层。传递数据在模型层和视图层之间,属性可以被放在Action类,或是一种古老又普通JAVA类中。普通,模型代表一种JavaBean对象图。模型用来做“持久性”工作,同步Action将扮演一种“交通警察”或适配器,框架会提供复杂,自动类型转换到简朴传播数据,在域对象和文本HTTP祈求之间。2.7Spring简介Spring是一种开源框架,是为理解决公司应用程序开发复杂性而创立。框架重要优势之一就是其分层架构,分层架构容许您选取使用哪一种组件,同步为J2EE应用程序开发提供集成框架。构成Spring框架每个模块(或组件)都可以单独存在,或者与其她一种或各种模块联合实现。模块功能如下:核心容器:核心容器提供Spring框架基本功能。核心容器重要组件是BeanFactory,它是工厂模式实现。BeanFactory使用控制反转(IOC)模式将应用程序配备和依赖性规范与实际应用程序代码分开。SpringDAO:JDBCDAO抽象层提供了故意义异常层次构造,可用该构造来管理异常解决和不同数据库供应商抛出错误消息。异常层次构造简化了错误解决,并且极大地减少了需要编写异常代码数量(例如打开和关闭连接)。SpringDAO面向JDBC异常遵从通用DAO异常层次构造。SpringMVC框架:MVC框架是一种全功能构建Web应用程序MVC实现。通过方略接口,MVC框架变成为高度可配备,MVC容纳了大量视图技术。Spring框架功能可以用在任何J2EE服务器中,大多数功能也合用于不受管理环境。Spring核心要点是:支持不绑定到特定J2EE服务可重用业务和数据访问对象。2.8Hibernate简介Hibernate是一种开放源代码对象关系映射框架,它对JDBC进行了非常轻量级对象封装,使得Java程序员可以随心所欲使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC场合,既可以在Java客户端程序使用,也可以在Servlet/JSPWeb应用中使用,最具革命意义是,Hibernate可以在应用EJBJ2EE架构中取代CMP,完毕数据持久化重任。Hibernate核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不但可以对持久化对象进行存取,还可以进行事务控制。第3章系统分析3.1系统可行性分析:可行性分析也称为可行性研究,是在系统调查基本上,针对新系统开发与否具备必要性和也许性,对新系统开发从技术、经济、社会方面进行分析和调查,以避免投资失误,保证新系统开发成功。可行性研究目就是用最小代价在尽量短时间内拟定问题与否可以解决。为了拟定开发具备可行性,对本系统重要进行了一下三个方面分析。(1)经济可行性。经济可行性重要是对项目经济效益进行评价。本系统对系统开发者来说并不需要太高成本支出,只是对系统管理者付出管理报酬饥渴,并且开发周期不需要太长,节约了人力、物力、财力资源,因此本系统在经济上是可行。(2)技术可行性。技术上可行性分析重要是分析技术条件能否顺利完毕开发工作,硬、软件能否满足开发者需求等。在软件方面,本系统采用是JSPJ2EE三层构造SSH构架进行开发,数据库采用了MYSQL;在硬件方面,本系统对机器自身没有太高规定,普通个人电脑完全满足。通过度析,具备技术上可行性。(3)操作可行性。界面设计时充分考虑顾客习惯,使得操作简朴。综上所述,本系统开发目的已明确,在技术和经济等方面具备可行性,并且投入少、见效快,因而系统开发时完全可行。3.2系统需求分析:3.2.1功能需求分析本博客系统分为前台和后台两个大模块,其中后台为博客管理页面,前台为顾客界面。(1)后台重要涉及如下几种功能:登陆、注册功能:顾客可以注册,注册时顾客输入注册信息,同步向数据库中保存顾客注册信息。进入后台时要登录,输入顾客名和密码。日记管理:顾客可以刊登日记,对日记信息查看、修改和删除。日记信息涉及标题、刊登时间、所属类型、日记描述信息等。日记类型管理:顾客可以添加、删除、修改日记类型。朋友管理功能:顾客可以添加、删除、查看朋友,访问朋友博客相册管理:上传图片到自己相册,删除相册中照片,查看上传照片。留言管理:顾客可以对访问者给自己留言查看和删除。(2)前台重要涉及如下功能:日记查看功能:访问者可以查看博主日记,并可以按照日记分类来查看。还可以对博主日记刊登评论。相册查看功能:查看博主上传图片。留言板功能:给博主留言。查看博主朋友:查看博主朋友。3.2.2系统业务需求及流程注册顾客可以注册、登录本系统,对文章、相册、朋友、留言等进行管理,其中涉及对各个模块信息增、删、改、查操作。网友可以访问博主博客,浏览博主文章、相册、朋友等信息,还可以对文章进行评论,给博主留言。系统业务流程如图3-1所示:图3-1博客系统总体业务流程图3.2.3系统数据分析及数据流图博客系统中,重要是注册顾客管理文章、留言、相册、朋友等数据,数据类型决定了程序对数据解决方式也就是算法,因而,数据是实现分析起点。现通过数据流图方式分析系统中数据流动和解决。对注册顾客,登陆博客系统后,系统接受顾客添加、修改、删除祈求,通过度析将这种祈求转化为相应HQL或者SQL语句执行对数据库有关操作,并将执行相应成果送回系统中。系统接受到数据库返回成果集,通过一定得分析解决,将其转换为JSP页面,返回到客户端显示给顾客。系统运营过程中,重要涉及到两某些数据流向,一某些是博客注册顾客在系统后台管理界面发出对数据库操作数据流,另一某些是顾客在应用前台使用系统时所产生数据流。图3-2博客管理系统数据流图对每一种注册顾客,可以细分为添加、修改、删除、浏览等操作,现以文章管理为例,其详细细节数据流图如图3-3所示:图3-3文章管理详细数据流图 3.2.4系统数据字典网站中数据元素:名字:顾客信息别名:描述:顾客个人信息,用于对顾客确认和更新。名字:顾客信息别名:描述:顾客个人信息,用于对顾客确认和更新。定义:顾客信息=账号+密码+姓名+性别+ QQ号码+邮箱号码位置:输入到顾客浏览器(后台)名字:日记信息别名:描述:日记详细信息。定义:日记信息=日记标题+日记类型+日记内容+刊登时间+ 日记描述位置:输入到顾客浏览器(后台)名字:相册信息别名:描述:相册详细信息。定义:相册信息=相片名称+相片存储地址+相片描述+上传时间位置:输入到顾客浏览器(后台)名字:日记类型信息别名:描述:用于对日记进行分类。定义:日记类型信息=类型名称+类型阐明位置:输入到顾客浏览器(后台)名字:朋友信息别名:描述:朋友详细信息。定义:朋友信息=姓名+性别+QQ号码+博客地址位置:输入到顾客浏览器(后台)名字:留言信息别名:描述:给访问过博主留言。定义:留言信息=留言标题+留言者+内容+留言时间位置:输入到顾客浏览器(前台)名字:评论信息别名:描述:对已有文章进行评论。定义:评论信息=评论标题+评论内容+评论时间位置:输入到顾客浏览器(前台)第4章系统数据库设计“数据库设计是建立数据库及其应用系统技术,是信息系统开发和建设中核心技术”。数据库模式是整个公司管理信息系统基本,合理数据库模式设计可以有效地存储数据,直接影响到系统功能有效实现。4.1概念设计将需求分析得到顾客需求抽象为信息构造即概念模型过程就是概念构造设计。E-R数据模型是惯用概念设计表达模型。依照需求分析,对系统规划设计出实体有:顾客实体、文章实体、文章类型实体、照片实体、朋友实体、留言实体、评论实体,分析各个实体之间关系得出系统数据库设计E-R图如图4-1所示:顾客顾客类型ID朋友ID留言ID照片ID评论ID操作评论相册留言朋友类型文章顾客ID姓名顾客ID名称年龄QQ号博客描述途径上传时间属于包括名称描述内容作者文章ID顾客ID标题作者时间顾客ID内容上传时间姓名密码性别Email时间描述内容标题1:n1:nn:11:n1:n图4-1各个实体E-R关系图4.2数据表构造在开发系统之前,必要对系统所用到数据进行大体分类和详细构造设计,既要做到清晰明了,又要能适应系统各项功能调用,而不至于产生构造上逻辑混乱,保证核心数据在乎外状况下不会被破坏,数据库是系统重中之重。数据库设计要遵循某些规则,一种好数据库满足某些严格约束和规定。尽量分离各实体相应表,一种实体相应一种表,分析该实体有哪些属性,相应有些什么字段,以及各实体之间联系。实体、属性与联系是进行概念设计时要考虑三个元素,也是一种好数据库设计核心。从实际出发,通过仔细地设计,得到各表设计如下表所示:表4-1顾客表字段名类型长度主键外键可否为空特殊操作阐明user_idINT4是否自增顾客IDuser_namevarchar50否顾客名user_passwordvarchar30否密码user_sexvarchar4否性别user_emailvarchar100否邮箱user_qqvarchar30否QQ号表4-2文章表字段名类型长度主键外键可否为空特殊操作阐明article_idINT4是否自增文章IDuser_idINT4是否顾客名Article_typeIdINT4是否类型article_titlevarchar100否标题article_contentvarchar4000否内容article_sendTimevarchar30否时间article_createvarchar100否来源article_infovarchar100否描述表4-3文章类型表字段名类型长度主键外键可否为空特殊操作阐明type_idINT4是否自增类型IDtype_namevarchar20否类型名type_infovarchar100否类型阐明表4-4朋友表字段名类型长度主键外键可否为空特殊操作阐明friend_idINT4是否自增朋友IDuser_idINT4是否顾客IDfriend_namevarchar30否朋友名friend_sexvarchar4否性别friend_qqvarchar30否QQ号friend_blogvarchar100否朋友博客表4-5留言表字段名类型长度主键外键可否为空特殊操作阐明message_idINT4是否自增留言IDuser_idINT4是否顾客IDmessage_titlevarchar30否标题message_authorvarchar30否留言者message_contentvarchar500否留言内容message_timevarchar30否留言时间表4-6相册表字段名类型长度主键外键可否为空特殊操作阐明photo_idINT4是否自增相册IDuser_idINT4是否顾客IDphoto_namevarchar30否相册名photo_addrvarchar100否相册地址photo_infovarchar100否描述photo_timevarchar30否时间表4-7评论表字段名类型长度主键外键可否为空特殊操作阐明review_idINT4是否自增顾客IDreArticle_idINT4是否文章IDreview_authorvarchar30否回答者review_contentvarchar500否回答内容创立好七个数据库表如下图:图4-3文章表图4-2顾客表图4-4文章类型表图4-5朋友表图4-6留言表图4-7相册表图4-8评论表4.3数据表构造关系通过数据库设计器可以建立数据库关系图,可以对表、索引、键、关系等进行创立、编辑、删除等。创立可视化关系图,可以直观显示数据库中各数据之间关系。系统数据表整体关系图如图4-13所示:图4-9系统数据表整体关系图第5章系统总体设计5.1系统总体设计原则依照系统需求分析,博客管理系统是一种集网络、数据库于一体综合系统,因而系统在总体设计时应遵循如下原则:(1)稳定性、实用性、良好可扩充性和安全性,提供良好人机界面,界面简洁,操作简朴。(2)系统功能设计完善,可以有效解决顾客使用中浮现问题,满足各个方面使用需要。(3)数据库构造设计合理,字段属性要精确,字段长度要满足实际需要。(4)系统流程合理,可以符合博客管理及使用基本操作流程。5.2系统功能设计5.2.1总体功能描述本系统重要功能分为两某些,一某些为后台注册顾客对博客内容管理,一某些为前台网友对博客访问。(1)顾客管理博客登陆、注册功能:网友注册成为博客顾客,进入后台需要验证会员信息。日记管理:对日记进行增、删、改、查。日记类型管理:对日记类型进行增、删、改、查。朋友管理功能:对朋友进行增、删、改、查,访问朋友博客。相册管理:上传图片到自己相册,删除相册中照片,查看上传照片。留言管理:顾客可以对访问者给自己留言查看和删除。(2)网友访问博客日记查看功能:查看博主日记,按照日记分类来查看,对日记刊登评论。相册查看功能:查看上传图片。留言板功能:给博主留言。查看博主朋友:查看博主朋友。5.2.2软件所实现功能强弱是衡量一种软件最主线原则。通过对系统全面分析并结合调研状况,拟定了本系统功能模块图。本系统划分为两个大功能模块:前台(顾客界面)和后台(博客管理)。前台和后台又分别划分为几种小模块,如图5-2所示为博客系统功能模块划分图:博客系统博客系统后台模块前台模块查看相册册留言板查看朋友浏览日记类型管理留言管理朋友管理日记管理浏览日记登陆注册登陆注册相册管理浏览日记册图5-1系统模块第6章系统详细设计与实现6.1SSH构架搭建及配备文献(1)创立一种WEB工程,命名为Blog;(2)导入struts2核心jar包,就是在WEB-INF下lib文献夹中放入jar包文献:freemaker-2.3.8.jar、ognl-2.6.11.jar、struts2-core-2.0.14.jar、xwork-2.0.7.jar、struts2-spring-plugin-2.0.14.jar。(3)加载spring,选中工程名,右击并选取【MyEclipse】选项下【AddSpringCapabilities...】(或者在工具栏中选取【MyEclipse】下【AddSpringCapabilities...】),在弹出对话框中进行如下选取:Spring2.5AOPLibraries、Spring2.5CoreLibraries、Spring2.5PersistenceCoreLibraries、Spring2.5WebLibraries、Spring2.5PersistenceJDBCLibraries。点击【Next】,点击Folder文本框后【Browse】,在弹出对话框中选取spring配备文献存储位置为WEB-INF文献夹:点击【OK】后,再点击【Finish】完毕。至此,已经完毕加载spring,在WEB-INF文献夹下已经生成了配备文献applicationContext.xml。(4)加载Hibernate,选取【MyEclipse】下【AddHibernateCapabilities...】,在弹出对话框中进行如下所示操作:全选MyEclipseLibraries,然后选取CopycheckedLibrary点击【Next】后,选取ExistingSpringconfigurationfile单选框,在SessionFactoryId文本框中填入"sessionFactory",如下所示:选取ExistingSpringconfigurationfile,选取前面applicationContext.xmlSessionFactoryId:sessionFactory点击【Next】,进行如下所示操作:这里需要选取一种之前在MyEclipse中配备好一种数据库链接。该操作中,只需在BeanId文本框中输入一种Id名,作为数据库源代用名,意义不大。然后在DBDriver下拉列表中,选取MyEclipse中创立好数据库源xiaoqi,其她信息将自动填写。点击【Next】,在弹出对话框中去掉CreateSessionFactoryclass?复选框,不创立该类,点击【Finish】完毕(创立过程中,加载jar包文献也许有重复,因此这个时候如果提示有某些jar包重复,问所有保存【KeepExiting】,还是替代掉【Replace】,可以选取替代掉【Replace】)。(5)配备web.xml文献,其内容如下:(6)反向生成实体类文献:在src包下新建一种entity包,将前面数据源所示数据库中各个表反向生成Hibernate实体类文献。(7)创立数据操作文献:在src包下创立dao包。(8)创立Action:在src包下新建一种包actions。(9)创立jsp页面。6.2系统编码设计6.2.1编写持久对象层类该层由若干实现类即普通JAVA类(PO)构成,这些需要在相应映射文献中配备,可以在数据访问层实现类中通过Hibernate框架来访问持久对象层。本系统共有七个数据库表,分别有七个实体类和它们映射。每个Java类又相应一种.hbm.xml映射文献,来将java类实体变量与数据库字段映射在一起。以文章表为例:(1)Article.java文献:packageentity;importjava.io.Serializable;publicclassArticleimplementsSerializable{ privateintarticleId;//文章ID privateintarticleTypeId;//文章类型ID privateintuserId;//注册顾客ID privateStringarticleTitle="";//文章标题 privateStringarticleContent="";//文章内容 privateStringarticleSendTime="";//刊登文章时间 privateStringarticleCreate="";//文章来源 privateStringarticleInfo="";//文章描述信息 //每个属性getter和setter办法 publicintgetArticleId(){ returnarticleId; } publicintgetUserId(){ returnuserId; } publicvoidsetUserId(intuserId){ this.userId=userId; } publicvoidsetArticleId(intarticleId){ this.articleId=articleId; } publicintgetArticleTypeId(){ returnarticleTypeId; } publicvoidsetArticleTypeId(intarticleTypeId){ this.articleTypeId=articleTypeId; } publicStringgetArticleTitle(){ returnarticleTitle; } publicvoidsetArticleTitle(StringarticleTitle){ this.articleTitle=articleTitle; } publicStringgetArticleContent(){ returnarticleContent; } publicvoidsetArticleContent(StringarticleContent){ this.articleContent=articleContent; } publicStringgetArticleSendTime(){ returnarticleSendTime; } publicvoidsetArticleSendTime(StringarticleSendTime){ this.articleSendTime=articleSendTime; } publicStringgetArticleCreate(){ returnarticleCreate; } publicvoidsetArticleCreate(StringarticleCreate){ this.articleCreate=articleCreate; } publicStringgetArticleInfo(){ returnarticleInfo; } publicvoidsetArticleInfo(StringarticleInfo){ this.articleInfo=articleInfo; }}(2)Article.hbm.xml文献:<hibernate-mappingpackage="entity"> <classname="entity.Article"table="article"> <idname="articleId"type="int"> <columnname="article_id"length="5"/> <generatorclass="assigned"></generator> </id> <propertyname="userId"type="int"> <columnname="user_id"length="5"/> </property> <propertyname="articleTypeId"type="int"> <columnname="article_typeId"length="5"/> </property> <propertyname="articleTitle"type="string"> <columnname="article_title"length="30"/> </property> <propertyname="articleContent"type="string"> <columnname="article_content"length="4000"/> </property> <propertyname="articleSendTime"type="string"> <columnname="article_sendTime"length="30"/> </property> <propertyname="articleCreate"type="string"> <columnname="article_create"length="50"/> </property> <propertyname="articleInfo"type="string"> <columnname="article_info"length="100"/> </property> </class></hibernate-mapping>6.2.2编写数据访问层类数据访问层类即DAO层类,负责与持久化对象交互。该层封装了数据增、删、查、改操作。本节以与朋友表交互为例:FriendDao.java文献:packagedao;importjava.util.List;importorg.springframework.orm.hibernate3.HibernateTemplate;importentity.Friend;publicclassFriendDaoextendsDAOSupport{ publicFriendDao(HibernateTemplatetemplate){ super(template); } //功能修改朋友信息 publicbooleanoperationFriend(Stringoperation,Friendsingle){ if(operation==null) operation=""; if(operation.equals("add")) template.save(single); if(operation.equals("modify")) template.update(single); if(operation.equals("delete")) template.delete(single); returntrue; } //功能查询所有朋友 publicListqueryFriend(intid){ Stringhql="FROMFriendwhereuserId="+id+"ORDERBYfriendName"; returntemplate.find(hql); } //功能依照ID查询某个朋友详细信息 publicFriendqueryFriendSingle(intid){ return(Friend)template.get(Friend.class,id); }}6.2.3编写业务逻辑层类业务逻辑层即Service层,负责实现业务逻辑。业务逻辑层以DAO层为基本,通过对DAO组件正面模式包装,完毕系统所规定业务逻辑。以朋友表为例:FriendService.java文献:packageservices;importjava.util.List;importdao.FriendDao;importentity.Friend;publicclassFriendService{ privateFriendDaofriendDao; publicFriendService(FriendDaofriendDao){ this.friendDao=friendDao; } //添加朋友 publicbooleanaddFriend(Friendsingle){ returnfriendDao.operationFriend("add",single); } //删除朋友 publicbooleandeleteFriend(Friendsingle){ returnfriendDao.operationFriend("delete",single); } //修改朋友 publicbooleanupdateFriend(Friendsingle){ returnfriendDao.operationFriend("modify",single); } //获取指定id朋友 publicFriendgetFriendInfo(intid){ returnfriendDao.queryFriendSingle(id); } //列出朋友 publicListqueryFriendList(intid){ returnfriendDao.queryFriend(id); }}6.2.4编写WEB层类该层重要涉及JSP页面、MVC中“C”(Control),其中“C”就是Struts2中Aciton类。在Action类中重要负责调用业务逻辑层组件,并返回相应成果(result)。(1)Action类编写LoginAction.java文献:packageactions;importservices.UserService;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;importentity.User;publicclassLoginActionextendsActionSupport{ privateUseruser; privateUserServiceuserService; publicUsergetUser(){ returnuser; } publicvoidsetUser(Useruser){ this.user=user; } publicUserServicegetUserService(){ returnuserService; } publicvoidsetUserService(UserServiceuserService){ this.userService=userService; } publicStringexecute()throwsException{ intid=this.userService.verifyUser(user); if(id>0){ ActionContext.getContext().getSession().put("userID",id); ActionContext.getContext().getSession().put("USER",user); returnSUCCESS; }else{ return"input"; } }}(2)sJsp页面编写JSP页面重要用来显示后台信息,呈现给顾客界面。后来台文章显示为例:添加文章JSP页面Admin_ArticleAdd.jsp文献:<html> <head> <title>博客后台管理-刊登文章</title><linkrel="stylesheet"href="${pageContext.request.contextPath}/css/style_admin.css"type="text/css"> </head> <body> <center> <tablewidth="778"border="0"cellspacing="0"cellpadding="0" bgcolor="#FFFFFF"style="word-break:break-all"><tr><tdcolspan="2"><%@includefile="../view/AdminTop.jsp"%></td></tr> <tr> <td><jsp:includepage="../view/AdminLeft.jsp"/></td> <tdalign="center"valign="top"> <s:formvalidate="true"action="add.action"method="post"> <tableborder="0"width="100%"cellspacing="0"cellpadding="8"> <trheight="50"><tdcolspan="2">【刊登文章】</td></tr> <tr><tdalign="center"width="20%">文章类别:</td><td> <selectname="article.articleTypeId"style="width:100"> <optionvalue=""/> <c:forEachvar="list"items="${typeList}"><optionvalue="${list.articleTypeId}">${list.articleTypeName}</option> </c:forEach></select></td></tr><tr><tdalign="center">文章标题:</td><tdalign="center"><inputtype="text"name="article.articleTitle"size="77"></td></tr><tr><tdalign="center">文章来源:</td><td><selectname="article.articleCreate"style="width:100"> <optionvalue=""/> <optionvalue="原创">原创</option> <optionvalue="摘自">摘自</option></select></td></tr><tr><tdalign="center">文章描述:</td><td><inputtype="text"name="article.articleInfo"size="77"></td></tr><tr><tdalign="center"valign="top">文章内容:</td><td><s:textareaname="article.articleContent"rows="8"cols="65"></s:textarea></td></tr><trheight="30"><tdcolspan="2"align="center"><inputtype="submit"class="btn_bg"value="保存"><inputtype="reset"class="btn_bg"value="重置"></td></tr></table></s:form></td></tr><tr><tdcolspan="2"><%@includefile="../view/AdminEnd.jsp"%></td></tr></table></center></body></html>6.3系统重要功能模块详述6.3.1后台:博客管理模块(1)网民可以注册为博客会员,拥有自己博客,顾客在登录时系统具备输入有效性检测功能,如果顾客名和密码任何一项为空,则提示顾客,实现该功能使用了过滤器:LoginAction-validation.xml文献:<validators> <fieldname="user.userName"> <field-validatortype="requiredstring"> <paramname="trim">true</param> <message>请输入顾客名!</message> </field-validator></field> <fieldname="user.userPassword"> <field-validatortype="requiredstring"> <paramname="trim">true</param><!--检查时去掉先后空格--> <message>请输入密码!</message> </field-validator> </field></validators>如图6-1是登陆模块界面显示:图6-1登陆模块(2)日记管理模块,开博网民可以在博客系统上进行撰写日记、查看日记、删除日记、修改日记等操作。1.如图6-2为查看日记界面显示:图6-2查看日记2.删除日记时,系统要弹出确认对话框,确认顾客与否拟定要删除文章,【拟定】则文章被删除,同步刷新文章列表显示,【取消】停在当前页面,不做任何变化。如图6-3为删除日记界面显示:图6-3删除日记3.日记列表准时间顺序显示博主文章,同步还可以查看某一类型所有文章,实现这功能办法是在DAO层查询数据时,按文章类型进行条件查询,hql查询语句如下:hql="FROMArticlewherearticleTypeId="+typeId+"anduserId="+userId+"orderbyarticleSendTimeDESC";如图6-4为日记列表显示界面:图6-4日记列表4.如图6-5为修改日记界面显示:图6-5修改日记(3)日记类别管理日记类别管理模块基本实现了对日记类别增、删、改、查功能,实现办法类似与文章管理模块。如图6-6为日记类别列表显示:图6-6为日记类别列表(4)相册管理模块相册管理模块博主可以上传照片、查看照片、删除照片,其中上传照片使用了Struts2<s:filename="picture"></s:file>标签,同步在相应action类中进行上传解决,PhotoAction.java中核心代码如下://设立两个变量分别接受上传过来文献属性privateFilepicture;//上传文献privateStringpictureFileName;//文献名称//由于上传到服务器上图片文献为暂时文献,因此要将暂时文献保存到服务器上指定文献夹中,以便读取。privatevoidupLoad(){Stringparent=ServletActionContext.getServletContext().getRealPath("upload"); Stringpath=parent+"\\"+pictureFileName; photo.setPhotoAddr(path);//将上传途径存储在数据库中 Filesaved=newFile(parent,pictureFileName); InputStreamins=null; OutputStreamous=null; try{saved.getParentFile().mkdirs(); ins=newFileInputStream(picture); ous=newFileOutputStream(saved); byte[]b=newbyte[1024]; intlen=0; while((len=ins.read(b))!=-1){ ous.write(b,0,len);} }catch(Exceptione){ e.printStackTrace(); }finally{ if(ous!=null) try{ ous.close(); }catch(IOExceptione){ e.printStackTrace(); } if(ins!=null) try{ ins.close(); }catch(IOExceptione){ e.printStackTrace(); }} } //上传照片 publicStringuploadPhot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论