本科毕业论文(设计)
(2013届本科毕业生)
题 目: 微博系统的设计与实现 学生姓名: 学生学号:
学院名称: 软件学院 专业名称: 计算机科学与技术 指导教师:
二零一三年五月
--
--
【摘 要】随着社会的进步,时代的发展,微博的使用在网上已经非常广泛,微博系统对用户而言,除了方便之外,还是与朋友之间沟通交流的桥梁.该微博系统的设计与实现正是适应了这种要求.本系统采用Java语言,MySQL数据库以及Struts、Hibernate、Spring技术开发,以Eclipse作为开发工具进行研发.其功能主要包括系统登录和注册、我的微博模块、个人中心模块、最新动态模块、留言板模块以及帮助中心六大部分。其中在我的微博模块中有查看我的微博和查看我的好友功能,还有更多设置功能;在个人中心模块中具体分为完善资料功能和对密码的操作;在最新动态模块中可以发表微博和查看历史微博内容;在留言板模块中可以发表留言和查看历史留言信息等;而帮助模块中主要是对一些常见问题进行解答。本论文完整介绍了系统的功能和开发的过程,重点说明了设计的重点与设计思想,详细阐述了系统开发的需求分析以及相关技术的介绍。 【关键字】微博系统,Java,Struts,Hibernate
--
Design And Implementation Of
MicroBlog System
【Abstract】With the progress of society, the development of the times. MicroBlog online has been very widely used, MicroBlog System for users, in addition to convenience, or bridge of communication between friends。 The MicroBlog System is adapted to the design and implementation of the requirements. The system uses the Java language, MySQL and Struts, Hibernate, Spring technology, Eclipse as development tool. Its main functions include six parts of system login and registration, my MicroBlog module, personal center module, recent news module, message board module and help center module. My MicroBlog module includes message' select, friends' select, add, delete, and more settings functions; personal center module includes password’ modify and query functions; recent news module includes information's add, delete, modify and query functions; message board module includes message's add, delete, modify and query functions; in the help center module, is to answer some common questions。 This thesis introduces the system’s functions and procedure of development completely, declares the point of design and the thinking of design importantly and states the requirement analysis of the system development in detail.
【Keywords】MicroBlog System, Java, Struts, Hibernate
--
--
--
目 录
第一章 绪论ﻩ错误!未定义书签。
1.1 微博的研究背景 ................................................................................................. 错误!未定义书签。 1.2 国内外研究现状ﻩ错误!未定义书签。
1。3 本文结构 ......................................................................................................... 错误!未定义书签。
第二章 相关技术介绍ﻩ错误!未定义书签。
2.1 JAVA语言概述ﻩ错误!未定义书签。
2.2 JAVA EE平台技术介绍 ................................................................................ 错误!未定义书签。 2。3 MySQL数据库简介 ....................................................................................................................14 2。4 MVC设计模式简介16ﻩ
第三章 系统需求分析 ........................................ 错误!未定义书签。
3.1 系统总体需求分析 ........................................................................................... 错误!未定义书签。 3。2 系统开发设计思想 .........................................................................................................................20 3。3 系统功能结构 ............................................................................................... 错误!未定义书签。 3。4 系统的操作过程ﻩ错误!未定义书签。
3.5 系统总体结构图 ............................................................................................... 错误!未定义书签。 3。6 数据库的概念 ................................................................................................. 错误!未定义书签。 3.7 数据库E-R图ﻩ错误!未定义书签。
3。8 系统界面设计 ................................................................................................... 错误!未定义书签。
第四章 详细设计ﻩ错误!未定义书签。
4。1 数据库的选择ﻩ错误!未定义书签。 4。2 数据库表的描述ﻩ错误!未定义书签。 4.3 系统开发环境介绍ﻩ错误!未定义书签。
第五章 系统实现ﻩ错误!未定义书签。
5.1 系统登录和注册 ............................................................................................. 错误!未定义书签。 5.2添加留言信息 ...................................................................................................... 错误!未定义书签。
--
--
5。3 删除好友功能 ................................................................................................... 错误!未定义书签。 5。4 修改个人信息 ............................................................................................... 错误!未定义书签。 5.5 查询留言信息 ................................................................................................... 错误!未定义书签。 5。6 其他功能ﻩ错误!未定义书签。
第六章 系统测试及维护 ...................................... 错误!未定义书签。
6。1 系统测试ﻩ错误!未定义书签。
6.2 测试用例 ........................................................................................................... 错误!未定义书签。 6.3系统维护 ............................................................................................................. 错误!未定义书签。
第七章 总结与展望 .......................................... 错误!未定义书签。
7.1 总结ﻩ错误!未定义书签。
7。2 展望 ................................................................................................................... 错误!未定义书签。
后 记ﻩ错误!未定义书签。 参考文献ﻩ错误!未定义书签。
--
--
第一章
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 微博在国外的发展史
埃文·威廉姆斯(Evan Williams)是博客技术先驱blogger的创始人,他在2006年3月创建的新兴公司Obvious推出了大微博服务.在最初阶段,这项服务的功能很不完善,只是用于向好友的手机发送文本信息。Twitter是由blogger的创始人威廉姆斯(Evan Williams) 在2006年3月推出的,其英文的原意为小鸟的叽叽喳喳声,此时功能有些改进,用户可以使用数百种工具更新信息。Twitter的出现把世人的眼光引入了一个叫微博的小小世界里。截至2007年5月,国际间计算总共有111个类似Twitt
--
--
er的网站。然而,最受人关注的仍是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语言、JAVA EE企业级应用、三大框架、MySQL、MVC模式。
--
--
第3章 系统需求分析,对系统的总需求进行分析,并对我的微博模块、个人中心模块、最新动态模块、留言板模块、帮助中心模块的需求进行的分析。
第4章 详细设计,在需求分析的基础上,进行总体设计,并对我的微博模块、个人中心模块、最新动态模块、留言板模块进行详细设计,进行数据库设计,对并数据关系进行说明.
第5章 系统实现,系统总体实现部分主要论述一些功能子模块的实现,例如系统登录和注册、添加留言信息、删除好友功能、修改个人信息等.
第6章 系统测试及维护,包括对测试原理及常用软件测试方法的介绍,针对登录部分设计测试用例,并对测试的结果如何进行说明。
第7章 总结与展望,总结微博系统的研究情况,以及在设计和实现过程中的优点以及本系统还需要进行改进的地方。
--
--
第二章
2。1 JAVA语言概述
相关技术介绍
JAVA最初被命名为Oak,这类语言可以来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题,其目标设定在家用电器等小型系统的编程语言,因为这些智能化家电的市场需求没有Sun预期的高,所以放弃了该项计划。但是随着互联网的发展, Sun看到了Oak在计算机网络上的广阔应用前景,所以在Oak几近失败之时改造了Oak,并且正式发布,命名为“Java”.
Java 编程语言的风格与C、C++ 语言十分类似。不同的是:Java是一个纯的面向对象的程序设计语言,Java舍弃了C ++语言中容易引起错误的指针(用引用来取代)、多重继承(用接口来取代) 、运算符重载(operator overloading)等特性,Java继承了C++语言面向对象技术的核心,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧[2]。在 Java SE 1。5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性[3]。
Java语言不同于一般的编译执行计算机语言和解释执行计算机语言。Java的运行机制是首先将源代码编译成二进制字节码(bytecode),也就是所谓的机器语言,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性.不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但是,在 J2SE 1.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企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。 2。2 JAVA EE平台技术介绍
JAVA EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循JAVA EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
JAVA EE技术的基础就是核心Java平台或Java 2平台的标准版,JAVA EE不仅巩固了标准版中的许多优点,例如\"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构[5].
JAVA EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求.通过提供统一的开发平台,JAVA EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans[6],有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
JAVA EE 的四层模型,如图2.1所示。 (1)运行在客户端机器上的客户层组件。 (2)运行在JAVA EE服务器上的Web层组件。 (3)运行在JAVA EE服务器上的业务逻辑层组件。
--
--
(4)运行在EIS服务器上的企业信息系统(Enterprise information system)层软件.
图2—1 JAVA EE的4层模型图
2.2.1 Struts技术简介
Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架.当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助减少在运用MVC设计模型来开发Web应用的时间。
随着JSP 与Servlet 技术大量应用于以Web 为基础的应用程序,Java 开发人员群体认为应以较佳的模式以提升Web 应用程序的可维护性与重复使用性。早期JSP 规格书中曾列举两种可行之JSP 应用架构,分别为Model1 与Model 2。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择.
在Model 1 架构中,JSP 直接处理Web 浏览器送来的请求(Request),并辅以JavaBean 处理应用相关逻辑。Model 1 架构单纯编写比较容易,但在Model 1 中JSP 可能同时肩负View与Controller 角色,两类程序代码有可能混杂而不易维护.而Model 2中将Servlet 纳入架构中扮演前端Controller角色,将Web浏览器送出的
--
--
请求集中送至Servlet ,Servlet 可集中管理使用者登入、权限控制、多国语言转换等前置处理,再视需求转向给对应的JSP 处理。Model 2 中采用了较佳的MVC模式,但增加了编写复杂度.
Struts是Apache软件基金下Jakarta项目的一部分。除Struts之外,还有其他成功的开源产品,包括Tomcat, Ant 和Velocity。2000 年Craig R。 McClanahan 先生贡献了他编写struts的JSP Model 2架构的Application Framework 原始程序代码给Apache 基金会,成为Apache Jakarta 计划Struts Framework前身。
Struts框架的主要架构设计和开发者是Craig R。McClanahan.Craig 也是Tomcat 4的主要架构师,以及Java Web Services Developer Pack的主要架构师和实现者。他现在是Sun的JavaServer Faces (JSR—127) 以及J2EE平台的Web层架构的规范领导。Craig R. McClanahan 先生是JCP ExpertGroup 成员之一,曾参与JSP 规格制定与Tomcat 4 之编写,因此Struts Framework 广受Java 开发人员群体所重视。Borland 自2002 年底开始于开发工具JBuilder 中支持Struts Framework。
Struts最早是作为Apache Jakarta项目的组成部分问世运作.项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航.Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发.Struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。Struts提供的类使得开发工作更加简单,这些类包括:
1. 控制程序流程的类;
2。 实现和执行程序事务逻辑的类;
3. 自定义的标记库使得创建和验证HTML表单更加容易. 2.2。2 Hibernate技术简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hiberna
--
--
te可以应用在任何使用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, SQL Server 中是Identity,支持的数据库有MySql、SQL Server、DB2、Sybase和HypersonicSQL。 Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。
Sequence需要底层数据库支持Sequence方式,例如Oracle数据库等。特点:需要底层数据库的支持序列,支持序列的数据库有DB2、PostgreSql、Oracle、SAPDb等在不同数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库需要修改配置文件 。
Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式。特点:根据不同的底层数据库采用不同的主键生成方式.由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。
UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。其最大的特点就是能够保证数据库中的主键唯一性,这样就可以节省存贮空间。
Foreign用于一对一关系中。GUID主键生成方式使用了一种特殊算法,保证生成主键的唯一性,支持SQL Server和MySQL数据库。 2.2.3 Spring技术简介
Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建
--
--
在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如下图所示.
图2-2 Spring模块
Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现.每个模块的功能如下:
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息.异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 S
--
--
pring 的通用事务和 DAO 异常层次结构.
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架: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 类不需要知道日志服务的存在,也不需要考虑相关的代码.所以,用 Spring AOP 编写的应用程序代码是松散耦合的。AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。
--
--
IOC 容器
Spring 设计的核心是 org。springframework。beans 包,它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。
BeanFactory 支持两个对象模型.
单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索.Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想. 原型 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。 bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架.正如我将在下一个示例中演示的那样,Spring 框架使用 JavaBean 属性和配置数据来指出必须设置的依赖关系。 2.3 MySQL数据库简介
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。Sun公司于2008年1月16号收购了瑞典MySQL AB公司。而在2009年,Oracle又收购了SUN。当时,没有任何人对MySQL的前途抱乐观的态度。但是目前,MySQL被广泛地应用在Internet上的中小型网站中。由于其速度快、体积小、总体拥有成本低,尤其MySQL是开源的这一特点,所以许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库.
MySQL特性:
1。使用C和C++编写,并经过了多种编译器进行测试,保证源代码的可移植性; 2.支持FreeBSD、AIX、OpenBSD、MacOS、Novell Netware、Solaris、HP-UX、Linux、OS/2 Wrap、Windows等多种操作系统;
3。 MySQL为多种编程语言提供了API.这些编程语言包括C、C++、Java、Python、PHP、Perl、Ruby、Tcl和Eiffel等;
4。支持多线程,可以充分利用CPU资源;
5。使用优化的SQL查询算法,有效地提高查询速度;
6。既能够作为一个单独的应用程序,应用在客户端服务器网络环境中,也能够作为一个库,嵌入到其他的软件中提供多语言支持,常见的编码如中文的BIG5、GB 2312,日文的Shift_JIS等都可以用作数据表名和数据列名;
7.提供TCP/IP、JDBC和ODBC等多种数据库连接途径;
--
--
8。提供一些管理工具,例如:管理、检查、优化数据库; 9.可以处理拥有上千万条记录的大型数据库。 MySQL的应用:
与其他的大型数据库例如Oracle、SQL Server、DB2等相比,MySQL也有它的缺点,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这些不会影响MySQL受欢迎的程度。MySQL提供的功能对于一般的个人使用者和中小型企业来说已经绰绰有余,而且由于MySQL是开源的软件,因此可以大大降低总体拥有成本。
LAMP(Linux+Apache+MySQL+PHP) 是目前Internet上流行的网站构架方式,即:操作系统使用Linux,Apache作为Web服务器,数据库使用MySQL,PHP作为服务器端脚本解释器。这四个软件的优点都是自由或开放源码软件(FLOSS),所以使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
MySQL管理:
MySQL数据库可以使用命令行工具管理(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Query Browser和MySQL Administrator。
phpMyAdmin MySQL资料库系统管理程式,是由php写成的,让管理者可用Web界面管理MySQL资料库。由PHP写成的还有phpMyBackupPro,可以透过Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来在某个时间或周期自动备份MySQL 数据库.除此之外,还有其他的GUI管理工具,例如早先的mysql—front 以及navicat, emsmysql manager 等等。
MySQL最常见的应用架构有:
适合小规模应用的单点(Single);适合中小规模应用的复制(Replication);适合大规模应用的集群(Cluster)。
MySQL4。1版本中增加了不少新的性能,包括对子查询的更好的支持,对主键的更高速度的缓存,以及应网络约会网站所要求而生的,基于地理信息的查询等。与其同步开发的5。0版本则把目标对准了企业用户,5.0版本具有4。1版本中的所有新特性,而且还有以下新特点:系统自动报错机制;对外键的良好支持以及对存储过程的充分支持。
本系统应用MySQL的主要原因是,MySQL数据库的体积小,而且运行速度快,总体拥有成本低,MySQL服务器是可靠的和易于使用的数据库服务器,而且其是开放源码,为了降低网站总体拥有成本而选择MySQL作为网站数据库。
--
--
2.4 MVC设计模式简介
模型(Model),视图(View)和控制(Controller) 三个单词组成了Model- View— Controller,缩写即MVC。 MVC模式的目的就是实现Web系统的职能分工。 Model层通常可以用JavaBean或EJB来实现系统中的业务逻辑。 View层通常用JSP来实现与用户的交互。Model与View之间沟通的桥梁是Controller层,它可以分派用户的请求并且选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
MVC开始是存在于Desktop程序中的,M指的是数据模型,V指的是用户界面,C指的是控制器。将M和V的实现代码分离是使用MVC copyright: Apple Inc.的目的,从而使同一个程序可以使用不同的表现形式。确保M和V的同步则是C存在的目的,一旦M改变,V应该同步更新。
至今已被广泛使用的模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式。最近几年被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且越来越多的使用 ColdFusion 和 PHP 的开发者喜欢使用MVC。MVC模式是一个有用的工具箱,它既有优点又有缺点。
MVC是如何工作的:
MVC强制性的使应用程序的输入、处理和输出分开,它是一个设计模式。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务.下图介绍了这几个模块的功能以及之间的关系。
图2-3 MVC设计模式图
--
--
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进行网页重构相对与传统的TABLE网页布局而具有以下3个显著优势: 1.表现和内容相分离
将设计部分剥离出来放在一个独立样式文件中,HTML文件中只存放文本信息。这样的页面对搜索引擎更加友好. 2.提高页面浏览速度
对于同一个页面视觉效果,采用CSS+DIV重构的页面容量要比TABLE编码的页面文件容量小得多,前者一般只有后者的1/2大小。浏览器就不用去编译大量冗长的标签。
3.易于维护和改版
只要简单的修改几个CSS文件就可以重新设计整个系统的页面。
--
--
第四章
4.1 数据库的选择
详细设计
本系统使用的数据库是关系型数据库MySQL。
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。Sun公司于2008年1月16号收购了瑞典MySQL AB公司。而在2009年,Oracle又收购了SUN。当时,没有任何人对MySQL的前途抱乐观的态度。但是目前,MySQL被广泛地
--
--
应用在Internet上的中小型网站中。由于其速度快、体积小、总体拥有成本低,尤其MySQL是开源的这一特点,所以许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 4.2 数据库表的描述
本系统设计的所有数据表必须满足三范式要求,即: 1。表中的每一列都是不可再分割的原子值。
2.表中的所有非主属性值必须完全函数依赖于主属性值。
3。表中不存在传递函数依赖,即非主属性值不能函数依赖于非主属性值. 4。2。1 用户信息表(Cust)
该表主要完成用户登录时信息的验证功能和存储用户的个人信息。在此表中定义了10个字段来储存信息.其中动态ID、留言ID和好友编号是外键,分别对应于动态表的动态
ID、留言表的留言ID和好友表的好友编号,具体如下表.
表4-1用户信息表
标识符 cid cname cpwd csex cage ctel caddress 数据类型 varchar varchar varchar varchar int int varchar did lid hid ﻩ varchar varchar varc10 10 10 Y Y Y 动态ID 留言ID 好友编号 Y Y Y 与动态表外键关联 与留言表外键关联 与好友表外键关联 长度 10 20 20 4 11 10 40 非空 描述 Y Y Y N N N N 用户编号 用户姓名 用户密码 用户性别 用户年龄 用户联系方式 用户地址 主键 Y 外键 说明 自增 har
4.2.2动态信息表(Dongtai)
该表主要保存用户添加的动态信息,主要包括动态信息的ID、添加动态信息的时间还有动态信息的内容。在此表中定义了以下4个属性来存储相关信息。其中用户编号是外键,对应于用户表的用户编号。具体如表4—2。
--
--
表4-2动态信息表
标识符 did ddate dcontent cid 数据类型 varchar date varchar varchar 长度 10 20 200 10 非空 描述 Y Y Y Y 动态ID 时间 内容 用户编号 主键 Y 外键 Y 与用户表外键关联 说明 自增 4.2.3 留言信息表(Liuyan)
该表主要保存用户添加的留言信息,主要包括留言信息的ID、添加留言信息的时间以及留言信息的内容。在此表中定义了以下4个属性来存储相关信息.具体如表4—3。
表4—3留言信息表
标识符 lid ldate lcontent cid 数据类型 varchar date varchar varchar 长度 10 20 200 10 非空 描述 Y Y Y Y 留言ID 时间 内容 用户编号 主键 Y 外键 Y 与用户表外键关联 说明 自增 4.2.4 好友信息表(Haoyou)
该表主要用来保存好友信息,主要包括.在此表中定义了5个属性来存储相关的信息.其中管理员ID是外键,对应于管理员表的管理员ID。见表4-4.
表4—4好友信息表
标识符 hid xcid 数据类型 varchar varchar ycid varchar xcname ycname cid varchar varchar varchar 20 20 10 Y Y Y 好友x姓名 好友y姓名 用户编号 Y 与用户表外键关联 10 Y 好友y的ID 长度 10 10 非空 描述 Y Y 好友编号 好友x的ID 主键 Y 外键 说明 自增 4。3 系统开发环境介绍
操作系统:WINDOWS XP
--
--
运行工具:IE 6。0
开发工具:Eclipse + MyEclipse 6。0 数据库: MySQL 服务器: Tomcat 6.0
第五章 系统实现
本系统功能主要分为系统登录和注册,我的微博,个人中心,最新动态,留言板和帮
--
--
助中心六个部分,在此只介绍系统登录和注册,个人中心和留言板部分,因为我的微博同个人中心类似,最新动态和留言板类似,所以在这里只详细介绍系统登录和注册,个人中心和留言板部分.并会附上相应截图。个人中心模块中主要分为修改个人信息对好友进行操作等,留言板模块中主要分为添加留言信息和查询留言信息等功能。由于有很多功能都类似,所以这里主要介绍修改个人信息,添加留言信息,查询留言信息和对好友进行删除功能。 5。1 系统登录和注册 5。1.1 功能描述
微博系统的登录功能的设计采用用户的编号和密码两条信息对用户的合法性进行验证,要登录的用户需输入编号和密码,单击“登录”按钮进行登录,这时后台会从登录页面中读取到用户填写的编号和密码与数据库中的数据进行比较,只有用户编号存在并且对应的密码正确才会登录成功跳转到主页面,否则则会显示相应的错误信息如“用户不存在”或“密码错误”等。
注册功能。首先用户会进入到登录页面,但是没有账号所以可以点击注册按钮,此时浏览器会跳转到注册页面,用户可以填写自己的信息,后台会从页面获取到用户所填写的信息进行验证是否合法,如果不正确就需要用户重新填写不合法的信息,如果正确就可以注册,注册成功就会显示成功信息,注册失败也会提示相应的错误信息。 5。1。2 功能流程图
图5-1系统登录流程图
--
--
图5-2注册流程图
--
--
5.1.3 系统界面
图5-3系统登录界面
5.1.4 实现代码 public String login(){ ﻩ ﻩ ﻩ
try {
request.removeAttribute(”login”);
ﻩString cid = request.getParameter(\"cid\"); ﻩString cpwd = request.getParameter(”cpwd");
if (!””.equals(cid)&&!"\"。equals(cpwd)) {
ﻩﻩﻩ ActionContext ac = ActionContext.getContext();
ﻩﻩ Map session = ac.getSession();
Cust cust = icservice。findById(cid);
ﻩﻩif (cust != null && cust。getCpwd().equals(cpwd)) { session.put(cid, cust);
HttpSession hs = request。getSession();
ﻩhs。setAttribute("login\", cust);
ﻩﻩ ﻩ ﻩﻩ ﻩ
ﻩ
ﻩﻩ ﻩ}else{ ﻩ
ﻩ ﻩ
ﻩthis.addActionError(\"用户名或密码错误!”); return "index”;
--
--
ﻩ
}
ﻩ}else{
ﻩﻩ ﻩreturn "index\"; ﻩ ﻩ ﻩ
}
} catch (Exception e) { }
e。printStackTrace(); return \"index”;
ﻩﻩreturn "call\"; ﻩ}
5.2添加留言信息 5.2.1 功能描述
添加留言信息功能,首先,用户会进入到添加留言信息页面,用户填写留言信息点击“提交留言”按钮后,检查留言信息是否为空,如果出现错误则提示相应的错误信息,重新写入正确的留言信息并且数据正确存入数据库之后,显示留言添加成功,失败则提示相应的错误信息。添加之后信息则会按照添加时间显示在所有留言信息中,如图5—5和5—6红色框中所示.
--
--
5.2.2 功能流程图
图5—4添加留言信息流程图
--
--
5.2。3 系统界面
图5—5 添加留言信息界面
图5-6添加留言信息之后返回的界面
5。2.4 实现代码
public String insertLiuyan(){ ﻩﻩtry {
--
--
ﻩ ﻩ ﻩ}
5.3 删除好友功能 5.3.1 功能描述
删除好友的功能,用户选中要删除的好友点击删除按钮之后,系统就把将这条好友信息从数据库中的好友表中删除,删除成功则提示删除成功,失败则显示相应的错误信息。
ﻩHttpSession session =request。getSession();
ﻩﻩCust cust= (Cust)session.getAttribute(”login\");
ﻩLiuyan ly = new Liuyan();
ﻩly.setLcontent(request。getParameter("lcontent")); ﻩ
ﻩly。setCid(cust。getCid()); ly。setLdate(GetDate。getTime());
ﻩﻩilservice。saveLiuyan(ly); }
ﻩreturn selectAllLiuyan();
} catch (Exception e) {
e.printStackTrace();
--
--
5.3。2 功能流程图
图5-7 删除好友信息流程图
5.3。3 实现代码
public String deleteByHids(){
ﻩtry { ﻩ
String[] hids = request。getParameterValues(\"hd”);
ﻩﻩﻩihservice.deleteByCids(hids);
ﻩ} catch (Exception e) {
ﻩﻩ e.printStackTrace();
}
ﻩreturn selectAllHaoyou(); }
5。4 修改个人信息 5.4.1 功能描述
修改个人信息功能。用户先读取到个人信息,然后点击修改按钮浏览器会跳转到修改界面,此时用户修改想要修改的内容,用户确认无误后点击确认修改按钮后,验证输入信
--
--
息的合法性,验证失败则提示错误信息并要求用户重新填写个人信息,验证成功则将更新后的信息存入到数据库中,存储成功则显示修改成功,失败则显示相应的错误信息。 5。4.2 功能流程图
图5—8修改员工信息流程图
5.4.3 实现代码
public String updateCust(){ ﻩﻩtry { ﻩ ﻩ
ﻩﻩHttpSession session = request。getSession();
Cust cust = (Cust) session.getAttribute(\"login");
ﻩﻩcust.setCid(cust.getCid());
ﻩcust.setCname(request。getParameter("cname\"));
cust。setCage(Integer。parseInt(request.getParameter(”cage”)));
--
--
ﻩﻩﻩcust.setCsex(request.getParameter(”csex\")); ﻩ
ﻩcust.setCtel(Integer.parseInt(request.getParameter(\"ctel"))); cust.setCaddress(request.getParameter(”caddress\"));
icservice。updateCust(cust);
ﻩ} catch (NumberFormatException e) {
ﻩﻩ e。printStackTrace(); ﻩ}
5。5 查询留言信息 5。5。1 功能描述
查询留言信息功能。首先,管理员输入要查询员工的员工编码,如果管理员没有输入任何字符就点击了查询或者数据库中没有与之相匹配的结果则显示相应的提示信息,数据库中如果有与管理员输入的员工编码相对应的员工信息,则显示这条员工信息。 5.5.2 功能流程图
}
return \"allxinxi\";
图5-9查询留言信息流程图
--
--
5.5。3 实现代码
public String fenye(){
ﻩint page = Integer.parseInt(request.getParameter(\"next”));
ﻩﻩtry { ﻩ
ﻩList list = ilservice。selectBypage(page,5);
ﻩint totalpage = Integer。parseInt(request.getParamet
er(”tpage\"));
ﻩ
ﻩrequest。setAttribute(”lists”, list); ﻩﻩrequest.setAttribute(”total”, totalpage);
ﻩﻩﻩrequest。setAttribute(”cur”, page); ﻩ ﻩ}
5.6 其他功能
帮助中心模块。在帮助中心模块中主要针对一些常见的问题进行解答。 ﻩ} catch (NumberFormatException e) { ﻩ }
ﻩreturn \"liuyan”;
e。printStackTrace();
图5—10帮助中心总界面
--
--
图5—11帮助中心解答界面
--
--
第六章
6.1 系统测试 6.1.1 测试的目标
系统测试及维护
1. 为了发现程序中的错误而执行程序的过程,我们称为测试,其目的是为了让用户有一个更好的体验。
2. 好的测试方案是极可能发现迄今为止尚未发现且发现更多的错误的测试方案。 3. 成功的测试是发现了至今为止尚未发现的错误的测试. 6.1.2 测试的原则
1. 所有的测试的原则都是建立在用户需求之上。
2. 应该在开始测试之前就制定出测试计划。编码前就可以对所有测试工作进行计划和设计。(本系统虽然没有周全计划,但一开始就边编码边测试)
3. Pareto原理说明测试中发现的错误80%可能是20%的模块造成的。(的确如此,我的错误主要是集中在Servlet被请求时参数为null的错误).
4. 由小到大的原则。(由问题的源头入手)
5. 穷举不可能,所以要能覆盖系统的主要逻辑。(每个系统都有至少一条逻辑主线) 6。 最好有别人参与测试和使用系统。(防止思维定势) 6.1.3 测试步骤
1. 模块测试.(基本都集中在每个请求处理的Servlet模块)
2。 子功能测试。(每个模块理论上可以独立运行,只需和其它子功能很少的数据依赖)
3。 系统测试.(总体运行整个系统) 4. 验收测试。 6.1.4 测试的方法
黑盒测试
1. 功能没有遗漏。 2. 界面正常。 3。 数据库访问正常。 4. 初始化终止正常。
5. 非登录用户侵入非法提示正常。 6.2 测试用例
用户登录测试.在同学的帮助下,让她填写完整并且正确的用户编号和密码,点击登录,
--
--
是否成功进入微博系统的主界面。测试结果:正常进入到系统主界面。
添加留言信息测试。在老师的帮助下,登录到系统的主界面后点击留言板,填写留言信息后点击提交,是否正确的读取了当前时间并显示正确的留言信息。测试结果:正常添加了留言信息,并且显示了正确的时间信息。 6。3系统维护
系统错误必然产生,用户需求必然变更,生存或灭亡,这是个问题。所以软件开发文档同样重要。
6。3。1提高系统的维护性
1。 必须要从设计文档开始,遵循结构化开发,确定和规范软件的结构特点,性能特点及接口特点.
2。 软件生命周期的头两个时期要严格而科学的管理和规划。 3. 需要对做过的维护活动有记录和保管过程,并规定复审标准。
4。 不管何种类型的维护,工作中都应包含修改软件设计,复查,必要的代码修改,单元测试和集成测试等. 6。3。2本系统维护性
1. 可理解性:模块化(高内聚,低耦合)。 2。 可测试性:环形复杂度低。
3. 可修改性:进行了功能分解,软件结构设计,数据库设计,模块化设计,逐步求精,宽度为4(4个子系统),深度为2(进入每个子系统内后还有1层操作如添加),扇出最大4(导航模块),扇入最大2(导航模块调用或跳转调用)。
--
--
第七章总结与展望
7.1 总结
微博系统为广大微博用户带来了良好的娱乐效果。本系统使用户间的交流沟通更加方便快捷.本系统主要实现了以下这几个功能:
1. 系统登陆退出功能,登陆系统时会验证用户的登录编号密码的正确性. 2. 用户注册功能,新用户可以注册账号来使用本系统。 3. 好友管理功能,用户可以添加,查看,删除好友。 4. 完善资料功能,用户可以查看,修改自己的资料。 5. 密码操作功能,用户可以修改,定期保护自己的密码。 6. 发表微博信息功能,用户可以编辑,发表微博信息。
7. 微博信息查询功能,用户可以查看微博信息,并对其进行修改、删除等操作. 8. 发表留言信息功能,用户可以编辑,发表留言信息.
9. 留言信息查询功能,用户可以查看留言信息,并对其进行修改、删除等操作。 由于时间仓促及本人技术能力有限,系统的功能并不是很完善,系统中还有很多功能有待开发扩展。希望能够在以后的工作和学习中不断的去完善该系统. 7。2 展望
随着人们的需求不断在变更,需求不断在增加,本文所设计的微博系统还有待在以下几方面做进一步发展和完善:
1。增加好友之间的通信功能。这样可以使好友间的沟通更加方便。
2。增加好友之间的关注功能.这样可以在第一时间知道所关注好友所发表的微博信息.
3.增加上传和修改头像功能.由于微博系统主要是为用户带来欢乐和使用户之间沟通更加方便快捷的,所以这个功能可以使系统更加具有娱乐性质。
--
--
后 记
这次毕业论文能够得以顺利完成,并非我一人之功劳,是所有指导过我的老师,帮助过我的同学和一直关心支持我的家人的帮助和鼓励的结果.我要在这里对他们表示感谢!但我更要感谢的,是我的指导教师,梅素玉老师,一位平易近人的良师,对我论文的耐心的指导,新锐的启发,认真的审阅,感谢您在百忙之中抽出您那宝贵的时间对我毕业论文从选题到写作再到最后定稿所付出的辛苦,感谢您在这个我即将离开沈师大的最后的时间对我人生方向的指引,在此,我深深的向您表示衷心的感谢!导师严谨的治学态度,明锐的学术思维、精益求精的工作态度以及一丝不苟的指导方式,都将使我受益终生!
在此,我还要感谢和我同一个设计小组的同学,感谢你给我提出了宝贵的意见,在我遇到问题的时候,和我一起探讨问题,并帮助我走出误区,顺利的解决出现的问题,才使得我把设计顺利的进行下去,没有你的帮助我不会这样顺利的完成论文的结稿,在此向你表示深深的谢意!
大学生活即将结束,在这个充满知识的海洋,我学会了为人处事的道理。老师给了我精心的指导与热心的帮助,使我在各个方面都有了很大的提高与进步,为我们即将踏入社会做了最充足的准备!
最后,再次向百忙之中抽时间对本文进行审阅,评议本论文的各位老师表示感谢。由于时间仓促及本人学识有限,文中难免有不足之处,恳请大家批评指正。
--
--
参考文献
[1] Bruce Eckel. Thinking in Java[M].北京:机械工业出版社.2012.02 [2] 马建红,李占波。JSP应用与开发技术[M].北京:清华大学出版社.2011
[3] 张桂珠,张平,陈爱国.Java 面向对象程序设计(JDK1.6)[M]。北京:邮电大学出版社.2
010.08
[4] 卢翰,王国辉.JSP项目开发案例全程实录[M]. 北京:清华大学出版社.2011 [5] 陈丹丹,朱晓.Java Web项目整合开发[M].北京:电子工业出版社.2011 [6] 张峋,杨三成.JSP与JDBC应用详解[M]。北京:中国铁道出版社.2010 [7] 卢汉鹏编著.JSP开发技术详解[M].北京:化学工业出版社,2010
[8] 钱咏春,王国栋。 Java中软件开发工具的有效应用[J]. 新疆石油科技, 2012。第4期:P2
2-24
[9] 王柯柯. Web网页设计技术[M].北京:机械工业出版社.2011
[10] 蔺华,王玉清。 Web程序设计于家沟[M].北京:电子工业出版社。2011
[11] 李刚.轻量级Java EE企业应用实战(第3版)[M]. 北京:电子工业出版社,2012.04.01 [12] [美] Karen Morton,Kerry Osborne,Robyn Sands。 Oracle SQL高级编程[M]。 北
京:人民邮电出版社,2011。11.01
[13] 翟高粤 .基于J2EE技术的SSH框架的改进及应用[J].计算机时代.2012年,第10期
--
因篇幅问题不能全部显示,请点此查看更多更全内容