毕业设计JAVA手机短信分享系统的实现_第1页
毕业设计JAVA手机短信分享系统的实现_第2页
毕业设计JAVA手机短信分享系统的实现_第3页
毕业设计JAVA手机短信分享系统的实现_第4页
毕业设计JAVA手机短信分享系统的实现_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、摘摘 要要 随着网络技术的迅速发展和 j2ee 平台的广泛应用,基于 b/s 的多层 web 体系结构正在不断的完善。web 技术的发展推动了信息化的发展,使人们能够 不再受地理空间的限制与其他人进行信息的交流与共享。而开发这样一个信息 交流平台,正是本论文要着手处理的问题。 其实,就算用 java 建造一个不是很烦琐的 web 应用程序,也不是件轻松的 事情。当为一个应用程序建造一个构架时有许多事情需要考虑。从高层来说, 开发者需要考虑:怎样建立用户接口(user interfaces)? 在哪里处理业务逻辑? 和怎样持久化应用数据。这三层每一层都有它们各自的问题需要回答。各个层 次应该使用

2、什么技术?怎样才能把应用程序设计得松耦合和能灵活改变? 构架 允许层的替换不会影响到其它层吗?应用程序怎样处理容器级的服务 (container level services) ,比如事务处理(transactions)? 本论文正是基于上述问题出发,以开发一个信息交流平台系统为背景,对 基于 mvc 模式的 struts 框架、hibernate 的 orm 机制和对持久对象持久化的管 理以及 spring ioc(控制反转)技术进行了探讨。并整合这三种框架:表现层 使用 struts;业务层使用 spring;持久层使用 hibernate 进行系统的开发。最后 结合具体的事例对系统的实现

3、作了详细的说明,验证了实现方法的可行性。 关键词关键词:j2ee struts hibernate spring 模式 框架 abstract with the rapid development of network technology and the wide use of j2ee platform, the multilayer web structure base on b/s has developed gradually. web techniques development has promoted the development of informationization,

4、 it has made people can communicate and share information without area and space limitation. however, developing such kind of information communication platform is just the case in this thesis. building non-trivial web applications with java is no trivial task. there are many things to consider when

5、 structuring architecture to house an application. from a high-level, developers are faced with decisions about how they are going to construct user interfaces, where the business logic will reside, and how to persist application data. each of these three layers has their own questions to be answere

6、d. what technologies should be implemented across each layer? how can the application be designed so that it is loosely coupled and flexible to change? does the architecture allow layers to be replaced without affecting other layers? how will the application handle container level services such as t

7、ransactions? this thesis is just base on these questions, taking an information communication platform system development as background, based on mvc architecture, discussed struts frame, hibernators orm mechanism, persistent management of persistent object and spring ioc technique and combining fra

8、meworks using three popular open source frameworks: for the presentation layer we will use struts; for our business layer we will use spring; and for our persistence layer we will use hibernate to developing this system. at the end of the thesis, illustrate the way of realizing the system by an inst

9、ance, and validate its feasibility. key words:j2ee struts hibernate spring pattern framework 摘摘 要要.1 abstract.2 第第 1 章章 概述概述 .6 1.1 课题研究目的和意义.6 1.2 研究内容.7 第第 2 章章 开发涉及的相关技术开发涉及的相关技术.8 2.1 mysql 数据库设计工具介绍 .8 2.2 myeclipse设计工具.8 2.3 struts2 开发工具.9 2.4 spring技术简介.10 2.5 javascript技术简介 .11 第第 3 章章 手机短信分

10、享系统概述及需求分析手机短信分享系统概述及需求分析.12 3.1 手机短信分享系统概述.12 3.2 手机短信分享系统需求分析.12 第第 4 章章 手机短信分享系统的详细设计手机短信分享系统的详细设计.13 4.1 框架分析.13 4.2 功能模块简介.15 4.3 数据模型设计和数据库设计.18 4.3.3 持久层的实现持久层的实现.25 4.3.4 o/r映射映射.25 4.3.5 dao数据访问接口数据访问接口.26 4.3.6 dao数据访问实现数据访问实现.26 4.4 业务层的实现业务层的实现.27 4.4.1 业务逻辑处理类的实现业务逻辑处理类的实现.27 4.5 表示层的实现

11、表示层的实现.28 4.6 view层的实现层的实现.29 4.7 model层的实现层的实现.30 4.8 controller层的实现层的实现.30 第第 5 章章 手机短信分享系统的界面实现手机短信分享系统的界面实现.32 5.15.1 系统首页.32 5.25.2 精品铃声 .34 5.35.3 手机主题.38 5.45.4 图片下载.40 5.55.5 游戏下载.43 5.55.5 短信下载.45 第第 6 章章 手机短信分享系统测试手机短信分享系统测试 .46 6.1 测试概述.46 6.2 黑盒测试.46 总结与展望总结与展望 .47 7.1 本文的总结与展望本文的总结与展望 .

12、47 参考文献参考文献.47 致谢致谢.50 第 1 章 概述 1.1 课题研究目的和意义 从来没有任何事物的发展像互联网那样,对人类的活动产生如此深刻的 影响。人们越来越依赖于 internet 进行信息的交流与共享。随着网络的飞速发 展,信息交流平台在网络上扮演角色越来越重要了。信息交流平台从她诞生的 那一刻起就带有十分明确的个性化的人文色彩,作为一种远程电子通讯手段, 信息交流平台允许一定范围内的用户以十分廉价的方式,方便快捷地进行信息 和文件资源的共享,以信件和电子讨论的形式进行交流。毫不夸张的说,信息 交流平台是网民互动沟通的最佳纽带,是互联网的灵魂。 信息交流平台已成为主流网民不可

13、缺少的一项基本生活内容。它在新兴的 电子文化、信息咨询和商业服务领域也势必蕴藏巨大的市场。比如信息交流平 台提供的信息布告区可为企业发布它的产品介绍、推广、宣传、服务等信息, 能把企业的新产品快速的推向市场。 所以对信息交流平台的研究是完全有必要的。j2ee 是 sun one 的重量级 产品,作为一种企业级 web 应用程序开发技术,j2ee 是目前唯一在市场上得 到了广泛应用的技术体系。j2ee 以 java 为核心技术,更接近或者满足于互联 网在智能化 web 服务上对分布性、开放性和平台无关性的要求,同时它在安全 性、健壮性、组件化等方面也更为成熟稳定,获得了众多 it 厂商如 ibm

14、、oracle、bea 等共同制定标准并提供技术支持,因此具有强大的功能,是 电子商务、远程教育等开发的首选平台。但是,即使我们用先进的 j2ee 来开发 web 应用,也面临着许多问题需要考虑:怎样建立用户接口(user interfaces)?在哪里处理业务逻辑和怎样持久化应用数据? struts、spring、hibernate 这三个基于 web 应用开发的开源框架,可以为我 们解决这些问题。如何把一个 web 应用分层而整合 struts、spring、hibernate 技术,尽可能的将页面显示、业务逻辑和数据处 理相分离,最大限度地降低系统各模块之间的耦合性,从而增强系统的可扩展

15、 性与可维护性,提高代码重用率,使系统的层次结构更加清晰,易于开发人员 的分工协作,充分发挥开发人员的各自特长,这是一个值得研究探讨的问题。 struts 是基于 mvc 模式的框架技术。采用 struts 可以简化遵循 mvc 设计 模式的 web 应用的开发工作,很好的实现代码重用,使开发人员从繁琐的工作 中解脱出来,快速开发具有强可扩展性的 web 应用,大大简化开发过程,缩短 开发周期,提高开发效率。hibernate 是一项新兴的 orm 技术,它把普通 java 对象映射到关系数据库表,并提供对对象的持久化操作。使得 java 开发 者能够高效地对关系数据库表进行增、删、改、查操作

16、而不用直接面对 jdbc、sql 语句,让开发人员把精力集中在如何解决实际业务处理问题上。而 借助于 spring ioc 和 aop,使得应用中对象的关系更加清晰、一致,而且还使 得一切对象可控。最重要的一点是,对象本身的生命周期及对象之间的关系不 用再让开发者费神了。 基于上述分析,研究实现 struts、spring、hibernate 三个框架的整合来解决 web 应用开发中所面临的上述问题,从而提高程序的开发效率,增强系统的可 扩展性与可维护性,提高代码重用率将会是一个很有意义的课题。 1.2 研究内容 以 j2ee 为基础实现一个手机短信共享平台为出发点,设计了一个整合 ssh 技

17、术的架构,并分别用 struts、hibernate、spring 实现了表示层,业务层,持久层, 最终完成了本系统。 第 2 章 开发涉及的相关技术 2.1mysql 数据库设计工具介绍 mysql 是一个小型关系型数据库管理系统,开发者为瑞典 mysqlab 公司, 在 2008 年 1 月 16 号被 sun 公司收购。mysql 被广泛地应用在 internet 上的中 小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一 特点,许多中小型网站为了降低网站总体拥有成本而选择了 mysql 作为网站数 据库。 mysql 的海豚标志的名字叫“sakila” ,它是由 my

18、sql ab 的创始人从用户 在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自 非洲斯威士兰的开源软件开发者 ambrose twebaze 提供。根据 ambrose 所说, sakila 来自一种叫 siswati 的斯威士兰方言,也是在 ambrose 的家乡乌干达附 近的坦桑尼亚的 arusha 的一个小镇的名字。 1. 使用 c 和 c+编写,并使用了多种编译器进行测试,保证源代码的可移 植性 2. 支持 aix、freebsd、hp-ux、linux、mac os、novell netware、openbsd、os/2 wrap、solaris、windows

19、等多种操作系统 3. 为多种编程语言提供了 api。这些编程语言包括 c、c+、eiffel、java、perl、php、python、ruby 和 tcl 等。 4. 支持多线程,充分利用 cpu 资源 5. 优化的 sql 查询算法,有效地提高查询速度 6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能 够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如 中文的 gb 2312、big5,日文的 shift_jis 等都可以用作数据表名和 数据列名 7. 提供 tcp/ip、odbc 和 jdbc 等多种数据库连接途径 8. 提供用于管理、检查、优化数据库操作的

20、管理工具 9. 可以处理拥有上千万条记录的大型数据库 2.2myeclipse 设计工具 myeclipse 企业级工作平台(myeclipse enterprise workbench ,简称 myeclipse)是对 eclipse ide 的扩展,利用它我们可以在数据库和 j2ee 的开 发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰 富的 j2ee 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支 持 html, struts, jsf, css, javascript, sql, hibernate。在结构上, myeclipse 的特征可以被分为

21、7 类: 1. j2ee 模型 2. web 开发工具 3. ejb 开发工具 4. 应用程序服务器的连接器 5. j2ee 项目部署服务 6. 数据库服务 7. myeclipse 整合帮助 对于以上每一种功能上的类别,在 eclipse 中都有相应的功能部件,并通 过一系列的插件来实现它们。myeclipse 结构上的这种模块化,可以让我们在 不影响其他模块的情况下,对任一模块进行单独的扩展和升级。 简单而言,myeclipse 是 eclipse 的插件,也是一款功能强大的 j2ee 集成 开发环境,支持代码编写、配置、测试以及除错。 myeclipse7.0 的发布意味着我们不再需要配

22、置 tomcat 以及服务器了,你所 需要做的仅仅是安装 myeclipse 7.0。7.0 发行版包括在 7.0m2 和 6.6 版本基础 上对 bug 的修复和功能的加强。提供的支持包括:eclipse 3.4.1/ganymede、rest web 服务、新的 myeclipse 操作板、spring 工具集更新、 集成 manven2、open jpa 支持、高级 javascript 工具、专业的 jsdt 实现、报 表工具加强、jsf 和 icefaces 工具更新。 2.3 struts2 开发工具 struts2 号称是一个全新的框架,但这仅仅是相对 struts 1 而言。s

23、truts 2 与 struts 1 相比,确实有很多革命性的改进,但它并不是新发布的新框架, 而是在另一个赫赫有名的框架:webwork 基础上发展起来的。从某种程度上来 讲,struts2 没有继承 struts 1 的血统,而是继承 webwork 的血统。或者说, webwork 衍生出了 struts2,而不是 struts 1 衍生了 struts2。因为 struts2 是 webwork 的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有 很好的保证:而且吸收了 struts 1 和 webwork 两者的优势,因此,是一个非常 值得期待的框架。 apache stru

24、ts2 是一个优雅的,可扩展的 java ee web 框架。框架设计的 目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。 apache struts 2 即是之前大家所熟知的 webwork 2。在经历了几年的各自 发展后,webwork 和 struts 社区决定合二为一,也即是 struts 2 2.4 spring 技术简介 spring 是一个开源框架,它由 rod johnson 创建。它是为了解决企业应用 开发的复杂性而创建的。spring 使用基本的 javabean 来完成以前只可能由 ejb 完成的事情。然而,spring 的用途不仅限于服务器端的开发。从简单性、可

25、测 试性和松耦合的角度而言,任何 java 应用都可以从 spring 中受益。 目的:解决企业应用开发的复杂性 功能:使用基本的 javabean 代替 ejb,并提供了更多的企业应用功 能 范围:任何 java 应用 简单来说,spring 是一个轻量级的控制反转(ioc)和面向切面(aop)的 容器框架。 轻量从大小与开销两方面而言 spring 都是轻量的。完整的 spring 框架可以在一个大小只有 1mb 多的 jar 文件里发布。并且 spring 所需 的处理开销也是微不足道的。此外,spring 是非侵入式的:典型地,spring 应 用中的对象不依赖于 spring 的特定

26、类。 控制反转spring 通过一种称作控制反转(ioc)的技术促进了 松耦合。当应用了 ioc,一个对象依赖的其它对象会通过被动的方式传递进来, 而不是这个对象自己创建或者查找依赖对象。你可以认为 ioc 与 jndi 相反 不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将 依赖传递给它。 面向切面spring 提供了面向切面编程的丰富支持,允许通过分 离应用的业务逻辑与系统级服务(例如审计(auditing)和事务 (transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的 完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注 点,例如日志

27、或事务支持。 容器spring 包含并管理应用对象的配置和生命周期,在这个意 义上它是一种容器,你可以配置你的每个 bean 如何被创建基于一个可配置 原型(prototype) ,你的 bean 可以创建一个单独的实例或者每次需要时都生成 一个新的实例以及它们是如何相互关联的。然而,spring 不应该被混同于 传统的重量级的 ejb 容器,它们经常是庞大与笨重的,难以使用。 框架spring 可以将简单的组件配置、组合成为复杂的应用。在 spring 中,应用对象被声明式地组合,典型地是在一个 xml 文件里。spring 也 提供了很多基础功能(事务管理、持久化框架集成等等) ,将应用逻

28、辑的开发留 给了你。 所有 spring 的这些特征使你能够编写更干净、更可管理、并且更易于 测试的代码。它们也为 spring 中的各种模块提供了基础支持。 2.5 javascript 技术简介 hibernate 是一个开放源代码的对象关系映射框架,它对 jdbc 进行了非常 轻量级的对象封装,使得 java 程序员可以随心所欲的使用对象编程思维来操纵 数据库。 hibernate 可以应用在任何使用 jdbc 的场合,既可以在 java 的客户 端程序使用,也可以在 servlet/jsp 的 web 应用中使用,最具革命意义的是, hibernate 可以在应用 ejb 的 j2ee

29、 架构中取代 cmp,完成数据持久化的重任。 hibernate 的核心接口一共有 5 个,分别为: session、sessionfactory、transaction、query 和 configuration。这 5 个核 心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存 取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 session 接口:session 接口负责执行被持久化对象的 crud 操作(crud 的任 务是完成与数据库的交流,包含了很多常见的 sql 语句。)。但需要注意的是 session 对象是非线程安全的。同时,hibernate 的

30、session 不同于 jsp 应用中 的 httpsession。这里当使用 session 这个术语时,其实指的是 hibernate 中 的 session,而以后会将 httpsesion 对象称为用户 session。 sessionfactory 接口:sessionfactory 接口负责初始化 hibernate。它充当 数据存储源的代理,并负责创建 session 对象。这里用到了工厂模式。需要注 意的是 sessionfactory 并不是轻量级的,因为一般情况下,一个项目通常只需 要一个 sessionfactory 就够,当需要操作多个数据库时,可以为每个数据库指 定一

31、个 sessionfactory。 configuration 接口:configuration 接口负责配置并启动 hibernate,创建 sessionfactory 对象。在 hibernate 的启动的过程中,configuration 类的实 例首先定位映射文档位置、读取配置,然后创建 sessionfactory 对象。 transaction 接口:transaction 接口负责事务相关的操作。它是可选的, 开发人员也可以设计编写自己的底层事务处理代码。 query 和 criteria 接口:query 和 criteria 接口负责执行各种数据库查询。 它可以使用 hql

32、 语言或 sql 语句两种表达方式。 第 3 章 手机短信分享系统概述及需求分析 3.1 手机短信分享系统概述 手机短信分享系统是一个对手机短信和相应服务进行分享的信息管理系统, 它包含了音乐铃声模块、手机主题模块、手机图片下载模块、手机游戏模块、 后台管理模块和手机短信模块这六个功能模块。网站中都是关于手机服务的模 块,业务中包括对相应服务的点击量、更新时间等信息的统计,可以通过这些 信息把动态的根据需求显示在页面上。使用户更能清晰的根据自己的需求找到 相应的服务和需求。 手机短信分享系统是一个基于 b/s 的多层 web 应用系统,主要为上网手 机用户提供了一个信息交流的平台。用户可以根据

33、需要在分享同上下载资源, 并且可以发表评论,提出问题并表达自己的观点。同时也可以查阅他人的评论 等。 3.2 手机短信分享系统需求分析 需求分析是指,需求分析人员将客户描述的需求用计算机语言描述出来, 分析用户的需求是否能实现,是否还可以提交更多的功能。要开发一个软件产 品,最首要也是最重要的就是需求分析,它是决定一个系统成功与否的关键。 对于开发一个分享系统,首先需要确定它能提供那些功能。用户使用分享 系统是按照一定的流程来进行的:用户进入分享系统,可以查询需要的查看信 息、查阅服务、评论服务内容、管理员要对分享系统进行管理,系统要具有创 建、编辑、删除版块,管理的用户,管理信息和设置的功能

34、等 1.根据服务分类显示服务。 2.根据点击量显示服务内容 3.根据更新时间显示服务内容 4.个性化界面定制 5.根据搜索显示服务内容。 6.根据推荐用户显示服务内容 第 4 章 手机短信分享系统的详细设计 详细设计阶段的根本任务是确定怎样具体的实现要求的目标系统,也就是 说,经过这个阶段的设计工作,应该写出对系统的精确描述,从而在编辑阶段 可以把这个描述直接翻译成用某种程序设计语言书写的程序。此阶段要设计出 程序的“蓝图” ,开发人员根据这个蓝图写出实际的程序代码。因此,详细设计 的结果基本决定了最终程序代码的质量。除了应该保证程序的可靠性之外,也 应保证编写的程序可读性好,易于理解、测试、

35、修改和维护,这一点是详细设 计的最重要的目标与任务。 此外,界面设计也是本阶段完成的主要工作。界面提供了一个人机对话的 有效窗口,一个良好的界面不仅能够使用户方便快捷的应用这个系统,而且还 可以通过界面形象的了解系统所具有的功能。因此,界面设计是系统设计过程 中的一个重要的环节。 4.1 框架分析 接下来我们所要做的就是对整个系统进行逻辑分层,已便于系统的开发、 维护以及后续新的功能的扩充。软件的逻辑分层指的是在单个的软件模块中完 成相对独立的特定的功能。软件的层必须符合以下特征: 每个层由一组相关的类或组件构成,共同完成特定的功能。 层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件

36、的 api,而下层组件不应该依赖上层组件。 每个层对上层公开api,但具体的实现细节对外透明。当某一层的实现 发生变化,只要它的api不变,不会影响其他层的实现。 软件分层的优点,主要表现在以下几个方面: 提高软件的伸缩性。伸缩性指应用程序是否支持更多的用户。 提高了软件的可维护性。可维护性指的时当发生需求变化时,只需修改 软件的某一部分,不会影响其他部分的代码。层数越多,可维护性也会 不断提高,因为修改软件的某一层的实现,不会影响其他的层。 提高软件的可扩展性。可扩展性指的是在现有系统中增加新功能的难易 程度。层数越少,增加新功能就越容易破坏现有的程序结构。层数越多, 就可以在每个层中提供扩

37、展点,不会打破应用的整体框架。 提高软件的可重用性。可重用性指的是应用程序代码没有冗余,同一个 应用程序能满足多种需求。 提高软件的可管理性。可管理性指的是管理系统的难易程度。将应用程 序分为多层后,可将工作分给不同的开发小组,从而便于管理。 我们采用流行的mvc设计模式,整合struts、spring、hibernate框架,把整 个系统分为四层:表示层 ( presentation layer)、业务层(business layer) 、持久 层 (persistence layer ) 、域模块层(domain model layer ) ,并用struts实现表 现层, 用spring

38、实现业务层, 用hibernate实现数据持久层。 表示层:提供与用户交互的界面,主要负责接受用户请求并做出响应。 它接受用户的输入,将数据传递给业务层,并将业务层返回的处理结果 以dhtml的形式呈现给用户。这一层的最佳实现模式就是mvc模式, 所以借助成熟的采用mvc模式的struts来实现该层。struts主要在这一层 负责为用户管理请求和响应;提供actionfrom来封装与用户互动的数据 元素;提供控制器(controller)代理调用业务逻辑;处理从其他层抛出 的struts action异常; 业务层:具体的业务逻辑通常导致代码的高度耦合,因此我们将业务逻 辑分为单独的一层,其目

39、的也是希望通过该层,来降低它与系统其他部 分的耦合度。该层借助spring可以达到更好的效果。通过spring的ioc 模式来装配业务组件,如dao对象,使系统更具扩展性。通过spring aop(面向方面)思想,来集中处理具体业务,如事务管理,使代码更 为简洁,增加复用,提高开发效率。所以spring主要在这一层负责处理 应用程序的业务逻辑和业务验证;管理事务;管理业务层对象之间的依 赖;从表示层中提供一个上下文(context)给业务层获得业务服务 (business services ) ;管理从业务逻辑到持久层的实现。 持久层:在传统的系统开发中该层占据大部分的开发时间,且随着需求 的

40、变更功能的修改,逐渐变得难以控制,特别是表结构的变化可能导致 整个系统大动干戈。hibernate框架为java提供了对象关系持久化 (object-to-relational persistence)机制和查询服务。借助hibernate,利 用其持久化机制和crud封装来减少代码开发量和其他层次的耦合度。 域模块层:该层应该说是orm思想的产物,orm用对象关联数据表, 允许数据表中数据放入对象,也允许对象中数据更新到数据表,我们将 这些对象的集合归为一个专门的层次即domain layer。域对象承担各层 之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如 board对象,f

41、riend对象。通过对业务的对象化,这有利于业务逻辑的 重用。 将系统进行如上的分层,从理论上可以让其承担各自职责,表示层提供友 好的用户交互、业务层处理具体问题领域逻辑、持久层完成与数据库读取存储、 域模型承担数据传输的载体。将一个复杂的应用领域细分成诸多最小单元,然 后进行串联、组合。使得一个应用领域的实现过程中,最小单元达到最大复用, 这也是我们将icps系统进行上述分层的原因之一。 分层后的设计图如图5-1所示。 图5-1 系统架构层次图 4.2 功能模块简介 4.2.1 系统功能划分:系统功能划分: 根据系统所实现的功能,可作出如下图所示的结构划分: 根据服务分类显示服务类型 精品铃

42、声服务 图片下载服务 短信服务 首页 手机主题服务 手机游戏服务 显示其他服务的信息 根据点击量和更新时间显示服务列表 显示具体铃声分类列表显示铃声列表 显示总体铃声数数据和排行 显示所有手机主题数据显示手机主题 显示总手机主题数据和排行 显示具体图片分类列表和数据显示图片下载 显示总图片下载数据和排行 显示具体游戏分类列表和数据显示手机游戏 显示总手机游戏数据和排行 显示具体短信分类列表和数据显示短信服务 显示总短信服务数据和排行 4.2.2 系统逻辑流程图系统逻辑流程图: 首页 服务总页面(分类,排行,更新时间)信息列表 【页面逻辑流程图】 选择一个服务类型 选择一个下载内容 下载页面 下

43、载完成 按说明进行下载 搜索内容 搜索页面 选择一个下载内容 分类内容 分类信息页面 选择一个下载内容 页面需要的信息 服务层(service 类) - 由 spring 依赖注入实体 类 dao 层(hibernate 查询) 查询数据库,返回数据 action 类(struts2)提供 根据 id 或者 其他需求查询数据 结束 结束 【数据加载逻辑流程图】 3.3 根据搜索 信息加载 数据 2.2 排行榜信 息 2.3 搜索信息 3.4 根据具体 服务的 id 查询数据 库获取数 据 2.4 显示具体 信息 1 选择服务 用户 d1 数 据 库 信 息 2.1 分类信息 3.2 分类排行

44、榜数据 3.1 搜索分类 信息数据 4.2.3 系统数据流图:系统数据流图: 通过以上数据流图的描述,很清晰的看出整个数据的流向。用户登录主页面界面后, 选择相应的服务,分别处理其相应的加载工作。然后把数据通过服务层反传递到前台页面 jsp 进行显示。 4.3 数据模型设计和数据库设计 数据库设计是最重要的,如果数据库的设计不是很清晰,那么在服务层使 用的时候常常会造成数据冗余。 系统需要大量的数据来支持的,建立合适的数据库来存储数据是非常重要 的,那么首先就要设计合理、稳定的数据模型。根据多次需求分析,对需求已 经十分明确,经过详细的需求分析,了解到各个表应有的关系,将系统的数据 模型设计完

45、成。 完成了整合 struts、hibernate 和 spring 框架的设计,把应用系统分为了四 层:表示层、业务层、持久层、域模块层。本章主要探讨如何引入 struts、hibernate 和 spring 框架技术分别实现表示层、业务层、持久层,并最 终完成共享系统的实现。 4.3.1 数据库采用数据库采用 hibernate 进行架构进行架构 class entity: private string id; private string title; private string content; private int clicktimes; private date time;

46、private date updatetime; private user user; private themetype themetype; private string action; class game extends entity: private image image; private string url; private set comments; 游戏(game)表 存储游戏的属性和状态 字段名称数据类型是否为主键 id文本是 title文本否 content长文本否 clicktimes整型否 time文本否 updatetime整型否 action文本否 user_i

47、d整型(外键)否 themetype_id文本否 url整型否 image整型否 class image extends entity: private string url; private set comments; 图像(image)表存储图像的属性和状态 字段名称数据类型是否为主键 id文本是 title文本否 content长文本否 clicktimes整型否 time文本否 updatetime整型否 action文本否 user_id整型(外键)否 themetype_id文本否 url整型否 class music extends entity: private string

48、url; private set comments; 铃声(music)表 字段名称数据类型是否为主键 id文本是 title文本否 content长文本否 clicktimes整型否 time文本否 updatetime整型否 action文本否 user_id整型(外键)否 themetype_id文本否 url整型否 class sms extends entity: private set comments; 短信(sms)表存储短信的属性和状态 字段名称数据类型是否为主键 id文本是 title文本否 content长文本否 clicktimes整型否 time文本否 updatet

49、ime整型否 action文本否 user_id整型(外键)否 themetype_id文本否 abstract class comment: private int id; private string title; private string content; private date time; private user user; private string action; class themecomment: class gamecomment: class musiccomment: class smscomment: 评论(comment)表 存储评论的属性和状态 字段名称

50、数据类型是否为主键 id文本是 type文本否 title文本否 content长文本否 time时间否 action整型否 sms_id文本否 user_id整型(外键)否 image_id文本否 music_id文本 theme_id文本 game_id文本 用户(user)类: class user: private int id; private string name; private string password; private string petname; private permission permission; private int cellphone; priva

51、te userdetailedinformation detial; private set groups; private set comments; private set entities; private set creategroups; class userdetailedinformation: private int id; private image image; private string sex; private date birthday; private string interest; private date registertime; private date

52、 lastlogintime; 用户(user)表 存储用户的属性和状态 字段名称数据类型是否为主键 id整型是 name文本否 password文本否 permission_id整型(外键)否 petname文本否 cellphone整型否 detail_id整型否 用户详细信息(userdetailedinformation)表: 字段名称数据类型是否为主键 id整型是 image整型否 sex文本否 birthday日期否 interest文本否 registertime日期否 lastlogintime日期否 组(group)类: class group: private int id

53、; private string name; private string description; private string notice; private image image; private date time; private user user; private set members; 组(group)信息 存储组别的属性和状态 字段名称数据类型是否为主键 id整型是 name文本否 description文本否 notice文本否 image整型否 time日期否 user整型否 class type: private int id; private string nam

54、e; private set themetypes; 类别总分类(type)信息 字段名称数据类型是否为主键 id整型是 name文本否 class themetype: private int id; private string name; private type type; 具体类别分类(themetype)信息 字段名称数据类型是否为主键 id整型是 name文本否 type_id整型否 class permission: private int id; private string name; 权限(permission)信息 字段名称数据类型是否为主键 id整型是 name文本否

55、 4.3.2 数据库类图数据库类图 类型类型:含有所有的定义类型含有所有的定义类型 实体实体:具体的实体分类具体的实体分类-游戏、主题、短信、图片、音乐。游戏、主题、短信、图片、音乐。 评论:评论: 用户:用户: 4.3.3 持久层的实现持久层的实现 我们用hibernate框架实现应用的持久层,封装访问数据库的实现细节,并 向上层提供面向对象的数据访问api。在接下来的三个小节,主要分析了如何 创建hibernate框架为我们的应用服务。分为如下三个步骤: 创建o/r映射文件 创建hibernate配置文件 通过hibrenate api实现具体的dao数据访类 4.3.4 o/r映射映射

56、hibernate采用xml格式的文件来指定对象和关系数据之间的映射。在应用 运行时,hibernate将根据这个映射文件来生成各种sql语句,实现数据的访问。 表与表之间的关联关系通过xml进行配置,然后经过hibernateapi实现。 4.3.5 dao数据访问接口数据访问接口 本系统涉及的业务对象有多个,每一个都映射到一张数据库表,为了完成 业务对象的持久化,执行相应的增、删、改、查操作,所以必须实现每一个对 象的dao类。基于以下几点考虑,我们创建了每一个对象dao类的接口类 dao: 为了以后功能扩展 降低系统实现之间的相互依赖关系 业务层用spring框架的设值注入方式绑定bus

57、iness service object和 dao object, business object中的setter方法接受的是接口,这样便于很松散的 定义对象实现,然后注入。 考虑到每一个对象dao类所需完成功能的相似性,所以可以定义一个接口超 类, 用以封装通用的方法定义。 public interface imagedao public image getimage(string id); public list getallimages(); public list getallimages(int page, int pagesize); public void deleteimage

58、(string imageid); 4.3.6 dao数据访问实现数据访问实现 为了实现代码的最大复用和便于以后功能的变更,业务对象dao都继承自 接口中的dao。transactional可以获得currentsession。currentsession能为我 们管理session的创建、事务的启动、提交与回滚。 getxxx()方法提供给调用者一个query对象,它需要调用者传入一个sql语 句的字符串作为参数。这个方法调用的getcurrentsession ()方法获取 session。 向数据库中添加记录是最常见的操作之一。addxxx()实现了向数据库中添 加一条对应于一个业务对象

59、实例的记录,它调用hibernatetemplate的save() 方法实现。 根据主键查询唯一数据对象,用getxxxbyid()方法实现。这个方法有两个参 数:业务对象class和id。根据需要,id可以是integer型对象、long型对象或 string。 updatexxx()方法用于把业务对象的更新持久化到数据库对应的表中。 deletexxx()方法从数据库删除一条对应于一个业务对象的记录 findxxxbyname(string name)方法根据查询语句查询数据库并返回查询结果 所包含的业务对象集合 业务对象dao封装了hibernate的实现细节,提供访问接口,供业务层调用

60、。 从上面的分析可以看出,用 hibernate 实现持久层,使操作变得非常简洁,我们 所面对和操作的是都是具体得业务对象,而让 hibernate 根据映射文件去完成和 数据库表打交道得那部分工作。这也是使用 hibernate 实现持久层得优势所在。 4.4 业务层的实现业务层的实现 业务层所要做的就是处理来自表示层的请求、执行应用逻辑、对持久层的 调用、处理事务、处理异常。本系统涉及到的业务逻辑类是由系统的业务对象 决定的。spring框架负责把业务处理逻辑与所用到的业务处理对象和dao联系 起来以完成相应的业务处理。 4.4.1 业务逻辑处理类的实现业务逻辑处理类的实现 依据本系统涉及

温馨提示

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

评论

0/150

提交评论