基于JavaEE的个人数字图书馆的设计与实现图书管理系统学位学士论文.docx
- 文档编号:23928549
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:41
- 大小:378.53KB
基于JavaEE的个人数字图书馆的设计与实现图书管理系统学位学士论文.docx
《基于JavaEE的个人数字图书馆的设计与实现图书管理系统学位学士论文.docx》由会员分享,可在线阅读,更多相关《基于JavaEE的个人数字图书馆的设计与实现图书管理系统学位学士论文.docx(41页珍藏版)》请在冰豆网上搜索。
基于JavaEE的个人数字图书馆的设计与实现图书管理系统学位学士论文
毕业论文
题目基于JavaEE的个人数字图书馆
的设计与实现
英文题目PersonalDigitalLibraryDesignandImplementationBasedonJavaEE
院系信息科学与技术学院
专业计算机科学与技术
姓名
班级学号
指导教师
二○一二年五月
摘要
随着信息时代的到来,大量的信息充斥着我们的眼球,然而,面对这么多丰富的信息,如果我们不能很好的管理起来就,这些信息对我们来说就只是垃圾而没有任何的价值,在这个知识经济飞速发展的时代里,个人的发展越来越依赖于个人的竞争力,而个人竞争力的源泉则是个人知识的管理。
在这种情况下,作为个人信息管理和知识组织的工具——个人数字图书馆迅速发展起来,个人数字图书馆是数字图书馆发展中的新鲜事物,反映了网络环境下信息用户的个性化需求,是网络信息资源管理的客观要求,也是知识管理发展的必然。
本文主要结合个人数字图书馆的具体特点:
图书资料共享、互相发送信息等特点以及图书管理的理论知识,采用面向对象的程序设计方法,基于目前Web开发中广泛运用的主流框架:
Struts、Hibernate和Freemarker组件构建一个属于个人的数字图书馆系统。
此系统主要分为前台和后台两部分。
前台供注册用户使用,每个注册用户都有一个属于个人的数字图书馆。
该图书馆主要分为:
我的图书、我的收藏、备忘录、信息、日志、资料搜索、图书管理等几大模块。
其中“我的图书”是指用户上传的所有文件;“我的收藏”是指用户保存的一些网摘;“备忘录”顾名思义是指用户向系统中添加当下没有完成的事情或计划做的事情;“信息”是指系统用户间相互发送信息,交流思想;“日志”就是用户在系统中发表日志;“资料搜索”这里只限本站搜索。
后台系统管理员的主要功能是查看和删除系统用户,查阅管理系统中的所有资料。
关键词:
个人数字图书馆,知识共享,知识管理
Abstract
Withtheadventoftheinformationage,alargeamountofinformationfullofoureye,however,inthefaceofsomuchinformation,ifwecannotverywellmanageit,whichforusisjustrubbishandnotofanyvalue,Inthisageofrapiddevelopmentoftheknowledgeeconomy,personaldevelopmentreliesmoreandmoreoftheircompetitiveness.Butasourceofcompetitivenessisapersonalknowledgemanagement.Inthiscase,asatoolforpersonalinformationmanagementandknowledgeorganization-personalrapiddevelopmentofdigitallibraries,andpersonaldigitallibraryisadigitallibraryinthedevelopmentofnewthings,reflectstheindividualneedsofinformationusersunderthenetworkenvironment,istheobjectiverequirementofnetworkinformationresourcemanagementanddevelopmentofknowledgemanagement.
Thisarticlewithspecificcharacteristicsofindividualdigitallibrary,booksandinformationsharing,sendeachotherinformationandlibrarymanagementtheoryknowledge,usingobjectorientedprogrammingmethod,andbasedonthecurrentwidelyusedinmainstreamWebdevelopmentframework:
Struts,Hibernate,andFreemarkercomponentsbuildadigitallibrarysystemoftheindividual.Thissystemismainlydividedintotheforegroundandbackgroundintwoparts.Frontdeskforregisteredusers,eachregistereduserhasapersonaldigitallibrary,thelibraryisdividedinto:
mystuff,myfavorites,memos,information,logs,informationsearch,books,andotherlargemodules.Backgroundsystemadministrator'smainfunctionistodeletetheuseranduser-relatedinformation.
Keywords:
PersonalDigitalLibrary,KnowledgeSharing,KnowledgeManagement
1绪论
1.1选题背景
知识经济时代的到来,大量和个人知识管理有关的计算机应用软件开始在个人电脑中使用,是个人知识管理效率有很大的提高。
然而,目前大部分的个人知识管理工具只在个人电脑中使用,这些工具对于个人知识的积累确实发挥了很大的作用,便捷的检索方式也提高了人们查阅知识的效率。
但是,这些工具没有与他人共享知识,没有与他人交流思想的功能,人们在不经意间发现自己习惯的知识管理方式已经不再满足个人知识管理日益个性化、社会化的趋势[1]。
个人数字图书馆是数字图书馆发展中的新鲜事物,反映了网络环境下信息用户的个性化需求,是网络信息资源管理的客观要求,也是知识管理发展的必然。
在这个知识经济飞速发展的时代里,个人发展越来越依赖于个人竞争力。
而个人竞争力的源泉来源于个人知识的管理、个人知识的学习、保存、使用、共享。
然而随着网络信息的爆炸和数字图书馆的迅猛发展,无限的信息冲刺着我们的眼球和大脑,而这很多信息对我们来说只是垃圾信息。
相信很多人都有过这样的体验,前几天在网上看到一篇很适合自己的文章,现在需要拿来用,可却怎么也找不到,用搜索引擎去搜索时又没有记住准确的题目,而搜出一大批不相符的内容。
在这种情况下,作为个人信息管理和知识组织的工具——个人数字图书馆迅速发展起来[2]。
1.2国外研究状况
个人数字图书馆的提出最早开始于美国学者舒曼(PatriciaGlassSchuman)于1979年提出的“图书馆和信息提供者应该提供迎合个人需求的新服务”观点,由图书馆个性化信息服务的思想演变而来。
个人数字图书馆的真正研究开始于20世纪90年代初,1999年美国图书馆与信息技术联合会(LATA)几位著名的数字图书馆专家在一次研讨会上,把个性化服务列为数字图书馆发展的7大趋势之首,同年,美国康奈尔大学图书馆开发了网络个性化服务平台MyLibrary系统[3]。
1.3国内研究状况
大连交通大学图书馆孔繁胜等作者认为现有观念中,个人图书馆建设要么是个人的行为,要么是某个机构提供一个平台,为资源建设服务,最后形成私有财产,没有形成在个人资源建设的同时提供资源的共享、知识的互动、思想的交流,也就是没有进行知识的再增值[4]。
张犬银、朱庆华在《个人数字图书馆研究探讨》[5]与《网络环境下个人数字图书馆信息检索策略》[6]对个人数字图书馆的本质及功能进行了论述说明,认为个人数字图书馆本质上是个性化的数字图书馆,可以为个人在生活上、学习上、工作上提供便利的服务,同时,还可以与他人共享知识。
1.4课题目标
课题的最终目标是构建一个个人数字图书馆系统,在此系统上每个注册用户都有个一属于自己的知识管理平台,每个注册用户都可以通过查看共享资料获得此资料的共享用户,并且可以下载系统所有用户的共享资料,还可以通过此平台联系这些注册用户,达到知识共享,思想交流的目的。
还可以在此平台上发布日志、添加备忘录、收藏网摘等。
1.5本文组织结构
本论文主要是介绍了一个基于JAVAEE技术中使用广泛应用的Struts、Hibernate框架和FreeMarkerJava组件实现个人数字图书馆平台的过程:
当中包括相关技术的理论介绍、需求获取、系统设计、系统实现、系统测试和调试。
同时,也给出了部分功能核心代码。
全文共分六章。
(1)绪论:
介绍了选题背景、国内外研究现状分析和论文的最终实现目标。
(2)理论知识技术介绍:
简单介绍系统中采用的MVC模式和使用到的UML建模语言及主流技术:
Struts、Hibernate和Freemarker。
(3)平台需求分析:
分析获取平台系统需要实现的主要功能,以及系统中的主要参与者和用例。
(4)系统设计:
面向对象的设计原则,系统功能的设计、数据库的设计、业务逻辑和Web层的设计。
(5)系统实现:
讲述开发环境的部署,实现系统中的各个功能模块;同时,展示一些核心的配置和代码。
(6)系统功能测试:
通过设计测试用例等对系统的相关模块进行测试。
2理论知识技术介绍
近年来UML建模语言得到广泛的使用和设计师的追捧,Web技术日新月异,本章将对论文中使用到的UML建模语言和应用到的几大主流技术MVC模式、Struts2框架、Hibernate框架和Freemarker组件做一简单介绍,方便读者更好的了解论文。
2.1UML建模语言
统一建模语言(UML,UnifiedModelingLanguage)是非专利的第三代建模和规约语言。
UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的开放方法。
UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效[7]。
UML设计的目标有以下几点:
(1)运用面向对象的概念来建造系统模型。
(2)建立概念模型和现实实体间明显的对应关系。
(3)创建一种对人和机器都适应的建模语言。
UML建模语言由五类图来定义:
用例图、静态图、行为图、交互图、实现图。
(1)用例图:
从用户角度描述系统功能,并指出各功能的操作者。
(2)静态图:
包括类图、对象图和包图。
类图描述系统中类的静态结构;对象图是类图的实例,使用标志与类图基本相同;包图描述系统的分层结构,由类和包组成,表示包与包之间的关系。
(3)行为图:
描述系统的动态模型和组成对象间的交互关系。
(4)交互图:
描述对象间的交互关系。
(5)实现图:
描述代码部件的物理结构及部件间的依赖关系。
2.2MVC简介
MVC模式最早由TrygveReenskaug在1974年提出,是施乐帕罗奥多研究中心(XeroxPARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:
模型(Model)、视图(View)和控制器(Controller)。
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
此外,此模式通过对复杂度的简化,使程序结构更加直观。
软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。
MVC设计思想是把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,可以为HTML界面,也可以为XHTML、XML和Applet。
随着应用的复杂性和规模性,界面的处理也变得具有挑战性。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
业务流程的处理交予模型(Model)处理。
模型(Model):
就是业务流程状态的处理以及业务规则的制定。
业务模型的设计是MVC最主要的核心。
MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。
用对象编程来比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。
如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。
因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。
这实际上是一种模型的变化-传播机制[8]。
2.3Struts简介
Struts是Apache软件基金会(ASF)赞助的一个开源项目。
由于本系统开发过程中使用的是Struts2,这里就只对Struts2做简单的介绍。
Struts2号称是一个全新的框架,但这仅仅是相对Struts1而言。
Struts2与Struts1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个家喻户晓的框架——WebWork基础上发展起来的。
从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。
因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:
而且吸收了Struts1和WebWork两者的优势。
因此,Struts2是一个非常优秀的框架,其具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发,还可以清晰地区分控制、事务逻辑和外观,从而简化了开发应用程序的过程。
Struts2对Model,View和Controller都提供了对应的组件。
ActionServlet,这个类是Struts2的核心控制器,负责拦截来自用户的请求。
Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给页面显示。
Model由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。
JavaBean则封装了底层的业务逻辑,包括数据库访问等。
View部分Struts2推荐采用Freemarker模版技术实现。
Struts2提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。
Controller组件由两个部分组成——系统核心控制器,业务逻辑控制器。
系统核心控制器由Struts2框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。
该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。
业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是通过调用Model来完成对应Action的部分处理。
2.4Hibernate简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JAVAEE架构中取代CMP完成数据持久化的重任。
Hibernate的核心接口一共有6个分别为:
Session、SessionFactory、Configuration、Transaction、Query和Criteria。
这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对象[9]。
Transaction接口负责事务相关的操作。
它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口负责执行各种数据库查询。
它可以使用HQL语言或SQL语句两种表达方式。
2.5Freemarker简介
简单的说,Freemarker就是一种用Java编写的模版引擎,它的工作原理是:
模版+数据=输出,它根据模板输出多种规格的文本如:
HTML、XML、Java等。
Freemarker不是一个Web应用框架,而适合作为Web应用框架,其与容器无关,因为它并不知道HTTP或Servlet。
Freemarker同样可以在非Web应用程序环境中使用;不过,FreeMarker更适合作为Model2框架如(Struts2)的视图组件;同时,你也可以在模板中使用JSP标记库[10]。
FreeMarker允许Javaservlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。
模板用Servlet提供的数据动态地生成HTML。
模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。
FreeMarker被设计用来生成HTMLWeb页面,特别是基于MVC模式的应用程序。
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。
2.6本章小结
本章主要对系统中使用到的技术作了简单的介绍,首先介绍了UML建模语言中不同图列表示的含义;其次介绍了MVC的三层结构模式;然后对Struts、Hibernate、Freemarker简单的介绍了它们的来源、发展、技术核心和应用。
通过本章的阅读,读者对本文中使用到的技术有了基本的了解和认识,对于下午的理解有一定的帮助。
3平台需求分析
需求分析是收集需求、编写需求文档、审核需求文档、编写需求规格说明的过程,其处于开发周期中的开始阶段。
需求分析的方法有面向对象的分析方法、面向功能的分析方法和面向数据的分析方法。
需求分析的成功与否直接决定着项目能否成功的进行下去,因此需求分析在整个项目中起决定性的作用,非常重要。
本章将结合本次开发的具体情况,对目标系统的功能性需求、非功能性需求进行分析获取。
3.1系统总体结构概述
此次开发的主要目标是构建一个属于个人的知识管理工具——个人数字图书馆,此个人数字图书馆的主要功能是在线注册过的用户都能够通过此平台最终达到个人知识的组织和管理并能和该平台上和的其他注册用户交流和共享资料的目的。
其系统总体结构框图如图3-1所示。
图3-1系统总体结构框图
由图3-1可以看出,系统主要由前台和后台两部分构成,前台主要是提供给系统的注册用户使用。
后台主要用于管理员对整个系统的管理,后台管理中,前台系统的所有用户,和用户的所有资料文件都能在后台完全显示,管理员可以删除用户的每一个文件,也可以删除每一个系统注册用户。
在该系统上每个注册用户可以上传自己认为有价值的资料并可以共享给其他注册用户供其下载使用,如果不想让其他用户看到自己的资料,可以将文件设为私有,也可以在系统上搜索自己想要的资料(搜素范围仅限在本站)。
为了加深用户之间的交流,每个注册用户间都可以互相发送信息(结构图上的信息项),互相问候或索要对方的资料。
作为个人数字图书馆平台,系统提供了我的收藏功能,用户可以将自己感兴趣的网页文章保存为网摘,同时可以为网摘添加简要描述。
作为个人自学自冶的平台,此系统为用户添加了备忘录功能,用户可以将今天没有完成的工作,添加到备忘录项,备忘录按时间顺序排列显示,最早添加的备忘录显示在最前面,这样有利于促使用户查看所有的备忘录。
3.2系统参与者功能描述
参与者(Actor)是系统外部的一个实体,可以是一个人、各种软件系统或应用,它与某种方式参与用例的执行过程。
参与者通过向系统输入或请求向系统输入某些事件来触发系统的执行。
参与者由参与用例时所担当的角色来表示,一个参与者可以参与一个或多个用例。
参与者有三大类:
系统用户、与所建造的系统交互的其他系统和一些可以运行的进程。
本文中涉及到的参与者是系统用户,所以,在此只对系统用户的功能进行描述。
从上一节的分析得到了系统结构图,由图3-1可知系统的主要参与者有两种:
注册用户和系统管理员。
到此,系统的参与者已经很明了。
两类参与者的相关人员和在此系统中拥有的功能分别是:
注册用户登录个人数字图书馆系统后,可以进行站内的图书搜索,我的图书管理(可见权限的设置、删除、上传等),查看系统的共享图书,收藏和下载自己感兴趣的图书,书写发表日志,与系统中的用户互相发送信息等;管理员登录系统后可以查看系统的所有用户,查看系统的所有图书,删除系统每个注册用户,删除各种图书及其他用户资料等。
现在已经明确了系统参与者的具体功能,下面就可以对其功能进行细致的分析和实现。
3.3系统UML用例图
用例图是需求分析到最终实现的第一步,它描述了待开发系统的功能需求,从外部参与者的角度理解系统的所有功能。
用例图包含6个元素,分别是:
参与者(Actor)、用例(UseCase)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。
个人数字图书馆注册用户的总用例图如图3-2所示。
图3-2注册用户总用例图
图例说明:
在UML语法中,图形化的小人表示参与者,椭圆图形表示用例,一个用例针对着一个具体的功能模块。
“→”表示参与者和用例之间的执行关系;
“”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JavaEE 个人 数字图书馆 设计 实现 图书 管理 系统 学位 学士 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)