当前位置:   article > 正文

基于java实现的计算机考试系统

基于java实现的计算机考试系统

摘要

无纸化考试系统是现代教育的重要标志,让考试的结果更加的合理、公正、公平,也可以节约人力成本。高校在线考试系统,常用客户机/服务器(C/S)型的MIS型架构,或基于Web使用浏览器/服务器 (B/S)的架构。C/S架构的在线考试系统,试题存放在远程服务器上,客户端安装考试应用程序和数据库客户机配置,每次考试时需对客户端进行安装、配置。而采用B/S架构的考试系统,通过与B/S结构的数据库管理系统结合可实现瘦客户机,系统维护仅需在服务器端进行。故开发了基于B/S的在线考试系统。网络应用软件运行的模式主要有两类:C/S和B/S模式。前者主要的缺点是维护、升级相对比较麻烦,费用也比较高;B/S(Browser/Server)结构即浏览器和服务器结构。在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端 (Browser)实现,主要事务逻辑在服务器端(Server)实现。这样大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。

本论文的内容就是设计一个基于java的B/S结构的计算机考试系统,可以基本实现学生、教师以及管理员所需要的功能。在这个B/S结构的设计中,学生通过计算机网络登入系统,实时提交解答。系统能保存结果,供教师披阅,并能自动根据条件对客观题进行判分,还能对分数进行统计、管理,协助教师找出教学中存在的问题,满足任何授权的考生随时随地考试并迅速获得成绩的需求,同时也大大减轻了教师出题、监考和判卷等繁重的工作量。

关键字:J2EE;java;MVC;在线;考试系统

Abstract

Paperless exam is an important symbol of modern education for this kind of exam make the result more reasonable, more just, and release human resource. The online exam system of university, usually uses the C/S MIS architecture, or based web use B/S architecture. In the exam system of C/S architecture, where the papers are stored in the remote Server and the Client must set up the exam application and configure the database, we must set up and configure the Client every time when do exam. However, the exam system using the B/S architecture can implement thin Client by combining the Management Information System. As system maintenance is only necessary at the sever end, our developed exam system is based on B/S architecture. WEB application software is either of C/S or B/S modes. The main disadvantage of the previous mode is the trouble of maintenance and update, and thus the charge is higher; the B/S architecture is composed of Browser and Server. In this architecture, the user interface is just implemented on WWW Browser, a little part of the transactions is implemented in Browser, and the main part of transactions is implemented in Server. So the load of Client is reduced, and thus reduce the cost of maintenance and update, so as the whole cost.

This graduate project is about the exam system based on java and B/S architecture. It has implemented the basic function needed by the student, teacher and administrator. In this B/S architecture project, students login the system through web, and commit the answers in real-time. The system can judge the paper and save the result, statistic, manage the points; help the teacher to find the problem in teaching. It allows any student which is authorized to subscribe to exam and gain the result at anytime or anywhere, and reduce the workload of the teacher for giving question, invigilation and judging paper.

key words:J2EE;java;MVC;web;exam system

目  录

1  绪论

1.1项目背景

1.2计算机考试系统发展及现状

1.3国内外发展现状

1.4研究开发的目标和基本内容

1.4.1 系统开发的主要任务和目标

1.4.2 系统开发的基本内容

1.5 技术研究背景

2  系统技术介绍及应用

2.1 JSP技术概述及工作原理

2.1.1 JSP技术概要

2.1.2 JSP的工作原理

2.1.3 JSPASP的比较

2.2 JDBC介绍

2.3 MVC模式介绍

2.4 Struts技术概述及工作原理

2.4.1 Struts技术概述

2.4.2 Struts的工作原理

2.5 Hibernate技术概述及工作原理

2.5.1 Hibernate技术概述

2.5.2 Hibernate工作原理

2.6 Tomcat应用服务器介绍

2.7 MySQL数据库介绍

2.7.1 数据库的历史和发展

2.7.2 MySQL介绍

2.7.3 MySQL的主要特性

3  系统需求分析

3.1系统功能概述

3.2权限与控制

3.3系统业务流程分析

3.3.1业务术语

3.3.2业务流程

3.4系统模块简介

3.4.1登录模块

3.4.2系统管理模块

3.4.3科目管理模块

3.4.4题库管理模块

3.4.5试卷管理模块

3.4.6帐户管理模块

3.4.7考试管理模块

3.4.8信息查询模块

3.5系统开发环境

4  系统设计

4.1系统整体架构设计

4.2系统管理设计

4.3题库管理设计

4.4科目管理设计

4.5试卷管理设计

4.6帐户管理设计

4.7考试管理设计

4.8信息查询设计

4.9数据库设计

5  系统实现

5.1 系统Model层实现

5.1.1AdminBean

5.1.2SchoolBean

5.1.3CollegeBean

5.1.4ClassBean

5.1.5TeacherBean

5.1.6StudentBean

5.1.7ExamBean

5.1.8PaperBean

5.1.9SubjectBean

5.1.10TiankongBean

5.1.11XuanzeBean

5.2系统数据访问对象DAO层实现

5.2.1AdminBeanDAO

5.2.2SchoolBeanDAO

5.2.3CollegeBeanDAO

5.2.4ClassBeanDAO

5.2.5TeacherBeanDAO

5.2.6StudentBeanDAO

5.2.7ExamBeanDAO

5.2.8PaperBeanDAO

5.2.9SubjectBeanDAO

5.2.10TiankongBeanDAO

5.2.11XuanzeBeanDAO

5.3系统中的ACTION

5.3.1AccountAction

5.3.2AccountManageAction

5.3.3SchoolAction

5.3.4CollegeAction

5.3.5ClassAction

5.3.6TeacherAction

5.3.7StudentAction

5.3.8ExamAction

5.3.9PaperAction

5.3.10SubjectAction

5.3.11QuestionAction

5.4系统中的视图层

6  总结

第1章  绪论

1.1项目背景

无纸化考试系统是现代教育的重要标志,这样的考试让考试的结果更加的合理,更加的公正、公平。也让不必要的人力从中解脱出来,去完成其它的一些事情。学生通过计算机网络登入系统,实时提交解答。系统能保存结果,供教师披阅,并能自动根据条件对客观题进行判分,还能对分数进行统计、管理,协助教师找出教学中存在的问题,满足任何授权的考生随时随地考试并迅速获得成绩的需求,同时也大大减轻了教师出题、监考和判卷等繁重的工作量。

鉴于现在大多数学校的计算机考试系统基本上都是C/S结构,对时间、地点以及考试规模都有很大的限制,而现在的大学里基本上的学生都人手一台电脑。如果将考试系统做成B/S结构的话就可以将没有这些方面的限制,可以进行大规模同时的考试,而且计算机可以方便的进行考试,不需要进行任何的客户端安装,只需要有一个浏览器。

1.2计算机考试系统发展及现状

20世纪50年代,电子计算机和光电阅读机在大规模考试中的广泛运用促进了标准化考试的推广和普及。然而应当指出,这时的考试方法仍是传统的纸笔考试形式。到了2O世纪末,随着测试理论的完善、计算机的普及、多媒体技术的运用和经济的增长,测试界已清楚地看到单一的纸笔考试弊大于利。那么纸笔考试所暴露出来的问题该如何解决?标准化考试还要不要推行?于是专家们开始在测试的方法和手段上下工夫,国外的TOEFL如此,国内的CET亦然。这一变化竞来得如此之快,可以说是在向一个时代告别,即:计算机化考试时代的到来[1]。

1.3国内外发展现状

现在国内外都有许多的计算机考试系统,而CAT(computerized Adaptive Testing,计算机自适应考试系统)是近年来测验研究中引人注目并取得了重大发展的领域。计算机化白适应测验(简称CAT)是在项目反应理论的基础上,建立题库,然后计算机根据被试的能力水平自动地选择测试题目,并对被试的所达到的能力的水平做出判断的一种全新的测验形式 [2] 。所谓自适应测验它的基本思想是“因人施测”,使不同水平被试者都能接受一组跟自己特质水平相适应的试题。所谓“自适应”就是测验本身要自动地适应被试的具体情况,在被试作答过程中及时根据作答资料估出被试的可能水平,并针对这一水平迅速决策,从大型题库中调取难度恰当、性能优良的题目继续施测。直到施测的题目足够多,测验信息量累计和达到指定值为止。

如今在美国,CAT已经在教育测验、职业测量、人事测评等领域中大显身手,如美国研究生入学考试(Graduate Record Examination)、工商管理类研究生入学考试(Graduate for Management and Administration Test)以及全美护士国家委员会资格考试(Nurse National Committee License Test)等都已采取了CAT的方式。在信息产业中,美国Novell公司于1991年成功的应用了CAT进行认证考试,使参加Novell自适应考试的人数超过1,000,000人次。

在我国,已经出现一些应用型的研究,自行编制了一些CAT测验,并取得了实际的运用效果,上海电大在上海市计算机应用能力的考试项目“VB6.0程序设计”中已采用了CAT的考试设计方法。江西师大小学数学CAT研究、华南理工大的“数据结构”自适应测试系统的研究也取得了一定的成果。自上世纪九十年代初期开始,全国大学英语四、六级考试委员会一直致力于项目反应理论和“计算机自适应测验”的研究和开发。

1.4研究开发的目标和基本内容

1.4.1 系统开发的主要任务和目标

1、实现保存试题的数据库系统

2、实现在线考试系统的服务器端及客户端

3、了解试卷批改规则,实现客观题的自动判分

4、实现系统成绩查询功能

1.4.2 系统开发的基本内容

1、提供数据库访问权限给不同人员进行试题库添加、管理,试卷批改,答案输入;

2、从试题库中生成难度的合理试卷;

3、通过网络实现与考生的互动,随时增减试题难度,以便最大限度地考察学生水平;

4、结合试题难度系数协助教师判分。

1.5 技术研究背景

J2EE是适用于创建服务器应用程序和服务的Java 2平台企业版Java2 Platform Enterprise Edition,J2EE),该技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性,方便存取数据库的JDBC API、CORBA技术以及能够在Intemet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持[3]。J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层面分布在不同的机器上,解决了两层模式(client/server)的弊端.在传统模式中,客户端担当了过多的角色,可能第一次部署时比较容易,但难于升级,可伸展性也不理想,经常是基于某种专有的协议(通常是某种数据库协议),重用业务逻辑和界面逻辑非常困难.现在J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层,每个多层化应用能够为不同的服务提供一个独立的层面[4]。

本系统采用J2EE进行开发,J2EE特别适用于WEB开发,现在最流行的WEB开发模式是SSH(Struts+Spring+Hibernate)模式,Struts作为视图层,Spring作为控制层,Hibernate为模型层。这样写的程序有很清晰的分层,耦合度低,有利于开发和维护。

这些框架可以为开发者提供一个简单易用的模型,采用一个经过良好设计的开源框架有很多好处:

  1. 开发者只需要写一些必须的代码。他们不需要直接接触底层的API。
  2. 经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。清晰的结构使得其他人很容易加入项目。
  3. 一个容易适用的框架可以通过一些例子和文档为用户提供最佳实践。
  4. 使用成功的框架的代码比自己的代码容易测试。

框架应该在需要的时候才使用,不要为了使用框架而使用框架。所为我的这个系统使用的是Struts+Hibernate,这两个都是比较成熟的开源框架,通过Hibernate做OR映射和对数据库的访问。Struts做视图层,Struts的ActionServlet做控制层。

第2章  系统技术介绍及应用

2.1 JSP技术概述及工作原理

2.1.1 JSP技术概要

在开始介绍JSP之前,我先要介绍两个名词:组件和容器还有servlet。

组件:

组件是你的应用程序的的组体构件。它包括servlets、JavaBeans、JSP、HTML页面、EJBs以及其它类似的东西。

容器:

容器是那些执行组件的应用程序。如果你的应用程序由JSP和servlet组件构成的,那么你就需要一个具有JSP支持的servlet容器(正式名称是servlet引擎);如果你的应用程序是有EJBs构成的,那就需要一个EJB容器。

servlet:

servlet是一种独立于平台和协议的服务器端的Java应用程序,可以动态的生成WEB页面。servlet由WEB服务器进行加载,该WEB服务器必须包含支持servlet的java虚拟机。

JSP:

JSP(java server pages)是由SUN公司在servlet基础上开发出来的一种动态网页制作技术,其可使您可以将网页中的动态部分和静态的HTML相分离。您可以使用平常得心应手的工具并按照平常的方式来书写HTML语句。然后,将动态部分用特殊的标记嵌入即可,这些标记常常以“<%”开始并以“%>”结束。通常,您要将文件以“.jsp”为扩展名,并将它 放置到任何您可以放置普通WEB页面的路径下。尽管JSP文件看起来更象是HTML文件而不是Servlet文件,但,事实上,它恰恰将转换为 Servlet文件,其中的静态HTML仅仅用来输出Servlet服务方法返回的信息。如果JSP pages 已经被转换为Servlet且Servlet 被编译进而被装载(在第一次被Request时),当您再次Request 此JSP页面时,将察觉不到一瞬的延迟。

JSP有4个关键成分:指令(directive)、动作(action)、scriptlet和 标记库(tag library)。指令是指那些发送给JSP容器的消息,它使程序能够指定页面的设置、包含其它资源中的内容和指定JSP中使用的定制标记库。动作将功能封装在预定义的 标记中,然后程序员可以将它们(预定义标记)嵌入JSP中。通常根据发送给服务器的 特定客户请求中的信息来执行动作。它们还可以创建在JSP scriptlet中使用Java对象。Scriptlet,即脚本元素(scripting element),使程序员能够插入与JSP中的组件(和其它Web应用程序组件)进行交互的Java代码,以处理请求。标记库是标记扩展机制的一部分,它使程序员能够创建定制的标记,这种标记使得程序员能够操作JSP内容。[5]

2.1.2 JSP的工作原理

当用户第一次请求或者刷新一个JSP页面时,JSP容器首先是要找到这个JSP页面的源代码文件,然后开始处理,把这个JSP源文件翻译成java代码文件。当用户请求这个文件时,需要JSP容器来处理这个文件。[6]

2.1.3 JSP与ASP的比较

一般说来,Sun 公司的JavaServer Pages(JSP)和Microsoft的Active Server Pages(ASP)在技术方面有许多相似之处。两者都为动态网页的技术,并且双方都能够替代CGI 技术,使网站的开发时程能够大大缩短,在性能上也有较高的表现,更重要的一点是,两者都能够为程序员提供组件设计的功能,通过组件设计,将网页中逻辑处理部分交由组件负责处理(ASP 使用COM 组件、JSP则有JavaBean 组件),而和网页上的排版、美工分离。

尽管Java Server Pages 技术和Active Server Pages(ASP)在许多方面都很相似,但仍然存在很多不同之处,其中本质上的区别在于:两者是来源于不同的技术规范组织。以下就来比较两大技术有哪些不同点,而又为各自带来哪些优势。

平台和服务器的弹性

ASP (Active Server Pages)技术主要在微软(Microsoft)公司的Windows 平台上运行,其中包括Windows 2000、Windows XP 和Windows 2003,并且搭配其WEB 服务器IIS (Internet Information Services)。但是,在其他的平台运行时,不是性能低落,就是根本不支持,因此,当在开发网站系统时,选择NT+IIS+ASP的体系结构时,未来当系统无法负荷时,也只能继续选择Windows 平台的服务器,无法改写在性能表现相当优异的UNIX 平台上。

JSP (Java Server Pages)技术主要运行在操作系统上的一个Java Virtual Machine (JVM)虚拟机器上,因此,它能够跨越所有的平台,例如:NT、Windows 2000、Solaris、Linux、OS/390、AIX、HP-UX ,等等,除了能在各式各样的操作系统上执行,并且能搭配现有的WEB服务器:Apache、IIS、Netscape Enterprise Server ,等等,将静态的HTML网页交由执行速度较快的Web Server 处理,而动态产生网页的部分,就交由JSP Container 来执行。由上述可知,JSP (JavaServer Pages)技术在跨平台的表现比ASP来得更有弹性。

WEB 网页程序员未来在开发电子商务平台时,就不需要再考虑客户厂商的操作系统平台,可更专心于系统功能的开发。相应地,厂商在使用Java Server Pages 技术开发的系统平台时,不再需要担心未来在扩充软、硬件时,是否产生不兼容的问题。光这一点,就能为企业省下一大笔的费用,这是JSP 的主要优点。

开放的开发环境

自从1995 年,Sun 公司已经开放技术与国际Java 组织合作开发和修改Java 技术与规范。JSP应用程序接口(API)毫无疑问已经取得成功,并随着Java 组织不断扩大其应用的范围,目前全力发展Java 技术的厂商不胜枚举,例如:最近IBM 公司强力推广的WebSphere 家族,正是完全支持J2EE 标准而开发。数据库厂商Oracle 也发展自己的Application Server 来和自己公司本身数据库产品Oracle 9i 做一紧密的结合。那也更不用提Amazon 系统的供货商BEA 公司,它的产品WebLogic也是完全支持Java Server Pages技术和J2EE 规范的。

相反,ASP 技术仅依靠微软本身的推动,其发展建立在独占、封闭的基础之上,并且微软本身的技术又只允许在微软相关平台的服务器上执行,因此,在标准方面显得有点力不从心。

执行性能表现

ASP 和JSP 在执行性能的表现上,有一段显著的差距,JSP 除了在一开始加载的时间会比较久外,之后的表现就远远比ASP 的表现来得好。原因在于:JSP 在一开始接受到请求时,会产生一份Servlet 实体( instance ),它会先被暂存在内存中,我们称之为持续( Persistence ),当再有相同请求时,这实体会产生一个线程(thread)来服务它。如果过了一段时间都不再用到此实体时, Container 会自动将其释放,至于时间的长短,通常都是可以在Container 上自行设定的。

而ASP在每次接收到请求时,都必须要重新编译,因此,JSP 的执行比每次都要编译执行的ASP要快,尤其是程序中存在循环操作时,JSP 的速度要快上1 到2倍。不过,ASP在这部分的缺陷,将随ASP+的出现有所改观,在新版的ASP+技术中,性能表现上有很大的突破。[7]

2.2 JDBC介绍

JDBC(Java DataBase Connectivity),是用于执行SQL语句的Java应用程序接口,是一套API集合,在这个集合中设置了许多允许Java程序连接数据库的框架。JDBC由一组用Java语言写成的类和接口组成,是一种连接不同数据库的规范,其宗旨是让各数据库开发商为Java程序员提供标准的数据库访问类和接口。JDBC与Java结合,使用户可以很容易的把SQL语句传送到任何关系型数据库中,程序员用它编写的数据库应用程序,可以在各种数据库系统上运行。[8]这是真正的可移植性的软件所必须具备的一个特点。JDBC已经被业界普遍采用,而且是在Java在服务器端成功的主要贡献因素。JDBC驱动程序是依靠独立的软件公司开发的。JDBC驱动程序适合特定的数据库系统和数据访问模型,主要的那些数据库系统都有对应的的驱动程序,例如Microsoft、oracle、Informix、Sybase、Postgress、MySQL等等。JDBC与java应用程序和数据库的关系如图2.2所示.

图2.2 JDBC与java应用程序和数据库的关系

JDBC中的主要对象包括:

class:- DriverManager  - 驱动管理,获得连接

interface:

-Connection – 连接对象

-Statement – 执行SQL语句

-PrepareStatement – 执行SQL语句,预编译,可带参数

-CallableStatement – 执行存储过程

ResultSet – 查询结果记录集

ResultSetMetaData – 记录集的元信息

2.3 MVC模式介绍

MVC是一种体系结构模式,代表Model—View—Controller,是应用于交互式系统的一种体系结构模式。MVC产生于20世纪70年代Palo—Alto实验室的Smalltalk编程环境。MVC模式指导模块的职责分配和模块之间的通信协议。职责分配是面向对象分析和设计中最重要的工作,协议设计则是相当困难的工作。MVC为这两项工作提供了指导,所以意义重大。

Model是应用程序对象,也就是包含应用程序数据和业务逻辑的对象。Model对外表现为一个对象,实际上可以也应该是一组子对象的集合。

传统意义上的View是屏幕对象,负责向用户显示交互界面。这个意义可以进行扩展,将View视为向外界展现应用程序状态的接口和界面。

所有的用户输入都由Controller负责处理。在交互式系统中,Controller是导致Model发生变化的唯一原因,是导致View发生变化的两个原因之一,因此是控制中心。

Controller将用户事件翻译成为请求,而不是命令。如果机械地遵循MVC的规则,Controller的逻辑将十分复杂。Controller通常需要查询View和Model才知道如何处理用户输入。不要把所有逻辑写在Controller里。View和Model都是有智能的对象。可以通知它们,由它们自己决定应对的方式。

一个应用程序或者组件只能有一个Model,但是这个Model可以对应多个View。View向Model注册,要求在Model的数据发生变化时获得通知消息。View得到通知消息之后,获取Model的相应数据,更新自己的显示。View不向Model发送消息。

一个View对应一个Controller。View负责创建和初始化Controller,这也是View和Controller关系密切的原因之一。Controller接收用户输入,如果有与应用程序数据无关,而只涉及显示变化的用户输入,Controller直接通知View。

Controller和View关系密切的另一个原因是现代应用程序界面复杂,灵活多变。因此Controller需要大量了解View的情况,大量查询View的信息,距离太远不利于效率和灵活性,协议也很难设计,所以经常捆绑在一起。例如,目前基于控件的图形界面,很多控件实际上是一个封装好的MVC实体,通过属性、事件和方法与外界协同工作,强行拆分反而适得其反。

因为一个Model对应多个View,一个View对应一个Controller,所以一个Model对应多个Controllers。Controller接收外部输入,是导致Model发生变化的唯一原因。同时,Model的变化可能导致Controller行为的变化。[9]

MVC模式如图2.3所示。

图2.3 MVC模式图

2.4 Struts技术概述及工作原理

2.4.1 Struts技术概述

Struts最初是由Craig R.McClanahan 创建的,然后在2000年用于Apache Software Foundation(ASF)的Jakarta项目。2001年6月,Struts1.0发布。那以后,很多人在源代码和文档方面对该项目做出过贡献,Struts得到迅速的发展。在Craig R.McClanahan将Struts用于Apache Jakarta项目的时候,Struts就成为了开放源代码软件,任何人都可以通过Welcome to the Apache Struts project 下载到源代码。

Struts是构建基于java的Web应用程序的首选框架。通过采用模型-视图-控制器(MVC)设计模式,使用Struts可以开发使用Java Servlets和JavaServer Pages的高性能、面向事务的Web应用程序,并可以解决诸多相关问题。首先,需要认识到Struts带来的不仅仅是编程的便利性,Struts还从根本上为Web编程人员构思和 构建Web应用程序提供了一种新的方式。在MVC体系结构中,中心Servlet(被称为控制器)接收所有应用程序的请求。然后控制器将对请求进行处理,同时准备视图(通常是JSP)所需要的任何数据,并将此数据发给JSP。接着JSP使用由控制器准备的数据生成浏览器响应。本体系结构中,事务逻辑和显示逻辑彼此相互独立。[10]

struts框架中,模型分为两个部分:

·系统的内部状态 

·可以改变状态的操作(事务逻辑) 

内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。

大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。

小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。 

建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。[11]

2.4.2 Struts的工作原理

Struts应用程序的执行流如图2.4.2所示:

图2.4.2 Struts应用程序的执行流

1.浏览器向Struts应用程序发出请求,ActionServlet(控制器)对该请求进行处理。

2.ActionServlet(控制器)用HTML表单填充ActionForm(视图)对象,并调用其validate()方法。

3.ActionServlet(控制器)执行Action对象(控制器)。

4.Action(控制器)与模型组件一起为视图准备数据。

5.Action(控制器)将控制权交给JSP(视图)。

6.JSP(视图)使用模型数据生成对浏览器的响应。

2.5 Hibernate技术概述及工作原理

2.5.1 Hibernate技术概述

现今的应用系统设计中,MVC作为主流系统架构模式之一,贯穿了 整个设计流程。MVC中的 M,也就是所谓的Model,则可以说是与业务逻辑和数据逻辑关联最为紧密的部分。而持久层作为Model层中的主要组成,其设计的优劣势必对系统的整体表现产生至关重要的影响。

说到持久层设计就必须说到持久层框架,现在有很多优秀的实现版本,其中ORM持久层框架,则是未来的主流。

所谓ORM—Object/Relational Mapper,从字面上理解是:对象—关系型数据映射组件。

在java发展的初级阶段,直接调用JDBC几乎是数据库访问的唯一手段。随着近年来设计思想和Java技术本身的演化,出现了许多JDBC的封装技术,这些技术为我们的数据库访问层实现提供了更多的选择,目前主流的JDBC封装框架包括:Hibernate、Apache OJB、iBatis,JDO以及J2EE框架中的CMP等。这些框架以优良的设计大大提高了数据库访问层的开发效率,并且通过对数据访问中各种资源和数据的缓存调度,实现了更佳的性能。

Hibernate提供了强大、高性能的对象到关系型数据库的持久化服务。利用Hibernate,开发人员可以按照Java的基础语义(包括关联、继承、多态、组合以及Java的集合架构)进行持久化开发。Hibernate提供的HQL(Hibernate Query Language)是面向对象的查询语言,它在对象型数据和关系型数据库之间构建了一条快速、高效、便捷的 沟通渠道。

2001年末,Hibernate第一个正式版本对外发布,之后两年作者Gavin King以灵活快速的迭代发布,使得Hibernate快速发展起来。

2003年6月8日,Hibernate2发布,提供了对大多数主流数据库的良好支持,提供了完善的 数据关联、事务处理、缓存管理、延迟加载机制实现,同时堪称典范的开发文档(Hibernate Reference)也为广大用户提供了一份清晰易懂的参考手册。

2003年末,Hibernate获得了Jolt2004大奖并且Hibernate被业内知名的开源组织JBoss收纳,成为从属于JBoss组织的子项目之一。这两个时间确立了Hibernate在Java ORM架构中的主导地位。[12]

2.5.2 Hibernate工作原理

Hibernate的基础代码包括POJO和Hibernate映射文件。

POJO在Hibernate语义中理解为数据库表所对应的Domain Object。这里的POJO是所谓的“Plain Ordinary Java Object”,指无格式普通Java对象,可以简单地理解为一个不包含逻辑代码的值对象,这样的类只包含字段的get和set方法。

Hibernate是一种“对象—关系型数据映射组件”,它使用映射文件将对象和关系型数据相关联。在Hibernate中,映射文件通常以“.hbm.xml”作为后缀。

Hibernate配置文件主要用于配置数据库连接和运行时所需要的各种属性。主要配置内容为:SessionFactory中的数据库URL配置、数据库JDBC驱动配置、数据库用户名配置、数据库用户密码配置、数据库适配器配置,映射文件配置等等。

由于Hibernate对JDBC进行的很好的封装,所以我们并不需要直接通过JDBC操作数据库表,而是通过Hibernate间接使用。

首先通过Configuration config = new Configuration().configure();得到Configuration类,Configuration类负责管理Hibernate的 配置信息。

再通过SessionFactory sessionFactory = config.buildSessionFactory();得到sessionFactory,SessionFactory中保存了对应当前数据库配置的所有映射关系,同时负责维护当前二级数据缓存和Statement Pool。

Session是Hibernate持久化操作的基础。这里的Session与传统意义上的Web层HttpSession没有什么关系。Hibernate Session 之与Hibernate,相当于JDBC Connection 之与JDBC。

Session通过 Session session = sessionFactory.openSession();得到,Session作为贯穿Hibernate的持久化管理器核心,提供了众多持久化方法,如save、update、delete,find等。通过这些方法我们就可以操作数据库了。

Session是一个轻量级对象。通常每一个Session实例和一个数据库事务绑定,也就是说,每执行一个数据库事务,都应该先创建一个新的Session实例。如果事务执行中出现异常,应该撤销事务。不论事务执行成功与否,最后都应该调用Session的close()方法,从而释放Session实例占用的资源。[13]

2.6 Tomcat应用服务器介绍

学习Servlet技术,首先需要有一个Servlet运行环境,也就是需要有一个Servlet容器,这里介绍Tomcat。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,它是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持, 最新的Servlet和JSP规范总是能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器

Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。[14]

图2.6是Tomcat服务器接受客户请求并做出响应的过程。

图2.6 Tomcat服务器接受客户请求并做出响应的过程

1客户端(通常都是浏览器)访问Web服务器,发送HTPP请求。

2 Web服务器接收到请求后,传递给Servlet容器。

3 Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。

4 Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。

5 Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。[15]

2.7 MySQL数据库介绍

2.7.1 数据库的历史和发展

在当前信息时代,作为信息管理的主要工具——数据库技术得到了广泛的应用。数据库一词起源于20世纪50年代,当时美国的研究人员为了战争的需要,把各种情报集中在一起存储在计算机中,称为 Information Base 或 DataBase。半个世纪以来,数据库技术已经成为计算机领域中最重要的技术之一,它是软件学科中一个独立的分支。数据库技术的出现使得计算机应用渗透到工业、农业、商业、行政、科研、工程、国防、军事、文化教育等各个部门,渗透到社会的每个角落,并且正改变着人们的工作和生活方式。管理信息系统、办公自动化系统、决策支持系统等都是使用的数据库技术的计算机应用系统。数据库技术已经成为了信息高速公路的核心组件技术[16]。当前主要的数据库产品有IBM的DB2当前版本为9,Microsoft 的 SQL Server当前版本为2005,Oracle数据库当前版本为11g,和开源社区的MySQL当前版本为5.1。

2.7.2 MySQL介绍

MySQL:

MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。

MySQL网站(http://www.mysql.com)提供了关于MySQL和MySQL AB的最新的消息。

MySQL是一个关系数据库管理系统

关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“MySQL”中的SQL代表“Structured Query Language”(结构化查询语言)。SQL是用于访问数据库的最通用的标准语言,它是由ANSI/ISO定义的SQL标准。SQL标准发展自1986年以来,已经存在多个版本:SQL-86,SQL-92,SQL:1999,SQL:2003,其中SQL:2003是该标准的当前版本。

MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。[17]

MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。

2.7.3 MySQL的主要特性

·使用核心线程的完全多线程。这意味着它能很容易地利用多CPU。

·C、C++、Eiffel、Java、Perl、PHP、Python API

·可运行在不同的平台上。

·多种列类型:1、2、3、4、和8字节长度的有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET和ENUM类型。

·利用一个优化的一遍扫描多重联结(one-sweep multi-join)非常快速地进行联结(join)。

·通过一个高度优化的类库实现SQL函数库并且像他们能达到的一样快速,通常在查询初始化后不应该有任何内存分配。

·一个非常快速的基于线程的内存分配系统。

·函数名不会与表或列名冲突。例如ABS是一个有效的列名字。对函数调用的唯一限制是函数名与随后的“(”不能有空格

·支持ANSI SQL的LEFT OUTER JOIN和ODBC语法。

·所有MySQL程序可以用选项--help或-?获得联机帮助。

·服务器能为客户提供多种语言的出错消息

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/205815
推荐阅读
相关标签
  

闽ICP备14008679号