收藏 分享(赏)

基于struts和hibernate的教学答疑系统毕业论文.doc

上传人:无敌 文档编号:636070 上传时间:2018-04-16 格式:DOC 页数:56 大小:983KB
下载 相关 举报
基于struts和hibernate的教学答疑系统毕业论文.doc_第1页
第1页 / 共56页
基于struts和hibernate的教学答疑系统毕业论文.doc_第2页
第2页 / 共56页
基于struts和hibernate的教学答疑系统毕业论文.doc_第3页
第3页 / 共56页
基于struts和hibernate的教学答疑系统毕业论文.doc_第4页
第4页 / 共56页
基于struts和hibernate的教学答疑系统毕业论文.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、第一章 绪 论1.1基于 Struts和 Hibernate的教学答疑系统的优势目前随着 Internet 的广泛使用,网络教学系统被越来越多的应用在教学过程中。许多学校都建立了网上教学系统,通过这样的系统,学生可以在异地访问教学资源,不受时间的限制进行学习。网上教学系统中丰富的教学资源又可以作为课堂教学重要的补充。自动答疑系统是网上教育系统的一个重要组成部分,学生可以通过这个系统向老师寻求帮助,获得问题的解答。基于 web 的自动答疑系统具有以下优势:1)改善教学的效果通过学生在课程学习过程中所反映和提出的共同问题,教师以及课件编写者等远程教学过程中涉及的各管理和参与者,能够藉此反馈直接调整

2、教学的内容、进度,改善教学方式等,从而提高效果。2)提高学生学习效率 通过在答疑系统中对一些简单的公共的问题和概念提供详细的解答和解释,可以避免教学中的大量时间花费在基本概念的解释上,从而可以投入进行深入的讨论和交流等。3)丰富教学经验学生在学习过程中产生的问题以及教师等的解答,经过一定时间的积累成为可以重复利用的宝贵资源。其它的学生可以从以往学生的问题中取得收获,教师也能够利用这些资源来有针对性的制定教学内容和进度等。4)改善教学的环境远程教学系统中,整个系统的设计、教学方式的制定也直接影响了教学效果。从学生的反馈可以调整它的结构,改善现有系统的不足。作为远程教学的一个重要的辅助系统,自动答

3、疑系统可以直接与课程学习、考试等系统结合在一起,成为其中不可分割的一部分,也可以在实时的教学模式中使用,作为课后学生答疑、师生交流或教师获得学生反馈、衡量教学效果的一个配套系统。1.2 我的研究工作为了顺利完成基于 Struts 和 Hibernate 的教学答疑系统的设计与实现,我在毕业设计期间所做的研究工作如下:1)研究了相关文献中关于基于 Struts 和 Hibernate 的教学自动答疑系统的内容;2)研究了相关文献中关于关键字匹配算法方面的的内容;3)学习 Core Java 等各种技术;4)制定了基于 web 的网络课程答疑系统的总体设计方案;5)设计了本系统的各模块的功能和实现

4、细则;6)设计了底层数据库的实现;7)学习,设计了 ajax,javascript 校验第二章 系统设计中各种技术的介绍2.1 核心 Java介绍在经历了以大型机为代表的集中计算模式和以 PC 机为代表的分散计算模式之后,互联网的出现使得计算模式进入了网络计算时代。网络计算模式的一个特点是计算机是异构的,即计算机的类型和操作系统是不一样的,例如 SUN 工作站的硬件是SPARC 体系,软件是 UNIX 中的 Solaris 操作系统,而 PC 机的硬件是 INTEL 体系,操作系统是 windows 或者是 Linux,因此相应的编程语言基本上只是适用于单机系统,例如 COBOL、FORTRA

5、N、 C、C 等等;网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移,这就迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中的各种计算机上能够正常运行,java 就是在这种需求下应运而生的。正是因为 java 语言符合了互联网时代的发展要求,才使它获得了巨大的成功。俗话说:“有心栽花花不成,无心插柳柳成荫“。Sun 公司绝没想到本想用于消费电子产品开发的编程语言却率先在网络中得到了广泛应用,但是也可以说是“东方不亮西方亮“ ,正是因为 java 语言在设计目标上的正确性使得 java 语言“是金字总会发光的“。C 语言是面向过程的语言,也是使用率非常高的语言;而面向对

6、象的思想引入到编程语言之后,C 语言就被改造成为面向对象的 C语言,得到了广泛的应用。但是C语言必须兼容 C 语言,因此 C语言是面向过程和面向对象混合的语言。java语言产生于 C语言之后,是完全的面向对象的编程语言,充分吸取了 C语言的优点,采用了程序员所熟悉的 C 和 C语言的许多语法,同时又去掉了 C 语言中指针、内存申请和释放等影响程序健壮性的部分,可以说 java 语言是站在 C语言这个“ 巨人的肩膀上“ 前进的。java 语言的一个目标是跨平台,因此采用了解释执行而不是编译执行的运行环境,在执行过程中根据所在的不同的硬件平台把程序解释为当前的机器码,实现跨平台运行。而动态下载程序

7、代码的机制完全是为了适应网络计算的特点,程序可以根据需要把代码实时的从服务器中下载过来执行,在此之前还没有任何一种语言能够支持这一点。综合上述,Java 的生命力体现在如下方面:1.Java 产生与流行是 InterNet 发展的客观要求。2.是一门各方面性能都很好的编程语言,它的基本特点是简单,面向对象,分布式,解释的,健壮的,完全的,结构中立的,可移植的,性能很优异的,多线程的,动态的,适合的Internet 环境上开发应用系统。3.Java 可以制作大部分网络应用程序系统,而且与如今流行的 WWW 浏览器结合很好。4.Java 不仅仅是一种各方,更重要的是一种区别于传统系统,遵守“ 网络

8、就是计算机“信条的平台技术。Java 平台将面向对象系统扩展成包括程序和数据的网络计算机(NC),而这个平台的核心就是 Java 虚拟机,许多使 Java 成为万能开发平台的属性都源于 Java虚拟机的概念和实现。JAVA 面向对象的思想JAVA 是纯面向对象编程,面向对象的三大原则封装,继承,多态。下面对这三大原则的介绍:封装封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问。对包装器内部代码与数据的访问通过一个明确定义的接口来控制。封装代码的好处是每个人都知道怎样访问代码,

9、进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用。在 JAVA 中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码)。一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的。所以对象也叫做类的实例。在定义一个类时,需要指定构成该类的代码与数据。特别是,类所定义的对象叫做成员变量或实例变量。操作数据的代码叫做成员方法。方法定义怎样使用成员变量,这意味着类的行为和接口要由操作实例数据的方法来定义。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。所以JAVA 中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道

10、或可以知道的每件东西。私有的方法数据只能通过该类的成员代码来访问。这就可以确保不会发生不希望的事情。继承继承是指一个对象从另一个对象中获得属性的过程。是面向对象程序设计的三大原则之二,它支持按层次分类的概念。例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种。如果不使用层次的概念,每个对象需要明确定义各自的全部特征。通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的 各个属性,然后从父类中继承它的通用属性。因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例。一个深度继承的子类将继承它在类层次中的每个祖先的所有属性。继承与封装可以互相作用。如果一个

11、给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性。这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念。新的子类继承其所有祖先的所有属性。子类和系统中的其他代码不会产生无法预料的交互作用。多态多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用“一个接口,多个方法“来描述。可以通过方法的参数和类型引用。2.2 持久层的 HIBERNATE的介绍Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级的对象封装,使 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从 Jav

12、a 类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用 JDBC 和 SQL 来手工操作数据库,Hibernate 可以大大减少操作数据库的工作量。另外 Hibernate 可以利用代理模式来简化载入类的过程,这将大大减少利用 Hibernate QL 从数据库提取数据的代码的编写量,从而节约开发时间和开发成本 Hibernate 可以和多种 Web 服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。Hibernate 具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供 JDBC 连接,并且自行管理事务,这种方式

13、使用了 Hibernate 的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的 JDBC/JTA API 都被抽象了,Hibernate 会替你照管所有的细节。 在本次系统设计中所有的DAO都应用了Hibernate技术,大部分利用HQL语言对数据库进行增删查改,其中只有小部分使用了SQL进行查询,相比SQL语言而言,HQL使人很直观的了解所进行的操作,更为对数据库底层不熟悉的人提供了极大的方便。2.3业务层的 JAVABEAN的介绍JavaBean 是一种 JAVA 语言写成的可重用组件。为写成 JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans

14、 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他 Java 类可以通过自省机制发现和操作这些 JavaBean 属性。用户可以使用 JavaBean 将功能、处理、值、数据库访问和其他任何可以用 java 代码创造的对象进行打包,并且其他的开发者可以通过内部的 JSP 页面、Servlet 、其他JavaBean、applet 程序或者应用来使用这些对象。用户可以认为 JavaBean 提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。虽然 JavaBean 和 Java 之间已经有了明确的界限,但在某些方面 JavaBean 和 Jav

15、a之间仍然存在着非常明显的混淆。Java 确实是能够为用户创建可重用的对象,但它却没有管理这些对象相互作用的规则或标准。JavaBean 通过指定定义对象之间交互作用的机制,以及大部分对象需要支持的常用行为,如持久性和实际处理等,建立了自己需要的组件模型。虽然当前的 Java 组件模型也可以运行得很好,但在传送真正的可重用性和交互操作性上仍然非常有限,Java 用户需要做的最多的一件事就是创建 applet 并使得它们在Web 页面上相互通讯,这并非易事。 JavaBean 提供了一个框架包,使用这个包进行通讯就容易得多了。JavaBean 组件能够通过定义好的标准属性改进性能。总体而言,Ja

16、vaBean 充分发展了 Java applet 的功能,并结合了 Java AWT 组件的紧凑性和可重用性。2.4表现层 Servlet和 JSP的介绍2.4.1Servlet和 JSP的介绍Servlet 是运行在 WEB 服务器或应用服务器上的 Java 程序,它是一个中间层,负责连接来自 Web 浏览器或其他 HTTP 客户程序的请求和 HTTP 服务器上的数据库或应用程序。可以将 Servlet 看作是一个含有 HTML 的 JAVA 程序 Servlet 的工作是执行下面的任务:读取客户发送的显式数据;读取由浏览器发送的隐式请求数据;生成结果;向客户发送显式数据(即文档) ;发送隐

17、式的 HTTP 响应数据。我们可以把 JSP 看作在静态页面上写 Java 代码,但其实 JSP 在服务器第一次运行的时候被服务器翻译为 Servlet,正真运行的是翻译后的 Servlet。JSp 和 Servlet 的区别就如下几点 :1) JSP 以文本为主,主要用于画界面2) JSP 可以人工扩充,而 servlet 是固定的3) JSP 内核是 servlet,所以也是基于 HTTP 协议的请求响应循环4) 由 HTML(Css、xml) 、java code、JSP 标签组成5) JSP 有自定义标签(ASP 没有)6) CGI 和 Servlet 以代码为主,代码中嵌文本 ;JS

18、P 中文本中嵌代码7) JSP 擅长于表现,而短于逻辑;而 Servlet 一般用作 Contorler 和 diapatch(控制和流转);所以在 JSP 中写界面元素,而逻辑方面由 Servlet 完成。 8) JSP 不需要写 java 文件、不需要编译和配置,它被封装到了容器内部;9) JSP 代码不可重用。2.4.2 EL和 JSTL的介绍EL 全名为 Expression Language,它原本是 JSTL1.0 为方便存取数据所自定义的语言。当时 EL 只能在 JSTL 标签中使用。到了 JSP2。0 之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持servlet2.

19、4/JSP 2.0 的 Container,就都可以在 JSP 网页中直接使用 EL 了。JSTL 全名为 JavaServer Pages Standard Tag Library, 目前最新的版本为 1。2 版。JSTL 是由 JCP(Java Community Process)所制定的标准规范,它主要提供给 Java Web开发人员一个标准通用的标签函数库。Web 程序员能够利用 JSTL 和 EL 来开发 Web 程序,取代传统直接在页面上嵌入Java 程序(Scripting)的做法,以提高程序的阅读性,维护性和方便性。JSTL 是一个标准的已制定好的标签库,可以应用于各种领域,如

20、:基本输入输出,流程控制,循环,XML 文件剖析,数据库查询及国际化和文字格式标准化的应用等。从(表 21)可以知道,JSTL 所提供的标签函数库主要分为五大类:另外,JSTL 也支持EL 语法,这也是本系统设计上处理集合迭代的主要方法。表 2-1标签函数库2.5 WEB架构 MVC模式和 STRUTS的介绍2.5.1MVC模式的优先和缺点说道 MVC 的优点,首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,在本系统中用户的注册有学生注册也可能是教师注册,但对于注册的处理都是一样,也就是说注册的处理是一致的。按 MVC 设计模式

21、,一个用户模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。 其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。 再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动 MVC 的模型层。 控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。 最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。关于

22、 MVC 的缺点,首当其冲的是其增加了系统结构和实现的复杂性。对于简单的界面,严格遵循 MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。另外,视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。最后,视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。2.5.2MVC模型简介模型一(图 22):JSP+JavaBean,JSP 既充当控制,又充当视图,以

23、页面为核心,JSP 使用 jsp:useBean,他不能够实现不同的页面,显示不同的数据,需要借助于中间类来调用 JavaBean 的方法才能实现。图 2-2 JSP+JavaBean 控制图模型二(图 23):JSP+Servlet+JavaBean ,以控制为核心, JSP 只负责显示和收集数据,sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种 MVC 的实现模式。图 2-3 MVC1控制图StrutsMVC 框架Struts 是使用 MVC 的实现模式二来实现的,也就是

24、以控制器为核心。(图 2-4)Struts 提供了一些组件使用 MVC 开发应用程序:1)模型(Model)在 Struts 的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组 Actinform Bean 表示。根据设计或应用程序复杂度的不同,这些 Bean 可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的 bean 调用。比如购物车 bean,它拥有用户购买商品的信息,可能还有 checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。

25、小型程序中,操作可能会被内嵌在 Action 类,它是 struts 框架中控制器角色的一部分。当逻辑简单时这个方法很适合。 建议用户将事务逻辑(要做什么)与 Action 类所扮演的角色(决定做什么)分开。2)视图(View)视图主要由 JSP 建立,struts 包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及 Template Tags 等。3)控制器(Controller)在 struts 中,基本的控制器组件是 ActionServlet 类中的实例

26、 servelt,实际使用的 servlet 在配置文件中由一组映射(由 ActionMapping 类进行描述)进行定义。对于业务逻辑的操作则主要由 Action、ActionMapping、ActionForward 这几个组件协调完成的,其中 Action 扮演了真正的业务逻辑的实现者,ActionMapping 与ActionForward 则指定了不同业务逻辑或流程的运行方向。struts-config。xml 文件配置控制器。Struts 框架的处理流程清楚的体现了 MVC 系统的特点,简单的 Struts 组件结构如图 2 所示。Struts Controller ActionServlet 处理客户请求,利用配置的ActionMapping 对象把请求映射到 Action 处理器对象进行处理。Action 处理对象访问ActionForm 中的数据,处理和响应客户请求,它还调用后台的 Bean 组件,这些组件封装了具体的业务逻辑。Action 处理器对象根据处理结果通知 Controller,Controller进行下一步的处理。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报