版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳师范大学学士学位论文PAGE―PAGE38―本科毕业论文(设计)(2013届本科毕业生)题目:微博系统的设计与实现学生姓名:学生学号:学院名称:软件学院专业名称:计算机科学与技术指导教师:二零一三年五月【摘要】随着社会的进步,时代的发展,微博的使用在网上已经非常广泛,微博系统对用户而言,除了方便之外,还是与朋友之间沟通交流的桥梁。该微博系统的设计与实现正是适应了这种要求。本系统采用Java语言,MySQL数据库以及Struts、Hibernate、Spring技术开发,以Eclipse作为开发工具进行研发。其功能主要包括系统登录和注册、我的微博模块、个人中心模块、最新动态模块、留言板模块以及帮助中心六大部分。其中在我的微博模块中有查看我的微博和查看我的好友功能,还有更多设置功能;在个人中心模块中具体分为完善资料功能和对密码的操作;在最新动态模块中可以发表微博和查看历史微博内容;在留言板模块中可以发表留言和查看历史留言信息等;而帮助模块中主要是对一些常见问题进行解答。本论文完整介绍了系统的功能和开发的过程,重点说明了设计的重点与设计思想,详细阐述了系统开发的需求分析以及相关技术的介绍。【关键字】微博系统,Java,Struts,HibernateDesignAndImplementationOfMicroBlogSystem【Abstract】Withtheprogressofsociety,thedevelopmentofthetimes.MicroBlogonlinehasbeenverywidelyused,MicroBlogSystemforusers,inadditiontoconvenience,orbridgeofcommunicationbetweenfriends.TheMicroBlogSystemisadaptedtothedesignandimplementationoftherequirements.ThesystemusestheJavalanguage,MySQLandStruts,Hibernate,Springtechnology,Eclipseasdevelopmenttool.Itsmainfunctionsincludesixpartsofsystemloginandregistration,myMicroBlogmodule,personalcentermodule,recentnewsmodule,messageboardmoduleandhelpcentermodule.MyMicroBlogmoduleincludesmessage’select,friends’select,add,delete,andmoresettingsfunctions;personalcentermoduleincludespassword’modifyandqueryfunctions;recentnewsmoduleincludesinformation’sadd,delete,modifyandqueryfunctions;messageboardmoduleincludesmessage’sadd,delete,modifyandqueryfunctions;inthehelpcentermodule,istoanswersomecommonquestions.Thisthesisintroducesthesystem’sfunctionsandprocedureofdevelopmentcompletely,declaresthepointofdesignandthethinkingofdesignimportantlyandstatestherequirementanalysisofthesystemdevelopmentindetail.【Keywords】MicroBlogSystem,Java,Struts,Hibernate目录TOC\o"1-2"\h\z\u13133第一章绪论 1314471.1微博的研究背景 1158701.2国内外研究现状 168211.3本文结构 430728第二章相关技术介绍 653212.1JAVA语言概述 6130452.2JAVAEE平台技术介绍 74062.3MySQL数据库简介 14181672.4MVC设计模式简介 157412第三章系统需求分析 19150563.1系统总体需求分析 1928663.2系统开发设计思想 20163493.3系统功能结构 2013713.4系统的操作过程 23193493.5系统总体结构图 24126013.6数据库的概念 2487083.7数据库E-R图 25190543.8系统界面设计 25257第四章详细设计 27115894.1数据库的选择 27230894.2数据库表的描述 2764484.3系统开发环境介绍 2914876第五章系统实现 30286835.1系统登录和注册 30114795.2添加留言信息 3383455.3删除好友功能 36135855.4修改个人信息 3776465.5查询留言信息 39206195.6其他功能 404665第六章系统测试及维护 4274856.1系统测试 42134296.2测试用例 4232566.3系统维护 435663第七章总结与展望 44162627.1总结 44158537.2展望 4412436后记 4513817参考文献 46绪论1.1微博的研究背景微博,就是微博客(MicroBlog)的简称,是一个基于用户关系的信息分享、传播以及获取的平台,用户可以通过WEB、WAP以及各种客户端组建个人社区,以140字左右的文字更新信息,并实现即时分享。美国的twitter是最早也是最著名的微博,根据一些相关的公开的数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。在2009年8月份,中国最大的门户网站新浪网推出“新浪微博”内测版,成为门户网站中第一家提供微博服务的网站,从此微博正式进入中文上网主流人群的视野。微博是一种通过关注机制分享简短实时信息的广播式的社交网络平台。陈永东,国内知名新媒体领域研究学者,他在国内率先给出了微博的定义。其中有五方面的理解:1、关注机制:分为单向和双向两种;2、内容简短:通常为140字;3、实时信息:最新的实时信息;4、广播式:公开的信息,谁都可以浏览以及转播;5、社交网络平台:把微博归为社交网络。微博为广大用户提供了这样一个平台,你既可以以观众的身份在微博上浏览你感兴趣的信息,也可以以发布者的身份在微博上发布内容供别人浏览。发布的内容一般较短,通常为140字的限制,由此命名为微博。当然,也可以发布图片,分享歌曲、视频等。微博有两方面的含义:首先,对于一些强调版面布置的博客来说,微博主要是由简单的只言片语组成,从这个角度来说,微博对用户的技术要求门槛很低,而且与博客相比,对语言的编排组织的要求没那么高。第二,微博浏览非常方便,由于微博开通的多种API,所以用户可以通过手机、网络等方式来即时更新自己的个人信息,深受广大用户的喜爱。微博的特点:信息获取具有很强的自主性、选择性;微博宣传的影响力具有很大弹性,与内容质量高度相关;内容短小精悍。微博的内容限定为140字左右,内容简短,不需长篇大论,门槛较低;信息共享便捷迅速,这也是微博最大的特点。1.2国内外研究现状1.2.1微博在国外的发展史埃文·威廉姆斯(EvanWilliams)是博客技术先驱blogger的创始人,他在2006年3月创建的新兴公司Obvious推出了大微博服务。在最初阶段,这项服务的功能很不完善,只是用于向好友的手机发送文本信息。Twitter是由blogger的创始人威廉姆斯(EvanWilliams)在2006年3月推出的,其英文的原意为小鸟的叽叽喳喳声,此时功能有些改进,用户可以使用数百种工具更新信息。Twitter的出现把世人的眼光引入了一个叫微博的小小世界里。截至2007年5月,国际间计算总共有111个类似Twitter的网站。然而,最受人关注的仍是Twitter,在2007年,在得克萨斯州奥斯汀举办的南非西南会议中赢得了部落格类的网站奖。Plurk和Jaiku是Twitter的主要竞争对手。由于Twitter的发展前景,国内一些人开始蠢蠢欲动。从校内网起家的王兴,在2007年5月创建了饭否网。而作为一个拥有4.1亿QQ用户的企业——腾讯,看着用户对随时随地发布自己状态的需求愈发强烈后,在2007年8月13日腾讯滔滔面世。但事情没有预期发展的好,Twitter建立的“微型王国”不是在短时间内掘出黄金的浅矿,所以国内微博企业目前尚处于慢热的状态。国内微博不约而同地将现在的目光放在了产品调整以及服务完善上,在还没有办法吸引到风险投资的眼光之前,他们最需要做的可能是如何靠自己的能力继续活下去。1.2.2微博在国内的现状及发展趋势中国第一家带有微博色彩的饭否网于2007年开张开始,到2009年,微博这个新词汇以摧枯拉朽的姿态扫荡世界,不久便成为全世界最流行的词汇。国内大批老牌微博产品(饭否、腾讯滔滔等)在2009年7月中旬开始停止运营,一些新产品开始进入人们的视野:6月份开放的Follow5,7月份开放的9911,8月份开放的新浪微博等。在2010年,国内微博开始崛起。四大门户网站均开设微博。根据一些相关公开数据显示,截至2010年1月份,在全球范围内,该产品已经拥有7500万注册用户。2011年上半年,我国微博用户迅速增长,其数量从6331万增至1.95亿,半年增幅高达208.9%。微博在网民中的普及率从13.8%增至40.2%。从2010年底至今,手机微博在网民中的使用率比例从15.5%上升到34%。 图1-1中国微博市场用户周覆盖人数图1-2用户访问次数及有效浏览时间集中度至今,因为新浪微博抢占了先机,其用户数已经超过1亿,再加上其在整体的战略执行上也比较彻底到位,所以获得了现在的地位。仅仅两年时间,新浪微博就为新浪创造了几十亿美金的巨额收入。而腾讯微博作为另一个微博巨头,也发展迅猛。其拥有近5亿的QQ注册用户,其中2亿左右是活跃用户。这些人受潮流趋势的影响很快开通腾讯微博。另外其作为重要的推广渠道。企业用户通过注册腾讯官方微博,能够迅速的扩大企业的知名度。高校教育平台也通过微博来推动了中国教育事业信息化发展的步伐。互联网实验室认为,我国微博将向工具化、细分化、移动化和开放化等方向发展。如下图所示。图1-3发展方向研究图现在,已经有很多微博服务商对微博网站进行了专业细分,如和讯网推出的财经微博,搜房网推出的房地产专业微博等。随着这种细分与竞争,细分化的趋势将更加明显。1.2.2中外微博的文化差异在国内,关系社会这一本质属性是微博抓住的文化特征,中国人社会认同的结构建立在一套强有力的关系体系之中,群体化和联系化是其文化内核。一个人社会地位的高低取决于社会关系的强弱。关系是实现权力重构的核心的一种资本,因此,微博的发展过程,也是新权力者关系资本积累的过程。在国外,微博Twitter的产品初衷正如单词Twitter的英文原义——鸟儿叽叽喳喳的叫声。它抓住了美国人善于交谈的个性、渴望表达和信息分享的特征,正如一个充斥了个人琐碎的思索、片段化的情感的窗口。1.3本文结构第1章绪论,介绍微博的研究背景,国内外的发展史及论文的结构等。第2章相关技术介绍,对微博的设计和实现过程中用到的开发语言、平台技术以及框架技术进行介绍,主要阐述了JAVA语言、JAVAEE企业级应用、三大框架、MySQL、MVC模式。第3章系统需求分析,对系统的总需求进行分析,并对我的微博模块、个人中心模块、最新动态模块、留言板模块、帮助中心模块的需求进行的分析。第4章详细设计,在需求分析的基础上,进行总体设计,并对我的微博模块、个人中心模块、最新动态模块、留言板模块进行详细设计,进行数据库设计,对并数据关系进行说明。第5章系统实现,系统总体实现部分主要论述一些功能子模块的实现,例如系统登录和注册、添加留言信息、删除好友功能、修改个人信息等。第6章系统测试及维护,包括对测试原理及常用软件测试方法的介绍,针对登录部分设计测试用例,并对测试的结果如何进行说明。第7章总结与展望,总结微博系统的研究情况,以及在设计和实现过程中的优点以及本系统还需要进行改进的地方。相关技术介绍2.1JAVA语言概述JAVA最初被命名为Oak,这类语言可以来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题,其目标设定在家用电器等小型系统的编程语言,因为这些智能化家电的市场需求没有Sun预期的高,所以放弃了该项计划。但是随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,所以在Oak几近失败之时改造了Oak,并且正式发布,命名为“Java”。Java编程语言的风格与C、C++语言十分类似。不同的是:Java是一个纯的面向对象的程序设计语言,Java舍弃了C++语言中容易引起错误的指针(用引用来取代)、多重继承(用接口来取代)、运算符重载(operatoroverloading)等特性,Java继承了C++语言面向对象技术的核心,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧[2]。在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性[3]。Java语言不同于一般的编译执行计算机语言和解释执行计算机语言。Java的运行机制是首先将源代码编译成二进制字节码(bytecode),也就是所谓的机器语言,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。但是,在J2SE1.4.2发布后,Java的执行速度有了大幅提升。Sun公司在推出Java之际就将其作为一种与传统程序不同的开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。Sun公司的口号之一是“Java语言靠群体的力量而非公司的力量”,也获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式是完全不同的[4]。Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。这是Sun公司对Java编程语言的解释。Java平台是基于Java语言的平台。这样的平台目前非常流行,因此,微软公司先后推出了与之竞争的.NET平台以及模仿Java的C#语言。Java的主要特性:Java语言是简单的、面向对象的、分布式的,也是健壮的,更是安全的,Java语言的体系结构是中立的,Java语言具有可移植、多线程、动态等特征,Java也是一种解释型的语言,Java是高性能的。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2JAVAEE平台技术介绍JAVAEE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循JAVAEE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。JAVAEE技术的基础就是核心Java平台或Java2平台的标准版,JAVAEE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBCAPI、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构[5]。JAVAEE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,JAVAEE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持EnterpriseJavaBeans[6],有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。JAVAEE的四层模型,如图2.1所示。(1)运行在客户端机器上的客户层组件。(2)运行在JAVAEE服务器上的Web层组件。(3)运行在JAVAEE服务器上的业务逻辑层组件。(4)运行在EIS服务器上的企业信息系统(Enterpriseinformationsystem)层软件。图2-1JAVAEE的4层模型图2.2.1Struts技术简介Struts最早是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助减少在运用MVC设计模型来开发Web应用的时间。随着JSP与Servlet技术大量应用于以Web为基础的应用程序,Java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。早期JSP规格书中曾列举两种可行之JSP应用架构,分别为Model1与Model2。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。在Model1架构中,JSP直接处理Web浏览器送来的请求(Request),并辅以JavaBean处理应用相关逻辑。Model1架构单纯编写比较容易,但在Model1中JSP可能同时肩负View与Controller角色,两类程序代码有可能混杂而不易维护。而Model2中将Servlet纳入架构中扮演前端Controller角色,将Web浏览器送出的请求集中送至Servlet,Servlet可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应的JSP处理。Model2中采用了较佳的MVC模式,但增加了编写复杂度。Struts是Apache软件基金下Jakarta项目的一部分。除Struts之外,还有其他成功的开源产品,包括Tomcat,Ant和Velocity。2000年CraigR.McClanahan先生贡献了他编写struts的JSPModel2架构的ApplicationFramework原始程序代码给Apache基金会,成为ApacheJakarta计划StrutsFramework前身。Struts框架的主要架构设计和开发者是CraigR.McClanahan。Craig也是Tomcat4的主要架构师,以及JavaWebServicesDeveloperPack的主要架构师和实现者。他现在是Sun的JavaServerFaces(JSR-127)以及J2EE平台的Web层架构的规范领导。CraigR.McClanahan先生是JCPExpertGroup成员之一,曾参与JSP规格制定与Tomcat4之编写,因此StrutsFramework广受Java开发人员群体所重视。Borland自2002年底开始于开发工具JBuilder中支持StrutsFramework。Struts最早是作为ApacheJakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。Struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。Struts提供的类使得开发工作更加简单,这些类包括:1.控制程序流程的类;2.实现和执行程序事务逻辑的类;3.自定义的标记库使得创建和验证HTML表单更加容易。2.2.2Hibernate技术简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration类负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式。Hibernate主键介绍:Assigned方式由用户生成主键值,并且要在save()之前指定否则会抛出异常特点:主键的生成值完全由用户决定,与底层数据库无关。用户需要维护主键值,在调用session.save()之前要指定主键值。Hilo使用高低位算法生成主键,高低位算法使用一个高位值和一个低位值,然后把算法得到的两个值拼接起来作为数据库中的唯一主键。Hilo方式需要额外的数据库表和字段提供高位值来源。默认情况下使用的表是hibernate_unique_key,默认字段叫做next_hi。next_hi必须有一条记录否则会出现错误。特点:需要额外的数据库表的支持,能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。Hilo主键生成方式由Hibernate维护,所以Hilo方式与底层数据库无关,但不应该手动修改hi/lo算法使用的表的值,否则会引起主键重复的异常。Increment方式对主键值采取自动增长的方式生成新的主键值,但要求底层数据库的支持Sequence。如Oracle,DB2等。需要在映射文件xxx.hbm.xml中加入Increment标志符的设置。特点:由Hibernate本身维护,适用于所有的数据库,不适合多进程并发更新数据库,适合单一进程访问数据库。不能用于群集环境。Identity当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。特点:与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment,SQLServer中是Identity,支持的数据库有MySql、SQLServer、DB2、Sybase和HypersonicSQL。Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。Sequence需要底层数据库支持Sequence方式,例如Oracle数据库等。特点:需要底层数据库的支持序列,支持序列的数据库有DB2、PostgreSql、Oracle、SAPDb等在不同数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库需要修改配置文件。Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式。特点:根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。其最大的特点就是能够保证数据库中的主键唯一性,这样就可以节省存贮空间。Foreign用于一对一关系中。GUID主键生成方式使用了一种特殊算法,保证生成主键的唯一性,支持SQLServer和MySQL数据库。2.2.3Spring技术简介Spring是一个开源框架,它由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring框架是一个分层架构,由7个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式,如下图所示。图2-2Spring模块Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。SpringAOP:通过配置管理特性,SpringAOP模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何对象支持AOP。SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。SpringDAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。SpringDAO的面向JDBC的异常遵从通用的DAO异常层次结构。SpringORM:Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatisSQLMap。所有这些都遵从Spring的通用事务和DAO异常层次结构。SpringWeb模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与JakartaStruts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。SpringMVC框架:MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI。Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。IOC和AOP:控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在Spring框架中是IOC容器)负责将这些联系在一起。在典型的IOC场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了IOC的一个实现模式。类型1服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性(例如,需要的附加服务)类型2通过JavaBean的属性(例如setter方法)分配依赖性类型3依赖性以构造函数的形式提供,不以JavaBean属性的形式公开。Spring框架的IOC容器采用类型2和类型3实现。AOP就是面向方面的编程,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。AOP和IOC是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和Java类中才能实现日志功能。在AOP方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是Java类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用SpringAOP编写的应用程序代码是松散耦合的。AOP的功能完全集成到了Spring事务管理、日志和其他各种特性的上下文中。IOC容器Spring设计的核心是org.springframework.beans包,它的设计目标是与JavaBean组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是BeanFactory接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory也可以管理对象之间的关系。BeanFactory支持两个对象模型。单态模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton是默认的也是最常用的对象模型。对于无状态服务对象很理想。原型模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。bean工厂的概念是Spring作为IOC容器的基础。IOC将处理事情的责任从应用程序代码转移到框架。正如我将在下一个示例中演示的那样,Spring框架使用JavaBean属性和配置数据来指出必须设置的依赖关系。2.3MySQL数据库简介MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。Sun公司于2008年1月16号收购了瑞典MySQLAB公司。而在2009年,Oracle又收购了SUN。当时,没有任何人对MySQL的前途抱乐观的态度。但是目前,MySQL被广泛地应用在Internet上的中小型网站中。由于其速度快、体积小、总体拥有成本低,尤其MySQL是开源的这一特点,所以许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL特性:1.使用C和C++编写,并经过了多种编译器进行测试,保证源代码的可移植性;2.支持FreeBSD、AIX、OpenBSD、MacOS、NovellNetware、Solaris、HP-UX、Linux、OS/2Wrap、Windows等多种操作系统;3.MySQL为多种编程语言提供了API。这些编程语言包括C、C++、Java、Python、PHP、Perl、Ruby、Tcl和Eiffel等;4.支持多线程,可以充分利用CPU资源;5.使用优化的SQL查询算法,有效地提高查询速度;6.既能够作为一个单独的应用程序,应用在客户端服务器网络环境中,也能够作为一个库,嵌入到其他的软件中提供多语言支持,常见的编码如中文的BIG5、GB2312,日文的Shift_JIS等都可以用作数据表名和数据列名;7.提供TCP/IP、JDBC和ODBC等多种数据库连接途径;8.提供一些管理工具,例如:管理、检查、优化数据库;9.可以处理拥有上千万条记录的大型数据库。MySQL的应用:与其他的大型数据库例如Oracle、SQLServer、DB2等相比,MySQL也有它的缺点,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这些不会影响MySQL受欢迎的程度。MySQL提供的功能对于一般的个人使用者和中小型企业来说已经绰绰有余,而且由于MySQL是开源的软件,因此可以大大降低总体拥有成本。LAMP(Linux+Apache+MySQL+PHP)是目前Internet上流行的网站构架方式,即:操作系统使用Linux,Apache作为Web服务器,数据库使用MySQL,PHP作为服务器端脚本解释器。这四个软件的优点都是自由或开放源码软件(FLOSS),所以使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。MySQL管理:MySQL数据库可以使用命令行工具管理(命令mysql和mysqladmin),也可以从MySQL的网站下载图形管理工具MySQLQueryBrowser和MySQLAdministrator。phpMyAdminMySQL资料库系统管理程式,是由php写成的,让管理者可用Web界面管理MySQL资料库。由PHP写成的还有phpMyBackupPro,可以透过Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来在某个时间或周期自动备份MySQL数据库。除此之外,还有其他的GUI管理工具,例如早先的mysql-front以及navicat,emsmysqlmanager等等。MySQL最常见的应用架构有:适合小规模应用的单点(Single);适合中小规模应用的复制(Replication);适合大规模应用的集群(Cluster)。MySQL4.1版本中增加了不少新的性能,包括对子查询的更好的支持,对主键的更高速度的缓存,以及应网络约会网站所要求而生的,基于地理信息的查询等。与其同步开发的5.0版本则把目标对准了企业用户,5.0版本具有4.1版本中的所有新特性,而且还有以下新特点:系统自动报错机制;对外键的良好支持以及对存储过程的充分支持。本系统应用MySQL的主要原因是,MySQL数据库的体积小,而且运行速度快,总体拥有成本低,MySQL服务器是可靠的和易于使用的数据库服务器,而且其是开放源码,为了降低网站总体拥有成本而选择MySQL作为网站数据库。2.4MVC设计模式简介模型(Model),视图(View)和控制(Controller)三个单词组成了Model-View-Controller,缩写即MVC。MVC模式的目的就是实现Web系统的职能分工。Model层通常可以用JavaBean或EJB来实现系统中的业务逻辑。View层通常用JSP来实现与用户的交互。Model与View之间沟通的桥梁是Controller层,它可以分派用户的请求并且选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。MVC开始是存在于Desktop程序中的,M指的是数据模型,V指的是用户界面,C指的是控制器。将M和V的实现代码分离是使用MVCcopyright:AppleInc.的目的,从而使同一个程序可以使用不同的表现形式。确保M和V的同步则是C存在的目的,一旦M改变,V应该同步更新。至今已被广泛使用的模型-视图-控制器(MVC)是XeroxPARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式。最近几年被推荐为Oracle旗下Sun公司JavaEE平台的设计模式,并且越来越多的使用ColdFusion和PHP的开发者喜欢使用MVC。MVC模式是一个有用的工具箱,它既有优点又有缺点。MVC是如何工作的:MVC强制性的使应用程序的输入、处理和输出分开,它是一个设计模式。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。下图介绍了这几个模块的功能以及之间的关系。图2-3MVC设计模式图MVC的优缺点:(1)低耦合性。视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。(2)高重用性和可适用性。随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(WAP),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。(3)较低的生命周期成本。MVC使开发和维护用户接口的技术含量降低。(4)快速的部署。使用MVC模式使开发时间得到相当大的缩减,它使Java开发人员集中精力于业务逻辑,HTML和JSP开发人员集中精力于表现形式上。(5)可维护性。分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。有利于软件工程化管理由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。根据开发者经验,由于开发者将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这与其所能带来的好处相比是不值一提。MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。为什么要使用MVC:大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化(自PHP5.0版本后已全面支持面向对象模型)语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是毋庸置疑的。首先,最重要的一点是多个视图能共享一个模型,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是WAP界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性、代码重用和结构方面上一个新的台阶。系统需求分析3.1系统总体需求分析在本章,主要对微博的设计与开发进行详细的需求与分析。本系统对数字化信息资源的组织采用数据库。系统的数据库结构是关系数据库MySQL,使用JSP平台作为前台开发。目前,最完备的面向对象语言就是JSP,其发展前景很可观。MySQL数据库的体积小,而且运行速度快,总体拥有成本低,MySQL服务器是可靠的和易于使用的数据库服务器,而且其是开放源码,并且支持SQL语法。从经济角度分析。对于一个普通的用户来说,要想拥有一个微博,可以直接在Internet上注册一个新浪微博或者是腾讯微博,这样的微博都是免费注册的,对于用户来说及经济又实惠,是用户拥有微博的最佳选择。当然,还有第二种方法可以拥有一个微博,就是自己去搭建,用户可首先要买一个独立的域名,然后购买服务器托管在机房或者租用一个虚拟主机,还需要下载一个开放源码的微博系统将其安装在自己的服务器或者空间上,这种方法是需要花费一定的费用的,大概每年200元左右。对于普通的用户来说,两种方法相比起来,显然第二种方法不实用也不合算。因此,98%的用户都会选择直接在Internet上直接注册开通一个微博。微博在人们的生活中所扮演的角色。对于商人来说,微博是为他们制造利益的一种工具。怎么样通过微博来推广自己的产品等是这类人所热衷的。而对于一些普通用户来说,微博只是一种娱乐,他们可以在这里找到快乐。而对于机构而言,提高自己的知名度从而吸引更多的消费者就是他们的目的。从技术角度分析。在我们以往所学过的课程中,《JAVA语言与面向对象程序设计》,《数据库原理》,《操作系统知识》,《网络基础》等为此课题的设计与开发提供了坚实的基础。JSP也是一种简单的语言,对于会使用HTML语言的人来说JSP很容易懂,所以技术难度并不高。微博,作为一个很典型的Web应用,其开发所遇到的所有技术难题已经分析到,有好的平台和数据库,对于这样的问题会很好解决。从操作角度分析。在整个系统的开发中,能否很好的掌握开发的进度,能否科学的分配时间与资源,能否使系统的开发不间断从而使得其能有条不紊的进行是分析的重点。只要在开发之前做好充足的准备工作,制定好完善的计划,在开发中根据实际情况进行修改和完善,在操作中就不会出现问题。综上所述:如果有良好的经济支撑和技术支持,外加操作上的支持,此系统就会达到预期的效果。此系统的开发工具具有投入少、周期短、见效快和以控制的特点,所以此系统完全可以开发。3.2系统开发设计思想本系统采用的是典型的J2EE平台下的MVC三层结构,分为模型层(Model),视图层(View),控制层(Controller)。为了实现MVC这种三层结构,本系统采用了目前广泛流行的MVC框架Struts。本系统的控制层是Struts的核心类org.apache.struts.action.ActionServlet,它根据struts-config.xml中的配置分发请求和请求处理完成后系统页面的相应的跳转。本系统的模型层是相应的Java实体类和业务逻辑类,这些类是本系统实现的基础和根本。本系统的视图层是传统的JSP技术,它将后台处理完成的数据进行进一步处理,使其适合页面的显示,并根据业务要求的不同,动态的显示这些数据,JSP技术自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。所以本系统采用JSP作为本系统的视图层。3.3系统功能结构此系统的主要模块有五个,分别是:我的微博模块、个人中心模块、最新动态模块、留言板模块和帮助中心模块。在我的微博模块中有查看我的微博和查看我的好友功能,还有更多设置功能;在个人中心模块中具体分为完善资料功能和对密码的操作;在最新动态模块中可以发表微博和查看历史微博内容;在留言板模块中可以发表留言和查看历史留言信息等;而帮助模块中主要是对一些常见问题进行解答。系统总体用例图如下:图3-1系统总用例图3.3.1我的微博模块功能分析在我的微博模块中有查看我的微博和查看我的好友功能,还有更多设置功能。在这个模块中用户可以根据自己的需求选择相应的功能进行使用,具体如下图:图3-2我的微博模块用例图在这里,查看我的微博功能可以跳转到微博信息界面,用户可以查看历史的微博信息并对其进行操作。查看我的好友功能可以跳转到好友信息界面,可以查看好友的详信息并且对好友进行相应的操作。更多设置功能是跳转到个人中心界面,可以对个人信息等信息进行操作。3.3.2个人中心模块功能分析在个人中心模块中可以对好友进行管理,还可以完善用户的基本信息和密码修改等操作。图3-3个人中心模块用例图在好友管理功能中用户可以查看所有好友,还可以查看好友的详细信息,当然还可以根据关键字查找好友来添加好友,删除好友等。如图3-4。图3-4好友管理用例图在完善资料功能中用户可以查看自己的资料并且对其进行修改等操作。图3-5完善资料功能用例图在密码操作功能中,用户可以修改自己的密码,首先用户需要填写原密码,如果原密码不正确将不能进行修改密码操作,如果原密码正确则需要输入新密码和再次输入新密码,如果两次输入不一样也会给出相应的提示并且不能进行修改操作。密码保护功能就是需要用户来选择一些密码问题来进行保存,也可以自己写问题来写出相应答案,可用于密码找回和保护。图3-6密码操作功能用例图3.3.3最新动态模块功能分析最新动态模块。用户可以在最新动态模块中发表微博信息,还可以查看历史微博信息并对其进行操作。图3-7最新动态模块用例图3.3.4留言板模块功能分析留言板模块。用户可以在留言板模块中发表留言信息,还可以查看历史留言信息并对其进行操作。图3-8留言板模块用例图3.3.5帮助中心模块功能分析在帮助中心这个模块中主要是针对一些常见问题进行解答。例如对于初用者的提问最多莫过于“如何使用微博系统”、“如何发表微博信息”等,还有就是主要的一些微博规则等。图3-9帮助中心模块用例图3.4系统的操作过程1.首先,用户会进入到系统的登录界面,此时要求用户输入账号和密码,只有存在并且正确的账号和密码才能通过验证并进入到系统使用页面。2.如果用户没有账号,可以直接注册,注册时只需要填写用户名和密码就好,进入系统使用页面后继续补充好其他信息即可。3.登录完成后进入系统操作页面,用户可以根据自己的需求选择我的微博、个人中心、最新动态、留言板、帮助中心功能,选择之后可以选择进一步的子功能。4.选择相应子功能后浏览器中会显示相应的操作供用户操作。5.使用完毕后点击退出,此时会弹出对话框询问用户是否真的退出,点击“是”则退出系统,直接返回到系统登录时的界面;点击“否”则留在刚刚的界面。3.5系统总体结构图个人中心个人中心微博留言板我的微博最新动态帮助中心查看我的微博查看我的好友更多设置好友管理对一些常见问题进行解答完善资料密码操作发表微博查看微博内容发表留言查看留言信息图3-10系统总体结构图3.6数据库的概念当人们从不同的角度来描述这一概念时就有不同的定义(当然是描述性的)。例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库”。当然,这种说法虽然形象,但并不严谨。严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样“仓库”,并根据管理的需要进行相应的处理。J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个数据库集合”。3.7数据库E-R图概念模型是对信息世界建模,其表示方法有很多,其中最为常用的是实体-联系模型,即E-R模型,它是用E-R图来描述现实世界的概念模型。E-R图中用矩形表示实体,用椭圆表示属性,用菱形表示联系。E-R图显示了要建模的数据内部及数据之间的相互关系。本系统表示实体及其联系的总体E-R图,见图3-2。图3-11系统总体E-R图3.8系统界面设计本系统是Web应用,所以采用CSS(层叠样式表)+DIV模式和框架结构,可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量。采用CSS+DIV进行网页重构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度企业社会保险代缴合同3篇
- 科学计算语言Julia及MWORKS实践 课件 28-概率统计分布计算
- 科学计算语言Julia及MWORKS实践 课件 5-软件安装及界面介绍
- 海乘礼仪培训
- 酒店培训课题
- 2024年教师培训年度学习总结
- 翻译三级笔译综合能力模拟23
- 病人常见的心理护理
- 办公楼装修工程施工方案
- 玉林师范学院《数学分析》2022-2023学年第一学期期末试卷
- 《矿用传感器》课件
- 如何调整工作和生活的平衡
- 足浴店年度工作计划
- 年产5000吨的菠萝罐头厂的设计
- 生态学绪论(课件)
- 农业述职报告范文
- m3白血病护理查房课件
- 招投标审计方案
- 2024低压电工复审模拟考试题库整套
- 《灯》(教学设计)【中职专用】高一语文(高教版2023基础模块上册)
- 提升教师专业素养与综合能力的培训
评论
0/150
提交评论