摘要
答疑是教学一个重要环节,在传统的教学模式下,答疑通常是通过老师和学生面对面进行交流,此模式使得答疑在实际教学难以执行。而网络教学模式就打破了传统模式在时间和空间上的限制,同学们可以自主安排时间和计划进行网上学习。因此网络学习平台中答疑系统显得尤为重要。
本文首先结合闽江学院计算机科学系程序设计类课程教学的实际情况,应用软件开发的原理,沿着系统分析、系统设计和系统实现展开论述。对Struts、Spring和Hibernate框架进行了分析,结合Struts、Spring和Hibernate的各自特点,将这三种开源框架有效的整合成为SSH(struts+spring+hibernate)通用架构。然后在此基础上,选用SSH架构联合应用作为本系统开发架构,充分发挥了SSH框架各自的优势,解决了Web应用系统开发过程中由于系统结构复杂所带来的一些问题。本系统还结合全文检索引擎理论,采用lucene搜索功能进行设计并实现智能答疑功能,使得答疑功能更加人性化。本系统目前已经系局域网测试,测试结果表明,该系统实现了设计目标,性能可靠,取得了令人满意的应用效果。

【关键词】:在线答疑、智能答疑、struts、spring、hibernate、lucene

Abstract

Question-answering is an important part of teaching, the traditional teaching mode, answering questions usually through the teacher and student face-to-face communication, this model makes answering questions in actual teaching difficult to enforce. And the network teaching pattern break the traditional model on time and space constraints, students can independently arrange time and plan for online learning. Therefore network learning platform question-answering system is particularly important.
In this system development, after careful selection, adopted SSH (struts + spring + hibernate) architecture doxycline. Firstly combine minjiang of computer science program design course teaching actual situation, application software development, along the principle of system analysis and systems design and system discussed. Firstly the Struts, and Hibernate framework are analyzed. And on this basis, the design and development of programming courses in the digital network platform construction program, for example, are Struts, combined with the respective characteristic of Hibernate, these three types of open source framework effective integration become SSH (Struts +Spring+ Hibernate) are common frame. Give full play to the advantages of SSH framework solved the Web application system development process due to the system structure is complex brings some problems. The system also combined with full text search engine theories, using lucene search function designs and realizes intelligent question-answering functions, making question-answering function more humane. This system has been department LAN, test results show that this system realizes the design goal, reliable performance, has satisfied effect.

Keywords: online FAQ、Intelligent Answering、struts、spring、hibernate、lucene

目录
摘要 I
目录 1
第一章 绪论 1
1.1课题研究的背景和意义 1
1.2国内外现状 1
1.2.1国内现状 1
1.2.2国外现状 3
1.3 本文的主要研究内容 4
1.4 本文的结构 4
第二章 相关技术介绍 5
2.1 J2EE技术 5
2.2 MyEclipse开发环境 5
2.3 Tomcat应用服务器 6
2.4 MySQL数据库 6
2.5 J2EE平台上的框架分析 7
2.5.1框架的引入 7
2.5.2 Struts框架 7
2.5.3 Spring框架 9
2.5.4 Hibernate框架 10
2.6 SSH框架整合 11
2.6.1 SSH框架整合思想 11
2.6.2 SSH框架实现 12
2.7 本章小结 15
第三章 在线答疑系统的需求分析和总体设计 16
3.1 答疑系统主要角色 16
3.2 系统功能描述和总体设计 16
3.2.1 前台系统功能描述及设计 16
3.2.2 后台系统功能设计及描述 17
3.3数据库设计 18
3.3.1 管理员信息表(dayi_admin) 18
3.3.2用户信息表(dayi_user) 19
3.3.3课程表(dayi_course) 19
3.3.4问题表(dayi_problem) 19
3.3.5答案表(dayi_answer) 20
3.3.6公告表(dayi_notice) 20
3.4 本章小结 20
第四章 框架与系统整合的实现 21
4.1系统结构设计 21
4.2 POJO层(数据持久化对象层)的实现 22
4.4.1编写POJO类 22
4.4.2编写POJO映射文件 23
4.4.3连接数据库 24
4.3 DAO(数据访问对象层)的实现 25
4.3.1编写DAO接口 26
4.3.2编写实现类 26
4.4 Service层(业务逻辑层)的实现 27
4.5 Web层的实现 28
4.6本章总结 28
第五章 智能答疑搜索子系统 29
5.1全文搜索技术的引入 29
5.2 全文搜索技术Lucene介绍 29
5.3 全文索引技术的倒排序原理 30
5.4 全文搜索技术与数据库技术的比较 31
5.5 本章小结 33
第六章 论文总结与技术展望 34
参考文献 35
致谢 37

第一章 绪论
1.1课题研究的背景和意义
随着教学改革的深入和计算机技术与应用的发展,传统的教学模式已经难以满足现代社会对高等教育的需求,网络教学因具有实时交互功能己成为计算机网络和多媒体技术相结合的新一代教育技术。在此基础上多样化的教学模式被开发使用并取得了较好成果[1]。
答疑解惑在传播知识的过程中是很重要很关键的一环,但在传统的教学模式下,答疑通常是通过老师和学生之间一对一的交流沟通来完成的,这种方式要求双方要面对面进行交流,有时学生遇到一些疑问或困惑就只能等待和老师进行交流,这种情况就造成了问题解决的时间比较长效率比较低。如果在一个时间段双方中有一方可能没时间,加上可能同时存在着好几个疑问,只能推迟到双方都有时间进行交流,这样日积月累,问题就越来越多,从而就造成了学生对自己失去信心,学习上缺少主动性;另一方面,如果有多个学生对于同一问题存在疑问那么老师就必须进行多次的答疑,这在无形中就增加了老师的工作量。而网络教学模式就打破了传统模式在时间和空间上的限制,同学们可以自主安排时间和计划进行网上学习。可以促进师生之间、学生之间的充分讨论,这对于提高教学质量、促进学生高级学习能力的挖掘是十分重要的。可见,答疑系统的研究和开发是现代网上教学的重要环节,对实现高质量的网上教学具有深远的实际意义。
闽江学院计算机系根据自身的特点、课程设置以及教学管理,以程序设计类课程为试点,采用数字化网络平台进行信息化建设。它所带来的教学系统的优势是不可估量的,值得我们研究和推广。
本文研究的主要目的为实现一个基于SSH架构的答疑子系统以此来实现一个教师和学生交答疑流的平台,从而也进一步深化教学改革,提高教学管理水平。
1.2国内外现状
1.2.1国内现状
自从90年代互联网的出现,到现在的普及,互联网现在正在改变着人们的生活,通过互联网进行教学也被全国各高校所接受。进入信息时代以来,虽然我国教学在在线答疑这一方面的研究起步比较晚,但是发展速度快,目前国内也已经有很多大学开发出自己的网络答疑系统,大致可以分为这几类[2][3]:
(1)采用传统的Intemet工具,如Email,BBS,Chat,FAQ等。这种方式虽然实现简单,但无法适应网络答疑中大规模、动态性、实时性的特点。
(2)基于关键词的答疑方式,即采用关键词或者关键词的逻辑组合作为提问方式。这种方式虽然可以在一定程度上解决网络答疑中大规模、动态性、实时性的需求问题,但由于汉语词汇本身在含义上存在不一致性,使这种单纯依靠字符串机械匹配的检索方式必然导致结果集合的错误放大或缩小。此外,这种方式要求用户具备一定的问题背景知识、关键词抽取能力,以及逻辑组合能力,因而限制了用户的使用。
(3)基于基于于自然语言理解的答疑系统。它允许用户采用自然语言进行提问,系统对输入的自然语言问句进行语法和语义分析,根据分析结果在问题库中进行匹配,并将匹配后的答案集返回给用户。该方式不仅提供了较好的人机接口,而且提高了答疑结果的准确性,是网络答疑的发展方向。如上海交通大学的AnswerWeb、江苏理工大学的远程辅导答疑系统、国防科技大学开发的自动问题回答子系统、清华大学教育软件研究中心开发。
但是也存在着一些不足之处,主要表现为:
1.系统缺乏实时性
在整个系统中,除了智能答疑这一模块的能够快速及时的解答同学们的疑或
外,大部分的系统都不能及时的解决同学的问题,要等到教师或者知道答案的同学看到、收到同学发来的信息时才能做出相应的解释,这存在着很长一段时间的滞后性,严重影响了同学学习的积极性。没有很好的体现网络教学的优点
2.系统缺乏交互性
国内大部分的答疑系统中,能提供给同学的结果也杂乱无章的,还是要靠学生自己去整理。学习者也只有通过提问问题才能还老师进行交流,教师也只有等待同学们进行提问了才能了解同学们的学习情况还存在着的问题,缺少能够交流的平台。
3.系统的表现形式不够丰富
目前的答疑系统的表现形式大都局限于文本,对于视频,flash等形式基本上都不具备,但是随着科技的发展动画、视频、声音等多媒体特性将能够应用起来。
4.系统智能性不够
目前的自动答疑系统一般都是采取通过关键词或关键词的逻辑组合进行查询的方式,智能性不高。一方面,学生要具备一定的抽词能力和逻辑组合能力,对部分学生的使用造成一定的困难;另一方面,由于系统缺乏评价学生提问的真正意图的必备信息,系统就无法优化或再加工系统的问题答案库资源,造成查询结果太多而且无序,无法适应应用的需要[4]。
与发达国家相比,应该说我们是相对落后的。
1.2.2国外现状
国外教学网站中答疑系统特别是美国相对于我国来说会早10~20年时间,在人机交互,实时性方面都比较成熟,在智能答疑这一模块尤为突出。
美国是世界上现代远程教育发展最早的国家,可以说是现代远程教育的发源地,也是目前发展规模最大的国家之一。就采用现代化教育手段来说,美国也一直处于国际领先地位。大多数美国高等院校目前都提供部分远程学习课程,其中大都包含在线教学成分[4]。
国外答疑系统与国内的答疑系统相比具有如下特点[5]:
1.系统的独立性强
在国外大部分的在线答疑系统都不依赖与网络教育平台,提问者借助系统寻求答案可能是为了解决他们在相应学科中的问题,也可能仅仅是为了满足他们的好奇心,或者是为了寻找作业或任务中需要的资源。具有很强的独立性。
2.系统的内容丰富
国外的在线答疑系统存在着一个突出特点是具有资源库的支持,资源库中保存了丰富大内容可供学习者进行学习和查询,也能够提供与问题相关的答案。
3.系统的智能性。国外答疑系统的智能性主要体现在人机理解的自然语言接口和相应的问题查询和反馈上,但是国外系统在基于自然语言的提问方面作的比国内更加准确和人性化。如带有问题确认的功能,主要原因是国外在问题处理部件上增加了问题类型判断,以及增加了答案处理和解释部件,因此不但保证了系统对问题的更准确的理解。也使呈现的答案简明扼要[5]。
4.系统成熟的技术背景
现在国内大部分流行的技术都来源于国外,他们有着很强的技术背景,这些技术支持为答疑系统提供了有力的保障。提高了系统的准确性和效率性使整个系统更加稳定,易用。
1.3 本文的主要研究内容
通过本文所做的工作,作者完成了闽江学院计算机科学系在线答疑系统的需求分析、系统设计、开发、测试、上线运行。在这个过程中,选用了JAVA开发环境,采用了SSH架构,通过Struts+Spring+Hibernate的联合应用,取得了比较好的效果。同时,形成了对该架构的深入认识,对学校其它软件的应用和开发建立了稳定的框架基础。
Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文搜索引擎,而是一个全文检索引擎框架,提供了完整的查询引擎和索引引擎,部分温饱分析引擎。为开发人员提供了一套简单易用的工具包,以方便在目标系统中实现全文检索功能。本系统运用Lucene检索引擎工具包实现了分词搜索功能。
1.4 本文的结构
论文全文共6章。围绕着基于SSH架构的在线答疑系统的设计与实现,论文的各章节组织如下:
第1章绪论。介绍课题的研究背景、意义及现状。国内外现状,阐述了课题的主要研究内容及本文结构。
第2章相关技术。介绍了J2EE技术、MyEclipse开发环境、tomcat应用服务器、mysql数据库及Struts、Spring、Hibernate的核心思想和体系架构。SSH框架整合的思想、概念和结构及整合的全过程。
第3章需求分析与功能设计。介绍在线答疑系统的需求分析和、体设计设计及数据库的设计。
第4章框架与系统整合应用实例。结合在线答疑系统,介绍了SSH架构的应用。
弟5章智能答疑子系统的实现。介绍全文收索技术Lucene、倒排序原理及全文收索技术和数据库的比较。
第6章总结与展望。对SSH架构的应用效果进行了总结,对其应用前景进行了展望。

第二章 相关技术介绍
2.1 J2EE技术
J2EE即Java2 Platform Enterprise Edition[6],基于于Java编程语言及Java2平台标准版,是一个开发分布式企业级应用的规范和标准。简化企业解决应用系统的开发、部署和管理等相关复杂问题。J2EE平台具有一种工业化标准的API,可以方便使用。如存取数据库的JDBC API[6]以及能在Internet中保护数据的安全模式等,同时还提供了EJB、Java servlet API、JSP以XML技术的全面支持[12]。
J2EE具有可用性、安全性、可扩展性和可靠性为系统的开发提供了非常良好的机制。由于Java语言的跨平台特性,J2EE提供了在企业计算中所需要的所有服务且定义了诸多简单易用的接口如JDBC、JNDI、Java Mail[6]等,可以实现编写一次代码到处运行的效果,方便了企业开发;J2EE平台提供的多层分布式应用模型、组件重用、一致化的安全模型以及灵活的事务控制,加快了企业应用的设计和开发,可以快速建立N层结构的分布式企业应用,也较好地解决了C/S(client/server)结构可扩充性差、可维护性差、安全性差和部署麻烦等弊端。J2EE平台定义了四个不同的层[7][8]:(1)客户层:客户层运行在客户端机器上,用于与用户进行交互以及显示根据特定业务规则进行计算后得到的结果。在基于web的J2EE客户端应用中,用户浏览器在客户层中运行,并从web服务器中加载静态html页面或由JSP、Servlet动态生成的html页面。(2)web层:这一层由web容器运行。是由JSP页面和servlet构成。(3)业务层:这一层由EJB容器运行。包含以EJB形式来提供业务逻辑的组件。支持EJB、JMS、JTA等服务和技术。(4)企业信息系统层:这一层由数据库服务器运行。包含企业内部传统的信息系统如财务系统等,其特点是有数据库系统的支持。
2.2 MyEclipse开发环境
本答疑系统采用MyEclipse开发环境来进行开发。MyEclipse是一个是非常优秀的用于开发Java、J2EE的eclipse插件集合,功能强大。作为java开发的流行工具,MyEclipse可以提供Java程序的编辑、调试、编译、运行等功能,支持几乎所有的Java技术开发,为开发人员进行软件开发提高了开发效率[10].
2.3 Tomcat应用服务器
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成[9]。
J2EE只是一个技术规范,要想进行J2EE应用程序开发把JSP、Servlet能够成功的展现给用户,就必须使用实现了J2EE技术的应用服务器,Tomcat就是一个很优秀的应用服务器产品。Tomcat是完全遵循J2EE规范的应用服务器,为企业构建基于J2EE的应用程序提供了很好的平台。Tomcat 是一个轻量级应用服务器,支持面向企业级的、多层次的、可集群的应用,在中小型系统和并发访问用户不是很多的场合下被普遍使用[9],答疑系统采用Tomcat作为应用服务器。
2.4 MySQL数据库
MySQL是一个小型关系型数据库服务器,与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限等。但其凭借着占用资源小,代码开发等优式在众多的数据库中脱颖而出,被大多数程序员所认可进行一些小型软件的开发。MySQL支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询。MySQL数据库的主要优点如下[11]:
(1)MySql的核心程序采用多线程编程。可以灵活地为用户提供服务,充分利用CPU资源。
(2)MySql使用C/C++编写,在不同的操作系统下测试,这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。
(3)MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。
(4)MySql为多种编程语言提供了API,如java、c/c++/php等从而使得MySql的应用被大大扩展。
(5)MySql具有强的查询功能,支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,提高了查询效率。

2.5 J2EE平台上的框架分析
2.5.1框架的引入
随着软件项目开发的不断发展,开发人员在进行软件开发过程中发现很多的程序代码不止出现一次,在很多场合都使用上了,在不同的项目之间也存在着类似的代码。因此人们通过代码可重用性设计就将那些基本业务相同的代码进行封装设计,将其抽取成一个个的功能供用户去使用,从而就框架就因运而生。著名的软件设计大师Ralph Johnson对框架进行了如下的定义:框架是整个系统或系统的一部分的可重用设计,由一组抽象的类及其实例问的相互作用方式组成。一个框架就是一个可复用的设计构件,它具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。
框架的使用减小了J2EE的开发难度,提高了可重用性,提高效率。目前J2EE业界出现了很多优秀的框架,例如Struts,Spring,Hibernate等。提供大量的功能供用户去使用。它们具有以下优点[13]:
1.扩展性好,可以满足Web项目在将来可以不断地升级,适应新的项目需求。
2.开发效率高,开发人员可以不去处理那些繁杂的代码将它交给框架来实现,只注重具体的业务逻辑。提高开发效率。
3.框架通过xml文件进行配置,可以减少系统的代码量,为系统省去一下不必要的开销。
4.降低系统各模块之间的耦合度
2.5.2 Struts框架
Struts框架目前有两个版本Struts1和Struts2,这两个版本的核心有很大的区别,Struts1以ActionServlet作为核心控制器,整个流程由客户端请求驱动。当客户端发送请求时,初始化完ActionForm请求将被Struts1核心控制器ActionServlet拦截,ActionServlet根据请求决定是否需要调用业务逻辑控制器处理用户请求,当用户请求处理完成后,其处理结果通过JSP呈现给用户[7]。
Struts2在Struts1基础上,融合了WebWork框架而形成的Struts2。Struts2虽然是在Strutsl的基础上发展起来的,但是实质上是以WebWork为核心,注入了WebWork的设计思想,统一了Struts1和WebWork这两个框架。Struts2摒弃了Struts1中的ActionForm,采用大量的拦截器来处理用户请求,从而使用户的业务逻辑控制器与Servlet API完全分离。Struts2以FilterDispatcher为核心控制器进行拦截,用户通过控制器选择不同的Action类来进行具体的操作,在Action类中所有的Servlet对象(如Request、Response和Session等)仍然可用.具体工作流程如图2-1所示[17]:


Struts2还提供了丰富的标签库,可以在JSP页面中灵活地将数据展示给用户。大大提高开发效率、页面的维护性和代码的可读性。
MVC是web程序开发过程中常用的一种设计模式,应用程序分成三个核心部件:模型(Model)、视图(View)、控制器(Controller)。采用MVC设计模式,可以降低各层之间的耦合度,提高系统的维护性。不管是Struts1还是Struts2实质上就是在JSPModel2的基础实现了MVC设计模式的WEB Framework。MVC的工作原理如图2-2:

Struts框架是MVC模式的一种具体的实现,Struts程序框架既继承了MVC框架的各项特性并根据J2EE的特点,又做了相应的变化与扩展。Struts作为MVC模式的经典实现,对Model、View和Controller都提供了对应的实现组件。
2.5.3 Spring框架
Spring是由Rod Johnson创建,一个应用于J2EE领域著名的轻量级应用程序框架Spring,其两大核心为IOC(Inversion of Control,控制反转)和AOP(Aspects-OrientedProgramming,面向方面编程),同时Spring还提供了对事务、DAO层的支持等。Spring与Struts、Hibernate无缝的进行结合实现真正意义上的三层架构,是业务层中的一个十分优秀的框架[15]。
Spring以轻量级、非入侵式的服务框架著称。提供了极大的灵活性,把选择的权利留给开发者,允许用户使用其中的单项功能。Spring坚持一个原则:绝不做重复性的实现。大大的简化了开发时间和成本,降低了系统的耦合性。
Spring属于一个分层架构,具备了视图、业务、持久三个层次。由7个模块组成,模块构建在核心容器之上,核心容器管理对象的加载、生成、维护Bean和Bean之间的依赖关系。其基本结构如图2-3所示:[3]

图2-3 Spring框架组件结构图
通过图2-3所示,Spring框架是由7个模块,每个模块都可以单独使用也可以与其它模块一起使用。每个模块的功能如下所述[15]:
Spring Core 核心容器:提供Sprig框架的基本功能。BeanFactory是它的主要组件,是工厂模式的实现。
Spring上下文:Spring上下文是一个配置文件,提供了一些特色和更高级的服务。如:读取Resource File更加方便、国际化的支持、支持文字消息解析
Spring AOP(Aspected Oriented Programming)面向切面编程,解决OOP和过程化方法的面向横切面(crosscut)问题如:事务、安全、日志等横切关注。
Spring DAO:为JDBC DAO抽象层提供了有意义功能,及与hibernate结合对数据库操作一系列的功能,极大地降低了异常代码数量。
Spring ORM:Spring框架中插入了若干个ORM框架,用以提供ORM的对象关系,其中包括JDO、I-Iibemate和iBatis SQL Map。
Spring Web模块:该模块是建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web模块还简化了处理多部分请求,以及将请求参数绑定到域对象的工作。
Spring MVC框架:MVC容纳了大量视图技术,其中包括JSP,Velocity,Tiles,iText和POI等。
2.5.4 Hibernate框架
Hibernate是一个开源的对象/关系数据库映射ORM(Object/Relational Mapping,简称ORM)持久层框架[16]。Hibernate实现原理是大量的使用放射机制,将数据库关系对象映射成为XML对象文档进行解析,协调持久对象与关系数据库的交互。它对JDBC进行了封装,将JDBC完全对象化,使得开发人员对数据库进行操作时可以像操作对象一样用面向对象的概念来实现,实现Java真正意义上的面向对象。Hibernate虽然对JDBC进行了封装简化了系统的开发,但是在效率上失去了一定的优势不及JDBC,特别是在数据大的查询及删除操作上,Hibernate就不及JDBC来的效率高了。Hibernate在做删除操作的时候先要通过select语句将数据放入内存,之后再从内存中删除,而JDBC是直接删除。所以在不要求很高效率的系统上可以适当的使用hibernate框架。Hibernate的体系结构如图2-4所示:


2.6 SSH框架整合
2.6.1 SSH框架整合思想
J2EE三层结构分为表现层、中间层(业务层)和数据服务层(持久层)。三层体系中中间层实现表现层和数据服务层的连接,主要实现业务逻辑、数据访问及合法性校验等工作。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。最后再将数据交给表现层进行数据展示。
本系统是以MVC模式开发的,Struts是实现了MVC模式的框架,但其主要是针对于表现层设计的,提供了一系列的灵活的标签,对于页面的处理方面是着力点,可以很好的将数据展现给用户。但是在业务逻辑这方面就显得有点不足了,需要开发人员进行复杂的的处理,而Spring就可以很好的解决这方面的问题。
Spring是以IOC和AOP为核心概念的轻量级框架,Spring的非入侵性解决了很多MVC框架对事务管理的缺陷,让事务管理变的更加简单[15]。Spring不仅对一些常用的企业服务API提供一致的模型封装,如:Spring在对JDBC上的封装操作中的模型和Spring与持久层框架Hibernate集成时所使用的模型基本上是如出一辙的,只要掌握了其中之一那么另外的操作也就掌握了,在一定程度上提高了开发效率,降低了开发成本,而且Spring对系统的各个层次进行着管理与控制,跟其他层框架进行无缝集成,使各层之间相互独立,实现了在各层架构上的低耦合性,
是一个相当优秀的容器。
Hibernate作为一个优秀的开放源代码持久化工具,完全着眼于关系数据库的ORM映射,通过ORM引入面向对象的概念模型,将操作关系数据库转换成操作对象,这样就可以直接的避免操作数据库时范式和数据库关系模型不匹配的问题。
可以很好的代替JDBC的操作,再加上Hibernate可以和Spring进行无缝的集成,
完成与数据库的交互,可以很好的用来取代Spring对JDBC的封装。
综上所述,在集成了SSH框架的在线答疑系统中,Struts用来解决MVC中的页面显示和请求控制部分,Spring主要负责访问数据库中事务管理以及将IOC思想运用到业务层中,Hibernate就负责与数据库进行交互,完成数据的持久化工作。这样可以弥补各框架的不足之处,充分发挥三者在各自领域的优势。形成一个功能强大、层次分明、结构清晰地结构,提高系统的维护性、扩展性,提高开发效率。
2.6.2 SSH框架实现
在SSH整合过程中,通过Spring将三者进行连接起来,主要需要解决以下三个方面的问题[22]:
1.Spring框架的应用环境的怎么搭建起来。
2.Struts2框架如何加载Spring的应用环境,让Web容器在初始化时自动获得由Spring容器管理的对象。
3.Spring与Hibernate框架如何进行无缝集成。
以下就主要讨论解决这些问题的方法。
2.6.2.1 Spring应用环境的装载
对于搭建Spring应用环境:首先要新建一个Web工程,将Spring框架在开发过程中要使用的包加载到工程的\src目录下,接着将Spring的配置文件加载到工程\src\applicationContext.xml目录下,最后将Spring的上下文文件和监听器配置到Web.xml文件中

contextconfiglocation /web-inf/applicationcontext.xml org.springframework.web.context.contextloaderlistener 这样就完成了Spring应用环境的加载,在工程启动时完成Spring的初始化,在工程结束时销毁。 2.6.2.2 Struts2与Spring的整合技术 对于Struts2加载Spring应用环境将Action交给Spring管理有两种方式: 1.伪控制器方式 所谓的为控制器方式是指,在Struts2的配置文件中配置Action,但是Action还是由Spring来管理。具体配置如下: 在Struts.xml文件中配置 //class表示需要 到Spring中导找对应的bean的名称。 /result.jsp 在applicationContext.xml文件中配置 //注意,bean必须为prototype作用域类型。 这样就完成了Struts2框架与Spring框架为控制器整合方案。 2.自动装配的方式 自动装配方式:在Action只需在Struts.xml文件中进行配置,而Spring文件就不需要配置,这样就可以减少伪控制器中的代码冗余问题,提高系统的效率。具体配置如下: 在Struts.xml文件中配置 /two_result.jsp 在applicationContext.xml文件中配置 这边需要注意的是:Action中属性的名称必须要与bean的name一样。就样Spring就会进行自动装配。 2.6.2.3 Spring与Hibernate整合技术 Hibernate在与数据库进行的连结、事务管理等操作都是建立在SessionFactory基础之上的SessionFactory在应用程序中通常只需存在一个实例,在Hibernate配置文件中配置SessionFactory具体配置如下: com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/test root root com.mysql.jdbc.Driver org.hibernate.dialect.MySQLDialect 在applicationContext.xml文件中配置: true 这样就完成了Spring框架和和Hibernate框架的无缝整合。 2.7 本章小结 本章主要介绍了开发在线答疑系统所使用的技术、开发工具、应用环境、数据库,以及针对于目前业内几种比较流行的开发框架及将这些框架进行整合的过程进行了阐述,形成了整个系统的开发环境。首先介绍了J2EE的体系结构,J2EE中的技术,它提供了丰富的应用服务器程序API,使用J2EE的多层企业级应用模型可以大大简化了企业级Web应用的开发。接着详细介绍了MyEclipse开发环境,Tomcat应用服务器和MySql数据库,这些都是进行Java开发Web程序所经常性使用到的技术。由于J2EE本身提供的EJB容器,是重量级企业级服务,各层之间的耦合性不是很好,不利于系统的维护与扩展。因此需要寻求一个更好的解决方案。接着分别介绍了业界流行的SSH框架技术:Struts技术、Spring技术、Hibernate技术。Struts技术主要应用在表示层,它提供丰富的标签库,大大提高了页面开发效率,Spring技术主要优势是其分层架构,与其他各层框架之间的能够无缝集成,它及非入侵性,使各层之间相对独立,可以随时替代;Hibernate运用ORM技术对JDBC进行了非常轻量级的对象封装,使得开发人员可以方便的使用对象编程思维来操纵数据库,高效地完成数据持久化的任务。 在分析Struts、Spring和Hibernate三种框架各自的优点和不足之后,文章最后提出了基于SSH整合框架的思想、实现,为下文中在线答疑系统的开发奠定基础。

第三章 在线答疑系统的需求分析和总体设计
3.1 答疑系统主要角色
对于一个系统来说,角色是整个系统的灵魂,不同的角色有不同的权限,没个角色根据自己所拥有的权限登陆到系统进行相应的操作,这样就可以避免一些越权的发生,让整个系统更好的为角色服务。在线答疑系统主要是在现代教学模式中打破时间和空间的限制用来解决学生在学习过程中所遇到的问题,让同学们能够更好的利用资源进行学习,学校能更好的提高教学水平的提示而设计的。因此,本系统的主要角色有:学生、教师、管理员。下面对各个角色所拥有的权限进行描述:
1.学生,学生在使用本系统时有搜索相关问题的答案、提出问题、回答相关问题、查看自己所提出的问题及答案、注册、修改个人信息。
2.教师,教师角色在使用本系统时可以申请添加课题、回答问题、修改个人信息。
3.管理员,管理员角色主要是对本系统后台进行维护包括:教师的管理、学生的管理、公告管理、课程管理、问题管理、答案管理、通知管理等。
3.2 系统功能描述和总体设计
3.2.1 前台系统功能描述及设计
本答疑系统前台主要包括:“论坛答疑子系统”、“智能答疑子系统"两个大模块。在论坛答疑子系统中,系统角色(教师、学生)可以进行登录、提出问题、回答问题、修改个人信息等操作;而“智能答疑子系统"则是将基于lucene开源框架的搜索引擎应用于智能答疑系统中。
根据答疑的需求,本系统需要完成的功能模块包括:
1.注册:为了更加方便的对系统进行管理,也为了让学生享受更多的权限,因此必须进行注册。
2.登入:为了能够知道提问者并向老师进行询问和回答者,所有的用户在使用该系统者需要进行登陆、加载用户信息。
3.答案搜索:用户对自己存在的问题进行搜索,看是否已经有同学进行过相同问题的提问,及得到答案。
4.提问问题:在没有搜索到想要的答案时,用户可以进行相关问题的提问。
5.回答问题:如果提问者所提出的问题的回答权限是所有者,那么不管是谁都可以进行回答,如果提问者指定了回答者,那么只有被指定者才有权限回答此问题。
6.修改个人信息:使用者在登录系统后,可以修改自己的详细信息。
7.退出系统:用户在使用完系统之后,及时的退出系统。
在对答疑系统前台进行详细功能描述完之后。可以设计出本系统的总体功能结构,该结构包括论坛答疑子系统和智能答疑子系统,前台结构如图3-1所示:

3.2.2 后台系统功能设计及描述
本答疑系统的后台主要的功能是对前台课题、问题、答案、用户、公告、通知等的管理及后台管理员的管理,主要角色为管理员,根据各模块的需求后台系统的功能结构如图3-3所示:


图3-3 后台系统管理平台功能结构图
3.3数据库设计
在对在线答疑系统做了详细的调研之后,根据需要设计出具体的数据库表结构,该数据库主要包括:管理员信息表、用户信息表、课程信息表、问题信息表、答案信息表、公告信息表等。以下具体说明该系统中数据库表结构的设计,表中的相关信息。
3.3.1 管理员信息表(dayi_admin)
管理员信息表主要是用来存储所有管理员信息的基本信息其表结构如下图4-1所示:




论文全部下载链接地址:点击下载

基于SSH架构的在线答疑系统相关推荐

  1. 基于SSH架构的在线拍卖系统设计与开发

    摘 要 拍卖是购买和销售中的一种重要的交易方式,随着Internet的日益普及和电子商务的发展,网上拍卖这种电子商务模式将成为主流的一种交易方式.各色各样的电子商务网站层出不穷,其中又以易趣,淘宝类的 ...

  2. 基于J2EE架构的在线考试系统-Java(报告+源码+PPT

    目前国内基于B/S.C/S结构的在线考试系统产品已经有许多,本文首先介绍了这些考试系统的形成和发展过程,大致结构.然后通过仔细分析,提出了目前的这些系统还存有系统更新和维护等种种弊端,仍不够成熟.基于 ...

  3. 计算机毕业设计-基于SSH的医院在线挂号系统源代码和论文

    医院挂号系统主要用于实现医院的挂号,前台基本功能包括:用户注册.用户登录.医院查询.挂号.取消挂号.修改个人信息.退出等. 后台基本功能包括:系统管理员登录.医院管理.科室管理.公告管理.退出系统等. ...

  4. 基于SSH框架的在线考勤系统开发的质量属性

    我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...

  5. 基于SSH实现医院在线挂号系统

    项目编号:BS-YL-002 本系统基于SSH框架实现开发,数据库采用MYSQL,开发工具采用IDEA或ECLIPSE. 系统分两个角色:系统管理员和前端用户.前台用户可以实现注册,医生查询挂号,公告 ...

  6. 【计算机毕业设计】在线答疑系统

    一.系统截图(需要演示视频可以私聊) 摘  要 社会的发展和科学技术的进步,互联网技术越来越受欢迎.网络计算机的生活方式逐渐受到广大师生的喜爱,也逐渐进入了每个学生的使用.互联网具有便利性,速度快,效 ...

  7. java基于springboot+vue的大学生在线答疑系统 elementui

    社会的发展和科学技术的进步,互联网技术越来越受欢迎.网络计算机的生活方式逐渐受到广大师生的喜爱,也逐渐进入了每个学生的使用.互联网具有便利性,速度快,效率高,成本低等优点. 因此,构建符合自己要求的操 ...

  8. 基于B/S架构的在线考试系统的设计与实现

    前言 这个是我的Web课程设计,用到的主要是JSP技术并使用了大量JSTL标签,所有代码已经上传到了我的Github仓库里,地址:https://github.com/quanbisen/online ...

  9. 基于JSP开发在线答疑系统的设计与实现+论文+PPT+开题报告+任务书 大作业源码 毕业设计

    基于JSP开发在线答疑系统的设计与实现+论文+PPT+开题报告+任务书(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+SQLServer数 ...

最新文章

  1. 【留用】C#的一些好的书籍
  2. 随笔:写给我深爱的球队
  3. 深度学习——05、深度学习框架Caffe
  4. [Java] 实现多线程的两种方法
  5. 7.0上的新KIE持久性API
  6. VMware共享文件夹遇到的问题
  7. 子集和数问题——回溯法(C++)
  8. 重磅!AI大牛邢波出任AI大学校长,李开复姚期智都是校董
  9. nginx ssl 双向认证
  10. [CF1107E]Vasya and Binary String【区间DP】
  11. python setup_简述python setup.py install的过程
  12. python 新建一列_创建一个空数据框并在python中填充创建的列
  13. 一个canvas的demo
  14. spss相关性分析_关公配赤兔——因子分析和SPSS
  15. 招聘方眼里的猎聘和Boss直聘直观对比
  16. 从“中国宙斯盾”亮相想到的
  17. 本周最新文献速递20220306
  18. orb-slam2 从单目开始的简单学习(7):Optimizer
  19. 带你读AI论文丨SP21 Survivalism: Living-Off-The-Land 经典离地攻击
  20. 零基础重庆自考本科行政管理难吗?

热门文章

  1. 怎样把k歌作品发到html里,如何将自己的原创歌曲上传入库到全民K歌
  2. chrome浏览器导出文件提示病毒扫描失败
  3. 【智能优化算法】基于全局优化的改进鸡群算法求解单目标优化问题(ECSO)附matlab代码
  4. Python绘制类激活图曲线(热力曲线)
  5. 当我参加培训的时候,我在学什么?
  6. 服务端渲染(SSR) 通用技术解决方案
  7. DSP芯片F2803x系列之PWM模块及高精度PWM使用
  8. 2007-05-12
  9. 前端求职刷题(第一部分)
  10. Cesium中笛卡尔坐标系到底是什么鬼