基于Struts的网上辅导系统的设计和实现论文_第1页
基于Struts的网上辅导系统的设计和实现论文_第2页
基于Struts的网上辅导系统的设计和实现论文_第3页
基于Struts的网上辅导系统的设计和实现论文_第4页
基于Struts的网上辅导系统的设计和实现论文_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . 基于Struts的网上辅导系统摘要传统的课后辅导是在课后,老师和学生同时找一个时间和地点,面对面的进行辅导。由于在时间,空间场所和广泛性上都有一定的局限性,所以很难对每个学生都进行辅导。与传统的辅导方法相比,网上辅导系统的开通,将实现教育资源的开放,使得学习者在任何时间、任何地点都能够利用互联网络进行学习,实现课堂教学的延伸。一方面,学习者可以共享他人的成功经验,吸取他人的失败教训,做到事半功倍;另一方面,教师可以通过本系统对学生进行超越时空的指导,同时,通过数字化环境下新型教学模式的运用,将有利于学习者养成自觉获取知识的习惯。Struts是基于模型视图控制体系(MVC)的We

2、b应用框架。本文详细介绍了基于MVC体系的Struts工作原理,探讨应用Struts框架构建企业级应用系统的步骤与方法。并在分析Struts技术的基础上,对网上辅导涉与的知识构建、人机交互学习、网上答疑、作业批改、教学论坛和试题生成等需求做了探讨,提出了基于Struts的解决网上远程教学辅导的策略,提高了网上教学的交互性和主动性,并在此基础上实现了一个网上辅导系统,实现了教学信息网络化。除此,访问数据库时,还用到了Hibernate技术,并详细介绍了该技术。本文还介绍了系统的数据管理。系统的数据分为用户数据,论坛数据和管理数据等等。并且对各数据库进行了举例说明。本文建立了一个基于Struts的

3、网上辅导系统。各个模块功能都已经实现,实验证明该系统可完成网上辅导功能。关键词Struts框架;Hibernate技术;java设计模式;网络辅导AbstractTeachers guide students face to face through seeking a same time and a same location in traditional learning-assistance. Because of limitations of time and space, teachers are difficult to assist every student. Compare

4、to traditional learning-assistance, online learning-assistance can implement opening educational resource. And it make student to study at any place and time through using Internet. It is extend of classroom teaching. On the one hand, students can share others successes and draw others lessons. On t

5、he other hand, teacher can guide students at any space and time through this system. And it is useful to student to form a habit of consciousness of study.Struts is a application frame based on MVC. This paper gives a detail account of principle of Struts based on MVC. Based on the research and anal

6、ysis of the technology of Struts, the function of instructing system of web was discussed, which include knowledge constructing, interactive leaning, online replying, homework correcting, E-learning forum and producer of test questions. The Strategy of distance teaching and tutoring on web was broug

7、ht forward using STRUTS technology, and the interactive and initiative of instructing on web was improved greatly. A learning-assistance system was exploited and implemented. Information on internet for teaching was realized.In addition, this paper introduces Hibernate and database management. The d

8、ates of this system include user date, forum date, management date and so. This paper design a online learning-assistance system based on Struts. Functional modularity of this system is implemented. Experiments prove that this system can complete online learning-assistance.KeywordsStruts frame; Hibe

9、rnate; Java design model; Online assistance38 / 44目 录摘要iAbstractii第一章 绪论11.1研究目的与意义11.2网上辅导系统的发展现状与趋势21.3本论文的主要研究工作3第二章 开发技术介绍42.1 JAVA设计模式42.1.1工厂方法(Factory Method)模式42.1.2适配器模式(Adapter Pattern)42.1.3单例模式62.2 Struts框架介绍62.2.1 Struts体系结构82.2.2主要组件介绍82.3 Hibernate介绍92.3.1 Hibernate 概念92.3.2 Hibe

10、rnate 工作原理102.3.2 Hibernate优点122.4 SQL Server数据库132.4.1 SQL Server基础132.4.2 SQL Server语句14第三章 系统分析与设计173.1 需求分析173.2模块设计18第四章 分析与创建数据库与其数据管理204.1 系统的数据管理204.1.1系统数据模型的建立204.1.2关系数据模型概念214.2系统中的关系数据模型214.2.1用户表224.2.2班级表234.2.3博客表244.2.4博客明细表244.2.5课程表244.2.6论坛主题类型表254.2.7论坛主题表254.2.8论坛详细信息表264.2.9论坛

11、附件管理表274.2.10班级管理表274.2.11课程管理表274.2.12权限编码表284.2.13业务名称表284.2.14权限类型表294.2.15院系基本表294.2.16年级基本表304.2.17公共消息表304.3创建并配置数据库30第五章 创建网上学习辅导系统325.1 公用模块325.1.1 系统框架325.1.2 系统权限335.1.3数据提交335.2用户管理模块335.2.1 用户注册335.2.2 用户登陆335.3.1 创建班级365.3.2 加入班级365.3.3 删除班级375.3.4 管理班级375.3.5 其他操作375.4 论坛管理395.4.1 增加主题

12、类型395.4.2 增加主题395.4.3 增加回帖395.5 博客管理41结论42参考文献43致44第一章 绪论1.1研究目的与意义答疑、解惑和课后辅导是教学活动的重要组成部分。近年来,随着我国高等教育由精英教育向大众教育的转型,一方面,学生基础参差不齐,教师难以把我教学尺度,致使学生中学有余力和疲于应付兼而有之,个别辅导答疑需求增大;另一方面,老师课堂讲授量答,超负荷运转,课后辅导量减少,加上教学场所不足,致使师生交流量下降,答疑和课后辅导的数量和质量均有所下降。这种“供需”矛盾,正是导致当前我国高等教育教学质量在某些方面滑坡的重要原因之一,应当重视并设法解决。信息技术和互联网络具有超时空

13、和资源共享的特性21,可以实现课堂教学的延伸8。学生上课时间有限,有些课程对于学生来说有一定的难度,为了提高学生的学习积极性和为了学生能在课余时间更有效地学习、巩固教学知识,把课堂教育和课后自学有机地结合起来,使教与学相辅相成。为此,我开发了网上学习辅导系统。网上辅导系统是通过网络表现的某门学科的教学容的补充与实施的教学活动的总和。随着网络技术和信息技术的迅速发展,网络辅导的建设也正在蓬勃的发展。本系统参考了现有的一些网上学习辅导系统的技术(jsp,asp,等), 系统研究和总结了近年来网上辅导系统建设的发展过程和主要特点,并在这些技术的基础上采用了目前非常流行的Struts框架和Hibern

14、ate数据库持久层,并根据实际情况以与对网上学习辅导系统的理解和看法,重新分析系统的需求。利用以上技术,尝试开发具有辅导答疑、习题练习、模拟考试等子系统以与提供学生与教师,学生与学生之间的交流平台网上辅导系统。该系统对推动网络化辅助教学,提高教学质量和教学改革必将产生深远的意义。 本系统使一个网上各科教学辅导系统,用户对象主要是学生,师生在网上进行教学与交流。学生进入该系统的主页并注册为会员后,通过对选定课程的教学方法、学科构成、考核基本要求、试题类型、试题难度设置等的分析,学生可以在面对面的课堂教学后,在网上进一步掌握课程知识的围与具有表达方式、要点和疑难点以与它的应用,实现课后的教学互动。

15、在学生进入该系统的论坛后,可以查看留言、发布留言、查询留言、回复留言、修改自己的留言等,同时教师也可以通过教学论坛与时了解学生学习情况和回答学生问题,并可以一对多进行讨论和发布信息。1.2网上辅导系统的发展现状与趋势随着Internet/Intranet的迅速发展和广泛普与,建立在其上的远程教育成为现代教育技术未来发展方向之一,网上辅导作为远程教育的一个子系统也成为一个重要的研究领域。Internet技术的发展使得课后辅导的技术手段发生了革命性的变化,Internet的开放性、分布性的特点和基于Internet的巨大的计算能力使得课后辅导突破了时间和空间的限制。基于Internet的课后辅导系

16、统正成为人们的研究热点之一。与传统辅导模式相比,网上辅导具有无可比拟的优越性10。传统的课后辅导是在课后,老师和学生同时找一个时间和地点,面对面的进行辅导。由于在时间,空间场所和广泛性上都有一定的局限性,所以很难对每个学生都进行辅导。而网上辅导系统正打破了这局限性,通过网络,直接在网上对学生进行辅导。所以学生在任何能上网的地方都可以进行辅导。老师和同学同时在线的时候可以一对多进行辅导,即使老师不在线,同学可以把问题留言给老师,等老师下回再上线时,就可以回答学生的问题,解答疑难问题。而且同学们也可以互相讨论。老师也可以把一天讲的课程中的重点难点,随堂笔记,习题,测试等都发布在该系统上,这样有助于

17、课后学习。通过网上辅导可以实现:1 弥补学生基础参差不齐的状况,实现个别化教育,使每位学生都能得到适合的教育。2 通过互联网,为任何人任何时间任何地点学习提供方便。学生可以利用系统收集信息、查询问题、参加交流、提出问题、倾听教师讲解、进行自我评测。3 老师进行知识积累,通过对学生提问进行汇兑,探索新时代高等教育发展的规律,为课程改革积累经验和素材。4 通过资源共享,改善目前高等教育资源不足的状况。5 共享优秀的人力资源特别是师资力量。随着网络技术的发展和网上辅导系统课题研究的成熟,网上辅导系统将由现阶段的由传统辅导的有力辅助逐渐发展成为课后辅导的主流,并有可能取代传统辅导方式的地位。现阶段对我

18、们国家对网上辅导系统的研究开发也非常重视。很多培训机构都建立了自己的远程教育系统,远程教育的两个重要部分就是网上授课和课后辅导。而且也有些学校建立了自己的网上辅导系统,帮助学生学习11。现今,网上辅导系统的实现有各种各样的技术。蔺素珍,风暴等用动态网页技术开发了高职高专网上辅导系统,主要运用了ASP的开发技术与方法。叶绿提出了基于JSP的解决网上远程教学辅导的策略,提高了网上教学的交互性和主动性。1.3本论文的主要研究工作本文的研究以建立基于Struts的网上学习辅导系统为总体目标。应用SQL SERVER建立相关的数据库,并用了当前比较流行的Struts框架和Hibernate技术创建各个功

19、能模块。论文的主要容按章节先后包括以下几个方面:1 讨论了网上辅导系统的发展现状。2 深入讨论了系统相关技术:介绍了java设计模式、Struts框架、Hibernate技术与SQL Server数据库。3 数据库的建立:建立数据库对系统用到的数据进行管理。其中包括用户数据、论坛数据、课程数据等等。4 系统模块的设计与实现:给出了系统的总体框架;并给出了每个模块的具体实现方式;最后给出了系统运行的一些界面与实例。第二章 开发技术介绍2.1 JAVA设计模式Java是Sun公司于20世纪90年代开发的.最初并不是为了用于Internet, 而是作为一种小家用电器的编程语言,用来解决诸如电视机,闹

20、钟,烤面包机等家用电器的控制和通信问题,命名为Oak.由于这些智能化家用电器的市场需求当时没有预期的高,Sun放弃了该项计划.就在Oak几近夭折时,Internet异常火爆起来.Sun看到了Oak在计算机网络上的广阔应用前景,他们了Oak,于是Java诞生2。面向对象开发中程序员更重视代码的重用性和可维护性,设计模式使人们可以更加简单方便地重复使用成功的设计和体系结构。2.1.1工厂方法(Factory Method)模式工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接

21、口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品1。工厂方法模式角色与结构:1. 抽象工厂角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。 2. 具体工厂角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。3. 抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。4. 具体产品角色:这个角色实现了抽象产品角色所

22、定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。2.1.2适配器模式(Adapter Pattern)通常,客户类通过类的接口访问它提供的服务。有时,现有的类可以提供客户类的功能需要,但是它所提供的接口不一定是客户类所期望的。这是由于现有的接口太详细或者缺乏详细或接口的名称与客户类所查找的不同等诸多不同原因导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能。适配器模式可以完成这样的转化。适配器模式建议定义一个包装类,包装有不兼容接口的对象。这个包装类指的就是适配器,它包装的对

23、象就是适配者。适配器提供客户类需要的接口,适配器接口的实现是把客户类的请求转化为对适配者的相应接口的调用。换句话说:当客户类调用适配器的方法时,在适配器类的部调用适配者类的方法,这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器可以使由于借口不兼容而不能交互的类可以一起工作适配器总体上可以分为两类:类适配器(ClassAdapter)与对象适配器(Object Adapter)。1.类适配器是通过继承类适配者类实现的,另外类适配器实现客户类所需要的接口。当客户对象调用适配器类方法的时候,适配器部调用它所继承的适配者的方法1。图2-1 类的Adapter模式结构图2.对象适配器包

24、含一个适配器者的引用(reference),与类适配器一样,对象适配器也实现了客户类需要的接口。当客户对象调用对象适配器的方法的时候,对象适配器调它所包含的适配器者实例的适当方法。图2-2 对象的Adapter模式结构图2.1.3单例模式作为对象的创建模式GOF95, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以与在面对多线程(multithreading)、类装载器(classloaders)和序列化(serial

25、ization)时如何处理这些缺陷。单例模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍与一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。当然这只有在你确信你不再需要任何多于一个的实例的情况下。 单例模式的用意在于前一段中所关心的。通过单例模式你可以:1.确保一个类只有一个实例被建立; 2.提供了一个对对象的全局访问指针; 3.在不影响单例类的客户端的情况下允许将来有多个实例。使用单例模式有一个很重要的必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来说,如

26、果一个类可以有几个实例共存,那么就没有必要使用单例类。但是有经验的读者可能会看到很多不当地使用单例模式的例子,可见做到上面这一点并不容易,下面就是一些这样的情况。2.2 Struts框架介绍StrutsWeb应用在前台网页和后台业务逻辑部分连接的MVC实现,使前台的网页设计和后台的部分编码分离了,便于软件设计人员对程序的修改。整个Struts主要包括一个框架和可扩展的自定义标签库,框架很简单,用户只要继承Action类和使用定义好的其他类(比如ActionErrors)就好了。当然Struts中最好用的地方应该是Form概念,保证了数据和处理的分离。目前的IDE对Struts支持的相当好,ui

27、lder等工具中也有自动将Jsp网页转化为Struts格式的功能。Struts 是一个基于模型 (Model) 视图 (View) 控制器 (Controller)(MVC) 模式的应用架构的开源框架。JSP 页面中可以非常容易地结合业务逻辑 (jsp:useBean) 、服务端处理过程( jsp:scriplet )和 HTML(<html>) ,在 JSP 页面中同时实现显示,业务逻辑和流程控制,从而可以快速地完成应用开发9。现在很多的 Web 应用就是由一组 JSP 页面构成的。这种以 JSP 为中心的开发模型我们可以称之为 Model 1 。当然这种开发模式在进行快速和小规

28、模的应用开发时,由于其具有简单易学的特点,所以具有非常大的优势,但是从工程化的角度考虑,它也有一些不足之处,主要在于不方便应用扩展,以与不利于应用系统业务的重用和改动。考虑到这些问题,所以在开发大型的 Web 应用时必须采用不同的设计模式即Model24 。所谓Model2 就是基于 MVC 模式的框架。 “Model” 代表的是应用的业务逻辑(由 JavaBean , E 组件实现), “View” 是应用的表示面(由 JSP 页面产生),“Controller” 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件,这些组件可

29、以进行交互和重用。 Model2 具有组件化的优点从而更易于实现对大规模系统的开发和管理。Struts由一组jsp页面,ActionForm类,Action(具有Servlet功能)类,javaBean或E类等等组成一个的可重用的 MVC 2 设计。Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类库。 Struts 利用 taglib 获得可重用代码和抽象 Java 代码,利用 ActionServlet和Struts-config.xml 实现对整个系统导航。增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性12。Struts为Java Web应用提供了现成的通用

30、的框架。Struts可以大大提高Web应用的开发速度,如果没Struts,开发人员将不得不首先花大量的时间和精力来设计、开发自己的框架。如果在Web应用中恰到好处地处理使用Struts,将把从头开始设计框架的时间接生下来,使得开发人员可以把精力集中在如何解决实际业务问题上13。为什么要使用Struts呢?首先,它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉与,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统

31、一的权限控制、校验、国际化、日志等等;其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;最后,是它对其他技术和框架显示出很好的融合性。如,现在,它已经与tiles融为一体,可以展望,它很快就会与JSF等融会在一起。当然,和其他任何技术一样,它也不是十全十美的,如:它对类和一些属性、参数的命名显得有些随意,给使用带来一些不便;还有如Action类execute方法的只能接收一个ActionForm参数等。但瑕不掩瑜,这些没有影响它被广泛使用19。2.2.1 Struts体系

32、结构Struts是一种基于MVC经典设计模式的开放源代码的应用框架,也是目前Web开发中比较成熟的一种框架14。通过把Servlet、JSP、JavaBean、自定义标签和信息资源整合到一个统一的框架中,为Web开发提供了具有高可配置性的MVC开发模式。下图为struts体系结构。图2-3 Struts 体系结构Struts体系结构实现了MVC设计模式的概念,它将Model、View和Controller分别映射到Web应用中的组件。Model由代表系统状态和商业逻辑Action来构建,View是由JSP和struts提供的自定义标签来实现,Controller负责控制流程,由ActionSe

33、rvlet和ActionMapping来完成。2.2.2主要组件介绍下面我们就从分别从视图、控制、模型和Struts的配置文件struts-config.xml来介绍struts的体系结构15。1. 视图:主要由JSP建立,Struts自身包含了一组可扩展的自定义标签库(Tag1 ib),可以简化创建用户界面的过程。2. 模型:模型主要是表示一个系统的状态和业务逻辑。在Struts中,系统的状态主要由ActiomForm Bean体现,对于业务逻辑通常由JavaBean或E组件来实现。3. 控制器:控制器主要由ActionServlet类和Action类来实现,ActionServlet类是S

34、truts框架中的核心组件,主要负责接收 请求信息。根据配置文件struts-config.xml的配置信息,把请求转发合适的Action对象。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。4. 配置文件strutsconfig.xml:当ActionServlet接收 请求信息时,如何决定把用户请求转发给哪个Action对象呢?这就需要一些描述用户请求路径和Action映射关系的配置信息。在Struts中.这些配置映射信息都存储在特定的XML 文件Strutsconfig.xml中,在该配置文件中,每一个Action的映射信息都通过一个(action)元素来配置

35、。这些配置信息在系统启动时会被读入存,供Struts在运行期间使用,在存中,每一个(action)元素都对应一个ActionMapping类的实例。2.3 Hibernate介绍Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。它的设计目标是将软件开发人员从大量一样的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。 Hibernate不仅负责从Java类到数据库表的映射(还包括从Java

36、数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极缩短的手动处理SQL和JDBC上的开发时间。2.3.1 Hibernate 概念Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Java 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。 另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate Q

37、L 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器7。Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和E没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个畴的东西,也不存在非此即彼的关系。Hibernate是一个免费的开源Java包,它使得与关系数据

38、库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。大多数应用程序都需要处理数据。Java应用程序运行时,往往把数据封装为相互连接的对象网络,但是当程序结束时,这些对象就会消失在一团逻辑中,所以需要有一些保存它们的方法。有时候,甚至在编写应用程序之前,数据就已经存在了,所以需要有读入它们和将其表示为对象的方法。手动编写代码来执行这些任务不仅单调乏味、易于出错,而且会占用整个应用程序的很大一部分开发工作量。 优秀的面向

39、对象开发人员厌倦了这种重复性的劳动,他们开始采用通常的“积极”偷懒做法,即,创建工具,使整个过程自动化。对于关系数据库来说,这种努力的最大成果就是对象/关系映射(ORM)工具。 这类工具有很多,从昂贵的商业产品到置于J2EE中的E标准。然而,在很多情况下,这些工具具有自身的复杂性,使得开发人员必须学习使用它们的详细规则,并修改组成应用程序的类以满足映射系统的需要。由于这些工具为应付更加严格和复杂的企业需求而不断发展,于是在比较简单和常见的场景中,使用它们所面临的复杂性反而盖过了所能获得的好处。这引起了一场革命,促进了轻量级解决方案的出现,而Hibernate就是这样的一个例子。2.3.2 Hi

40、bernate 工作原理Hibernate框架是开放源代码的对象关系映射工具(Object-Relational Mapping),是一款基于Java环境的优秀的对象持久化开发框架。它根据O/R(对象/关系)映射技术思想,对JDBC进行了轻量级封装,使开发人员可以使用一种面向对象的方式来操纵和管理关系数据库,所以从技术本质上来说该框架是一种提供面向对象的数据库服务中间件。Hibernate框架位于应用程序的业务化和持久化层,Hibernate技术本质上是一个提供数据库服务的中间件,位于应用程序的业务化和持久化层,它的架构如下图所示:图2-4 Hibernate体系结构此图显示了hibernat

41、e的工作原理,它是利用数据库以与其他一些配置文件如perties,XML Mapping等来为应用程序提供数据持久服务的。它的API中包含以下一些主要的类和接口6 18。1.SessionFactory (net.sf.hibernate.SessionFactory) 是一个数据库映射关系的存映像,它是线程安全的,所以可以为多个线程同时调用产生Session。它是Session的工厂,另外它为事务之间可以重用的数据提供了可供选择的二级缓存。包含已经编译的映射(mappings),是制造session的工厂,可能含有一些可以在各个事务(transaction)之间共享

42、的数据。 2.Session (net.sf.hibernate.Session)是Hibernate框架的运行中心,它被用户程序调用,提供与持久化相关的诸多操作,如加载、添加、查询、更新和删除持久化对象,是实现用户程序持久化工作的主要接口,所以Session被称为持久化管理器。它是单线程的,短寿命的对象,代表了一次会话的过程。实际上是把一个JDBC Connection打包了,它可以包含一些持久化对象的缓存。 3.Persistent Objects and Collections 单线程的,短寿命的对象,包含了各种属性字段以与一些商业逻辑,它们可能仅仅是一些普通的javabeans,但是它

43、必然在某个时刻只能和一个session相关联。 Transaction接口,是用来指定原子操作的单元围,它通过对底层具体的JDBC、JTA等事务进行封装和抽象,形成一个统一的事务操作界面。此外,Hibernate还有两个重要的核心接口:Configuration接口和Query和Criteria接口16。Configuration接口是用来对Hibernate配置和启动。Query和Criteria接口是用来执行对数据库的查询,且支持HQL、SQL多种查询方式,其中HQL是一种面向对象的查询语言。2.3.2 Hibernate优点Hibernate是JDBC的轻量级的对象封装,它是一个独立的对

44、象持久层框架,和App Server,和E没有什么必然的联系17。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个畴的东西,也不存在非此即彼的关系。Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中

45、才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的。由于是对JDBC的轻易级封闭,存消耗少,最快的运行效率。 开发效率高,Eclipse、uilder等主流JAVA集成开发环境对Hibernate有很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人。分布式,安全检查,集群,负载均衡的支持。开源和免费的License,我可以在需要的时候研究源代码,改写源代码,进行功能的定制。 轻量级封装,避免引入过多复杂的问题,调试容易,也减轻程序员的负担。具有可扩展性,API开放,当本

46、身功能不够用的时候,可以自己遍码进行扩展。 开发者活跃,产品有稳定的发展保障。2.4 SQL Server数据库用户对数据库的使用,是通过数据库管理系统提供的语言来实现的。不同的数据库管理系统提供不同的数据库语言。关系数据库管理系统几乎都提供关系数据库标准语言SQL。Microsoft SQL Server 2000是一种功能强大的关系型数据库管理系统,相对于FoxPro、Access等个人数据库布景而言,它是一人功能完备的“正规”数据库管理系统。它包括的支持开发的引擎、标准的SQL语言、扩展的特性(如复制、OLAP、分析)等功能,是一些大型数据库系统如Oracle才具备的特性。而像存储过程、

47、触发器等特性,也是个人数据库所没有的。SQL Server从一开始就被设计成一个客户/服务器DBMS。开发这种客户/服务器的结构是为了能够管理连接到同一个网络中的很多不同的计算机(个人计算机、工作站或者SMP机器)。SQL Server的功能被分为客户端和服务器端。客户端提供了一个或多个用记界面,用以向DBMS提交请求。服务器端(也就是DBMS)处理这些请求,并将处理结果返回到客户端。2.4.1 SQL Server基础SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关

48、系数据库管理系统的标准语言3。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "

49、;Drop"常常被用于完成绝大多数数据库的操作。MS SQL Server 就是用的Transact- SQL。SQL语言有着非常突出的优点,主要是:非过程化语言;统一的语言;是所有关系数据库的公共语言非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优

50、化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员与许多其它类型的终端用户。SQL为许多任务提供了命令,其中包括:查询数据;在表中插入、修改和删除记录;建立、修改和删除数据对象;控制对数据和数据对象的存取;保证数据库一致性和完整性。以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。所有关系数据库的公共语言:由于所有主要的关系数据库管

51、理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。2.4.2 SQL Server语句SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组5:DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据; DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象; DCL(Data Control Language,数据控制语言

52、):用于定义数据库用户的权限。DML组可以细分为以下的几个语句:SELECT:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据;DELETE:用于从数据库中删除数据。DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX。其中数据定义语言DDL是用来创建和修改数据库结构的一种语句,包括 Create、Alter和Drop 语句。 数据操作语言DML包括数据查询与数据更新。数据查询主要是由Select语句完成,这一点不再赘述。而

53、数据更新所造成的风险大大超过数据查询。数据库管理系统必须在更改期保护所存储的数据的一致性,确保有效的数据进入数据库,数据库必须保持一致性,DBMS还必须协调多用户的并行更新,以确保用户和它们的更改不至于影响其它用户的作业。数据查询是关系运算理论在SQL语言中的主要体现,SELECT 语句是SQL查询的基本语句,当我们在对一个数据库进各种各样的操作时,使用的最多的就是数据查询,在以SQL为基础的关系数据库中,使用的最多的就是SELECT查询语句。SELECT语句的完整句法如下:SELECT 目标表的列名或列表达式序列FROM 基本表和(或)视图序列WHERE 行条件表达式GROUP BY 列名序

54、列HAVING 组条件表达式ORDER BY列名 ASCDEAC在SELECT语句中还使用了大量的保留字和通配符以进行各种各样的条件查询。在系统中有大量的查询按钮,其使用了大量的查询语句,而且这些查询语句大部分使用的是模糊查询,所以大量的使用了模式匹配符LIKE(判断值是否与指定的字符通配格式相符)。在包含LIKE的查询语句中可以使用两个通配符:%(百分号):与零个或多个字符组成的字符串匹配;_(下划线):与单个字符匹配。系统中的条件判断往往包含多个条件,这时就需要使用逻辑运算符NOT、AND、OR(用于多条件的逻辑连接),谓词ALL以与保留字DISTINCT等等。做为SELECT语句还有很多

55、的使用方法。使用数据库的目的是为了有效地管理数据,而数据的插入、删除和修改则是必不可少的一个功能。在本系统中就大量地使用了数据插入、删除和修改这三种操作,现做一个简单地介绍。1.数据插入:往数据库的基本表中插入数据使用的是INSERT语句,其方式有两种:一种是元组值的插入,另一种是查询结果的插入。在本系统中使用的是前一种方式,其句法如下:INSERT INTO 基本表名(列表名)VALUES(元组值)Insert 语句还可以将多行数据添加到目标表中去,在这种形式的 Insert 语句中,新行的数据值不是在语句正文中明确地指定的,而是语句中指定的一个数据库查询。添加的值来自数据库自身的行,在某些

56、特定的状态下,这是非常有用的。多行 Insert 语句为拷贝数据提供了一种紧凑而高效的方法,但我在自已做的图书管理系统中没有使用这种方法,我在系统中是使用循环依照上面的用法来完成多个记录的插入。2.数据删除:往数据库的基本表中删除数据使用的是DELETE语句,其句法如下:DELETE FROM 基本表名 WHERE 条件表达式其中删除语句实际上是“SELECT * FROM 基本表名 WHERE 条件表达式”和DELETE操作的结合,每找到一个元组,就把它删除。此外,DELETE语句只能从一个基本表中删除元组,WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。3.数据修改:当需要

57、修改基本表中元组的某些列值时,可以用UPDATE语句实现,其句法如下:UPDATE基本表名SET列名=值表达式,列名=值表达式WHERE条件表达式 Update语句用于更新单表中选定行的一列或多列的值。要更新的目标表在语句中定义,Set子句则指定要更新哪些列并计算它们的值。Update语句总是包含Where语句,而且Update语句比较危险,所以您必须明确地认识到Where语句的重要性,Where语句被用来指定需要更新的行。第三章 系统分析与设计3.1 需求分析基于上课时间有限,有些课程对于学生来说有一定的难度,为了提高学生的学习积极性和为了学生能在课余时间更有效地学习、巩固教学知识,把课堂教育和课后自学有机地结合起来,使教与学相辅相成。为此,我开发了网上学习辅导系统。本系统是一个网上各科教学辅导系统,用户对象主要是学生,师生在网上进行教学与交流。该系统主要由五大模块构成,分别是用户管理、班级管理、课程管理、博客管理和论坛管理等。学生进入该系统地主页并注册成为会员后,根据自己地情况选择要辅导地课程,通过对该课程地教学方法、学科构成、考核基本要求、试题类型、试题难度设置等地分析,学生可以在面对面地课程教学后,在网上进一步掌握课程知识地围与具体表达方式、要点和疑难点以与它地应用。学生还可以进入该系统地教学论坛后,可以查看留言、

温馨提示

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

评论

0/150

提交评论