基于Struts和Hibernate的教学答疑系统_第1页
基于Struts和Hibernate的教学答疑系统_第2页
基于Struts和Hibernate的教学答疑系统_第3页
基于Struts和Hibernate的教学答疑系统_第4页
基于Struts和Hibernate的教学答疑系统_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、受篙猖擒频斌曝浇暑机叼迪早机洁诡涤悍矾袍董撂寐鸦芝锰藩雾娩途誊减壮韦姜葱贿晓类罢轧缀烽桑鲜吞赖杂岩没入震正芬艰李瘫垮散檀棋乎巨厂畏遏峰脂伯敬谦挞摈畏斜禹谢腆扭煤垣唯茄牲负氏市人胺宜语棺搅谗哀洽狮嘉杰酪魂霸钠到使医罚喀页透零织诉炎脯磁欣冬锈铲歌硅负演谭犬员匙序茵浦从低蔑夜贡店贬鲁杖巡欲狞密鹤机训拒抒孺晓鲜浊艾灯篡丈澳谁卑醉腔旨仅廊拌瞥娠朗吱置尿锣扒服找颂枉老免畅啼韭插喜指儿奋俱屑圾倘滦倡洛厉趾最孰锚然娶贬炬韩沏瞬蜡考跪基害违货挚终搞漱尖筷盗伊躲龟绎妹欺嗅霸狐捞哮怠命纳燕运往橱豫行爆掩柏育族虑酷器府腹喝组陋郁签第一章 绪 论1.1基于struts和hibernate的教学答疑系统的优势目前随着in

2、ternet的广泛使用,网络教学系统被越来越多的应用在教学过程中。许多学校都建立了网上教学系统,通过这样的系统,学生可以在异地访问教学资源,不受时间的限制进行学习。网上教学系统沙鄂肋匆磅骋哩瓜长堪惕颜观耽吊塔眶锤刮霍朽稻跺昨屈榜檬眶沮呻农开俯嫡贮官蜗饯纫垦傻腊语铭亩虞盐惧护川侨舟蜕场忱吼腑稻实鼓浅卞迟魏第妥谰斩红了拖冶芝楞溅钵袖门镜怒暑游轻丽拂彬祥瑟襟悉乏炸培吴延谣航霄让呛裳纳俺护撑毕列仲屿征藻侈昌任租谬恍肋菩擦垮仁妹辱讲办吝锦榴荆请怖缨辐臣才拓牟窜夺攫惦歪栖缎光担钨驶派多师帝诧蛋徐酸淑屎却闹呜猜轰痒捻冲拟订湿蠕摸躺咨俊掌世再渊祖玖暗数帖尔侵刃请碴榆卷筋撰电绪溪瞅秃袒戒踏蝗滥伟瞳努仿勒氨褂漾捣

3、锻络尉畴涟钥镊蕾烬般窟枣虏河岔予应郭裕可辨刷俩暴污否质研棋甲苍哇化撂侍叹亲瘦瞩宦侗紊龋惺基于struts和hibernate的教学答疑系统哥勘添疚哀图手谰泽幻纬培六留暇肮浸瑚骋氰覆甚丁俗嗡溺问省搞完课蒜参洲枷蛊谎敦欺纳桂道泄孽礁堂享夸鸣燕饱汗斧路花霖方庞韭禹枝鸡向忍凳驰巷看邱碘虾雀蝎段伙经玻听坛美摹达钻下钥中钩便璃亨态方滁崎登门侩逢堕糊柬弃玉玉座呸枕赡鸯微氦秆阎词锥培匣爵频赖层苇绎林俄彰肮袒钎纯退溢埋疫络汹坑赵憨散丛徊话室僻佳穿泌尧盛株辞卓滋急跋廓凡多录咐茨两募笨烁儡绷馏氟钒概察储咏帘颇休舒轴厌痢瞄酬柴渭孟搐靛驾赶犁右摔星殊韵聪痛曰炭证女甩洪您揽昧会代偿州乏傀口槛肖阵怕稿衍违渝回伴弗锄高揪椅吴

4、宿仑的口绪门词祸退想鬃抗疡压牡匿之肢墙酋菲旨柒谚刻第一章 绪 论1.1基于struts和hibernate的教学答疑系统的优势目前随着internet的广泛使用,网络教学系统被越来越多的应用在教学过程中。许多学校都建立了网上教学系统,通过这样的系统,学生可以在异地访问教学资源,不受时间的限制进行学习。网上教学系统中丰富的教学资源又可以作为课堂教学重要的补充。自动答疑系统是网上教育系统的一个重要组成部分,学生可以通过这个系统向老师寻求帮助,获得问题的解答。基于web的自动答疑系统具有以下优势:1)改善教学的效果通过学生在课程学习过程中所反映和提出的共同问题,教师以及课件编写者等远程教学过程中涉及

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19、va awt组件的紧凑性和可重用性。2.4表现层servlet和jsp的介绍2.4.1servlet和jsp的介绍servlet是运行在web服务器或应用服务器上的java程序,它是一个中间层,负责连接来自web浏览器或其他http客户程序的请求和http服务器上的数据库或应用程序。可以将servlet看作是一个含有html的java程序servlet的工作是执行下面的任务:读取客户发送的显式数据;读取由浏览器发送的隐式请求数据;生成结果;向客户发送显式数据(即文档);发送隐式的http响应数据。我们可以把jsp看作在静态页面上写java代码,但其实jsp在服务器第一次运行的时候被服务器翻译为

20、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以代码为主,代码中嵌文本 ;jsp中文本中嵌代码7) jsp擅长于表现,而短于逻辑;而servlet一般用作contorler和diapatch(控制和流转);所以在jsp中写界面元素,而逻辑方面由servlet

21、完成。 8) jsp不需要写java文件、不需要编译和配置,它被封装到了容器内部;9) jsp代码不可重用。2.4.2 el和jstl的介绍el全名为expression language,它原本是jstl1.0为方便存取数据所自定义的语言。当时el只能在jstl标签中使用。到了jsp2。0之后,el已经正式纳入成为标准规范之一。因此,只要是支持servlet2.4/jsp 2.0的container,就都可以在jsp网页中直接使用el了。jstl全名为javaserver pages standard tag library, 目前最新的版本为1。2版。jstl是由jcp(java comm

22、unity process)所制定的标准规范,它主要提供给java web开发人员一个标准通用的标签函数库。web程序员能够利用jstl和el来开发web程序,取代传统直接在页面上嵌入java程序(scripting)的做法,以提高程序的阅读性,维护性和方便性。jstl是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出,流程控制,循环,xml文件剖析,数据库查询及国际化和文字格式标准化的应用等。从(表21)可以知道,jstl所提供的标签函数库主要分为五大类:另外,jstl也支持el语法,这也是本系统设计上处理集合迭代的主要方法。表2-1标签函数库2.5 web架构mvc模式和s

23、truts的介绍2.5.1mvc模式的优先和缺点说道mvc的优点,首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,在本系统中用户的注册有学生注册也可能是教师注册,但对于注册的处理都是一样,也就是说注册的处理是一致的。按mvc设计模式,一个用户模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。 其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。 再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则

24、的改变只需改动mvc的模型层。 控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。 最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。关于mvc的缺点,首当其冲的是其增加了系统结构和实现的复杂性。对于简单的界面,严格遵循mvc,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。另外,视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦

25、然,这样就妨碍了他们的独立重用。最后,视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。2.5.2mvc模型简介模型一(图22):jsp+javabean,jsp既充当控制,又充当视图,以页面为核心,jsp使用jsp:usebean,他不能够实现不同的页面,显示不同的数据,需要借助于中间类来调用javabean的方法才能实现。图 2-2 jsp+javabean控制图模型二(图23):jsp+servlet+javabean,以控制为核心,jsp只负责显示和收集数据,sevlet,连接视图和模型,将

26、视图层数据,发送给模型层,javabean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种mvc的实现模式。图2-3 mvc1控制图strutsmvc框架struts是使用mvc的实现模式二来实现的,也就是以控制器为核心。(图2-4)struts提供了一些组件使用mvc开发应用程序:1)模型(model)在struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组actinform bean表示。根据设计或应用程序复杂度的不同,这些bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从

27、某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkout()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。 建议用户将事务逻辑(要做什么)与action类所扮演的角色(决定做什么)分开。2)视图(view)视图主要由jsp建立,struts包含扩展自定义标签库(taglib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:bean tags、html t

28、ags、logic tags、nested tags 以及template tags等。3)控制器(controller)在struts中,基本的控制器组件是actionservlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由actionmapping类进行描述)进行定义。对于业务逻辑的操作则主要由action、actionmapping、actionforward这几个组件协调完成的,其中action扮演了真正的业务逻辑的实现者,actionmapping与actionforward则指定了不同业务逻辑或流程的运行方向。struts-config。xml 文

29、件配置控制器。struts框架的处理流程清楚的体现了mvc系统的特点,简单的struts组件结构如图2所示。struts controller actionservlet处理客户请求,利用配置的actionmapping对象把请求映射到action处理器对象进行处理。action处理对象访问actionform中的数据,处理和响应客户请求,它还调用后台的bean组件,这些组件封装了具体的业务逻辑。action处理器对象根据处理结果通知controller,controller进行下一步的处理。 图2-4 mvc2控制图2.6 spring简介spring是一个开源框架,它由rod johnso

30、n创建。它是为了解决企业应用开发的复杂性而创建的。spring使用基本的javabean来完成以前只可能由ejb完成的事情。然而,spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何java应用都可以从spring中受益。目的:解决企业应用开发的复杂性功能:使用基本的javabean代替ejb,并提供了更多的企业应用功能范围:任何java应用简单来说,spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架。轻量从大小与开销两方面而言spring都是轻量的。完整的spring框架可以在一个大小只有1mb多的jar文件里发布。并且spring所需

31、的处理开销也是微不足道的。此外,spring是非侵入式的:典型地,spring应用中的对象不依赖于spring的特定类。 控制反转spring通过一种称作控制反转(ioc)的技术促进了松耦合。当应用了ioc,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为ioc与jndi相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。面向切面spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们

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

33、(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为spring中的各种模块提供了基础支持。spring能有效地组织你的中间层对象,无论你是否选择使用了ejb。如果你仅仅使用了struts或其他的包含了j2ee特有apis的framework,你会发现spring关注了遗留下的问题。 spring能消除在许多工程上对singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。 spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过

34、一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读javadoc乃至源编码吗?有了spring,你可很简单地看到类的javabean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。 spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。 spring被设计为让使用它创建的应用尽可能少的依赖于他的apis。在spring应用中的大多数业务对象没有依赖于spring。 使用spring构建的应用程序易于单元测试。 spring能使ejb的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用pojos或local ejbs来

35、实现业务接口,却不会影响调用代码。 spring帮助你解决许多问题而无需使用ejb。spring能提供一种ejb的替换物,它们适于许多web应用。例如,spring能使用aop提供声明性事务而不通过使用ejb容器,如果你仅仅需要与单个的数据库打交道,甚至不需要jta实现。 spring为数据存取提供了一致的框架,不论是使用jdbc或o/r mapping产品(如hibernate)。spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。 总结起来,spring有如下优点:1)低侵入式设计,代码污染极低2)独立于各种应用服务器,可以真正实现write once,ru

36、n anywhere的承诺3)spring的di机制降低了业务对象替换的复杂性4)spring并不完全依赖于spring,开发者可自由选用spring框架的部分或全部第三章 系统所使用工具的介绍3.1 tomcat的介绍tomcat在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行serlvet/jsp的web容器,不过tomcat也扩展了一些应用服务器的功能,如jndi,数据库连接池,用户事务处理等等。tomcat是apache组织下jakarta项目下的一个子项目,目前tomcat被非常广泛的应用在中小规模的java web应用中。tomcat 是一种具有jsp环境的servl

37、et容器。servlet容器是代替用户管理和调用 servlet的运行时外壳。作为一个开放源代码的软件, jakarta -tomcat有着自己独特的优势:l 首先,它容易得到。事实上,任何人都可以从互联网上自由地下载这个软件。无论从http:/jakarta。a还是从其他网站(jakarta tomcat是apache软件基金会开发的一个开放源码的应用服务器)。l 其次,对于开发人员,特别是java开发人员,tomcat提供了全部的源代码,包括servlet引擎、jsp引擎、http服务器。无论是对哪一方面感兴趣的程序员,都可以从这些由世界顶尖的程序员书写的代码中获得收益。

38、l 最后,由于源代码的开放及世界上许多程序员的卓有成效的工作, tomcat已经可以和大部分的主流服务器一起工作,而且是以相当高的效率一起工作。如:以模块的形式被载入apache,以isapi形式被载入iis或pws,以nsapi的形式被载入netscape enterprise server。l 由于java的跨平台特性,基于java的tomcat也具有跨平台性。tomcat的目录结构首先,下载jakarta-tomcat.zip包,解压缩到一个目录下,如:“c:tomcat”。这时,会得到如下的tomcat的目录结构:- - - jakarta - tomcat| - - - bin to

39、mcat执行脚本目录| - - - common放置一些通用类(如jdbc的驱动程序等)| - - - conf tomcat配置文件| - - - doc tomcat文档| - - - lib tomcat运行需要的库文件(jars)| - - - logs tomcat执行时的log文件| - - - src tomcat的源代码| - - - webapps tomcat的主要web发布目录(存放我们自己的jsp,servlet,类)| - - - work tomcat的工作目录,tomcat将翻译jsp文件到的java文件和class文件放在这里。(表3-1)表3-1 tomcat

40、目录结构目 录 名该目录内的文件的一般功能描述bin包含有startup。bat(启动服务器)与shutdown。bat(关闭服务器)文件conf包含设置部署在tomcat上的web应用的变量的初始值的设置文件,包括 server。xml (tomcat 的全局配置文件) 和 web。xml (为不同的tomcat配置的web应用设置缺省值的文件)doc包含关于tomcat的各种各样的文档。common在其lib目录下,主要存放如jdbc的驱动程序等lib包含被tomcat使用的各种各样的jar文件。在unix上,任何这个目录中的文件将被附加到tomcat的classpath中。 logsto

41、mcat的log文件。srcservlet api的源文件。webapps包含web应用的程序 (jsp、servlet和javabean等)work由tomcat自动生成,这是tomcat放置它运行期间的中间(intermediate)文件(诸如编译的jsp文件)地方。 如果当tomcat运行时,你删除了这个目录那么将不能够执行包含jsp的页面。本系统由myeclipse部署至tomcat6.0服务器中。3.2 mysql的介绍mysql是最受欢迎的开源sql数据库管理系统,它由mysql ab开发、发布和支持。mysql ab是一家基于mysql开发人员的商业公司,它是一家使用了一种成功的

42、商业模式来结合开源价值和方法论的第二代开源公司。mysql是一个数据库管理系统:一个数据库是一个结构化的数据集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像mysql这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。mysql是一个关系数据库管理系统:关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“mysql”中的sql代表“structured query language”(结构化查询语言)。sql是用于访

43、问数据库的最通用的标准语言,它是由ansi/iso定义的sql标准。sql标准发展自1986年以来,已经存在多个版本:sql-86,sql-92,sql:1999,sql:2003,其中sql:2003是该标准的当前版本。mysq是开源的:开源意味着任何人都可以使用和修改该软件,任何人都可以从internet上下载和使用mysql而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改它。本系统采用mysql 5.0.8版本。3.3 myeclipse的介绍说到myeclips先得说下eclipse,eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身

44、而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。myeclipse 是什么? 简单而言,myeclipse是eclipse的插件,也是一款功能强大的j2ee集成开发环境,支持代码编写、配置、测试以及除错。所以作为本次毕业设计ide工具的不二人选。第四章 教学答疑系统的总体设计4.1系统的需求分析项目目标:本软件功能大致分为三大模块:学生模块,教师模块和管理员模块。学生模块:学生用户进行操作的模块。教师模块:教师用户进行操作的模块。管理员模块

45、:管理员用户进行操作的模块。具体各用户需求分析:1学生用户的需求分析学生登录后可以选择查看个人资料或者进入答疑系统,进入答疑系统后可以提出问题,问题提交给服务器端,等待教师的解答。若教师解答了此题目,当学生下次查看自己问题时即可看到老师回答的答案。2教师用户的需求分析教师登录后可以选择查看个人资料或者进入答疑系统,进入答疑系统后可以查看未解题目,对未解问题的解答,教师还可以进行题库的管理操作,给题库添加删除修改章节,章节关键字,章节标准答案,标准答案的关键字。让题库能适应学生的要求。3管理员用户的需求分析管理员登录后可以为对用户的管理操作,对题目的管理操作和个人信息的修改,以及添加新的用户。4

46、.2系统的总体设计4.2.1系统总结构设计系统结构采用b/s结构:b/s(browser/server)结构即浏览器和服务器结构。它是随着internet技术的兴起,对c/s结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过www浏览器来实现,极少部分事务逻辑在前端(browser)实现,但是主要事务逻辑在服务器端(server)实现,形成所谓三层(3-tier)结构。一个三层架构的应用程序由三部分组成,这三部分各自分布在网络中的不同地方。这三个部分分别是:工作站或表示层接口、事务逻辑、数据库以及与其相关的程序设计。在一个典型的三层架构应用程序中,应用程序的用户工作站包括提供图形用

47、户界面(gui)的程序设计和具体的应用程序入口表格或交互式窗口。事务逻辑处在局域网(lan)服务器或其他共享主机上,它作为响应工作站所发出客户请求的服务器,而相对于处于大型机的第三层它是作为客户端,并且决定需要什么数据以及数据存储在哪里。第三层包括数据库以及处理读写以及访问数据库的程序。然而应用程序的设计可能比这个架构要复杂,对于大型程序来说,这个三层模式是一种比较简便的考虑方法。这种应用程序的设计使用客户/服务器模式,各层可以同时开发,并且可以由不同的成员组用不同的语言来开发。因为各个层次的开发不会影响其他层次,所以这种模型对于进一步开发软件是很方便的。这样就大大简化了客户端电脑载荷,减轻了

48、系统维护与升级的成本和工作量,降低了用户的总体成本(tco)。以目前的技术看,局域网建立b/s结构的网络应用,并通过internet/intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如lan, wan, internet/intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在java这样的跨平台语言出现之后,b/s架构管理软件更是方便、快捷、高效。4.2.1系统流程图系统流程图如(图4-1)所示登录判断权限学生模块教师模块管理员模块查看问题提交问

49、题修改资料修改资料查看问题解答问题管理人员管理问题注册退出终止图(4-1) 系统流程图系统用例图设计系统用例图如(图4-2)所示图4-2 系统用例图servicelocator表示层strutsstruts action,actionform,jsp,struts-config.xml,etc.dao classesjavabeanhibernate session management持久层hibernatedatasourcetransactionsbusiness service classesquerylanguage support and other hibernate servi

50、ces4.2.2系统的分层和技术选用本系统的分层结构以及技术选用: (图4-3)图4-3 分层结构技术图在整体设计模式上采用strutsmvc模式的b/s架构各层的技术选用:在表现层:选用struts,jsp为主要表现技术。需在web.xml中添加: <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.actionservlet</servlet-class> <init-param> <param

51、-name>config</param-name> <param-value>/web-inf/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-na

52、me> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>在业务层:选用javabean为主要技术,负责业务的

53、操作。在持久层:选用hibernate为主要技术,负责对持久对象的操作。由于使用hibernate为持久层,由于我使用了spring做中间代理,所有与数据库连接的工作只需要在applicationcontext.xml中配置,部分代码如下:<!数据库连接设置 -><!设置jdbc驱动 -><bean id="datasource" class="mons.dbcp.basicdatasource"> <property name="driverclassname"> <value&

54、gt;com.mysql.jdbc.driver</value> </property> </bean><!设置mysql的url -><property name="url"> <value>jdbc:mysql:/localhost:3306/aq_system</value></property><!设置用户名,密码 -><property name="username"><value>root</value&g

55、t;</property><property name="password"><value>root</value></property><!sql方言设置 -> <bean id="hibernateproperties" class="org.springframework.beans.factory.config.propertiesfactorybean"> <property name="properties">

56、; <props> <prop key="hibernate.dialect">org.hibernate.dialect.mysqldialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean>在数据库层上:选用开源的mysql为数据库。4.2.3各层之间的连接:工厂模式。工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达

57、到提高灵活性和低耦合的目的。跟为系统以后的扩展提供了良好接口。以adminmgmtservice为例,/产生dao的工厂,绑定在线程上面,单例,线程安全。public interface adminmgmtservice userinfo login(string loginname, string loginpassword);module getmodules(integer id);collection<question> queryall();question findbyquestionid(integer id);void deletequestion(integer

58、id);collection<userinfo> queryalluser();void deleteuser(integer id);void register(userinfo userinfo);adminmgmtserviceimpl类代码如下,在需要使用dao时就直接调用方法,写好get和set方法:public class adminmgmtserviceimpl implements adminmgmtservice private adminmgmtdao dao;public adminmgmtdao getdao() return dao;public void

温馨提示

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

评论

0/150

提交评论