基于Servlet的网上报名系统的设计与实现 - 副本

上传人:无*** 文档编号:149874717 上传时间:2022-09-08 格式:DOC 页数:51 大小:892KB
返回 下载 相关 举报
基于Servlet的网上报名系统的设计与实现 - 副本_第1页
第1页 / 共51页
基于Servlet的网上报名系统的设计与实现 - 副本_第2页
第2页 / 共51页
基于Servlet的网上报名系统的设计与实现 - 副本_第3页
第3页 / 共51页
点击查看更多>>
资源描述
工程硕士专业学位论文(设计)题 目 基于Servlet的网上报名系统的设计与实现 作 者 完成日期培养单位 四 川 大 学 指导教师 指导教师 工程领域 软 件 工 程 授予学位日期 2007年12月 日基于Servlet的网上报名系统的设计与实现软件工程 领域研究生 * 指导老师 *近年来,尤其是随着信息化的迅速传播,各类网上报名接踵而至,网上报名的当务之急就是引入现代化的信息技术,这既是机遇也是挑战。本文主要研究背景是某外语考试的网上报名系统项目。所构设的网上报名系统是集考务管理为一体的网上报名系统,其除了包括网上信息采集、数据库操作、安排准考证外,还有考试管理、数据下载上传、下载准考证等,它在考生与教育部门之间搭建了一座相互交流的平台。该设计系统主张采用JSP/JavaServlet技术和B/S模式,利用JavaJDBC与数据库连接,使用连接池提升Servlet访问数据库的效率。本文对该系统的市场分析、设计原则、系统开发模式和系统运行平台进行了阐述,且对系统数据库结构和访问原理进行了详规介绍,同时,详细地描述了各功能模块的结构和实现过程,其中除了有系统考生网上报名模块、考生模块、现场报名点管理模块外,还有系统登陆模块、主管部门管理模块以及系统管理员模块等。与此同时,本文除了对系统的用户认证技能、用户角色及数据库安全策略进行阐释外,还详实的阐释了数据库连接池、系统开发与运行中的一些错误的预防与处理机制等。除此之外,给出了一种全新的映射随机算法,既缩减了系统运行时间又提高了其运行效率。采用这些技术和方法,除了能有效地提高系统的安全性外,还能提高系统的并发性,以满足大量用户的需求。关键词: 网上报名;随机算法;数据库连接AbstractSoftware EngineeringGraduate Student: * Adviser: *Since the education reform, especially with the rapid spread of information technology in education, reform of the various types of examinations followed, teaching management in priority is the introduction of modern educational technology, which is both an opportunity and a challenge.This paper studies the background of foreign language examinations the online registration system project. The institutions set up online registration system is a set of test management as one of the online registration system, In addition to including the online information collection, database operations, arranging ticket outside, as well as examination management, data download, upload, download ticket, it built a platform of mutual exchange between the candidates with the education sector.The design advocate the use of JSP/ JavaServlet and B/S mode, to use JavaJDBC for the database connection and using the connection pool to enhance the efficiency of the Servlet to access the database. To the system make the market analysis, describe the design principles, system development model and operating system platform, and the database structure and access to the principle of the introduction of detailed regulations, at the same time, introduce a detailed description of the structure of each functional module and the implementation process, in addition introduce the online registration module of the system, candidates, candidate module, on-site registration point management module, the system login module, the department in charge of the management module and the system administrator module, etc.At the same time, in addition, discribe the skills of the user authentication system, user roles, and database security policies to interpretation, but also detailed explanation of the database connection pool, some errors in the system development and operation of the prevention and handling mechanism. Otherwise, given the mapping of a new randomized algorithms, both to reduce the system operation time and improve its operating efficiency. Using these techniques and methods of addition can effectively improve the security of the system, but also improve the concurrency of the system to meet the needs of the large number of users.Keywords:Online registration,Randomized algorithms,Database connection pool目录1 绪论1.1 网上报名系统的研究背景11.2 网上报名系统的重要性及意义11.3 国内外考试网上报名的发展现状21.3.1 国外研究概况21.3.2 国内研究概况21.3.3 目前考试报名面临的主要问题31.4 主要研究内容32 网上报名系统相关技术42.1 B/S模式42.2 JAVA技术概况62.3 JSP技术82.3.1 主要特点92.3.2 结构模型102.4 Servlet技术112.4.1 Servlet及其功能122.4.2 Servlet与CGI的比较122.4.3 工作过程142.5 JDBC与Servlet的结合152.6 表单技术202.7 身份认证技术202.8 验证码技术212.9 数据库连接池技术212.10 哈希加密技术232.11 正则表达式232.12 本章小结253 系统的需求分析263.1 系统用户需求263.2 系统功能需求273.3 非功能性需求284 系统架构与设计304.1 系统设计原则304.2 系统建模过程概述314.3 过程分析314.3.1 系统范围及系统边界314.3.2 定义参与者314.3.3 定义用例324.3.4 绘制用例图334.3.5 建立域模型344.4 静态结构建模354.4.1 定义子系统354.4.2 发现对象和类364.4.3 定义类之间的联系364.4.4 建立模型374.4.5 为逻辑的数据库模式建模374.5 动态系统建模384.5.1 建立顺序图384.5.2 建立状态图384.6 系统部署395 系统实现及关键问题解决405.1 系统软件平台405.2 系统功能模块具体实现415.2.1 系统实现过程415.2.2 系统功能结构425.2.3 系统功能模块实现过程445.3 系统安全465.3.1 用户权限设计465.3.2 应用视图提高数据库安全性的策略475.3.3 其他安全措施475.4 本系统的数据库访问485.4.1 用连接池提高Servlet访问数据库的效率485.4.2 数据库事务处理495.5 映射随机算法及其改进505.5.1 映射随机算法505.5.2 映射随机算法改进525.6 错误防护处理535.6.1 Java的错误与应对方法53页面的错误与应对方法545.7 本章小结556 系统运行效果566.1 系统概述566.2 各子模块效果576.2.1 系统管理586.2.2 报名管理626.2.3 报名费管理656.2.4 综合查询676.2.5 考务管理696.2.6 权限管理72结论79参考文献81致谢831 绪论 网上报名系统的研究背景报名作为各种活动管理关键环节,对其有着重要意义,不过由于在报名过程中,过于庞大、繁杂的信息及数据使得对报名工作的管理面临较大困难。随着互联网时代的到来,方便、快捷、多样化的网络功能为人们的生产、生活提供了诸多方便,与此同时,也为设计并实现网上报名提供了契机1。随着经济的发展,信息化时期的到来,网上报名是各类活动管理发展的必然趋势,采用网上报名系统能够让报名者突破时间和地域的限制。报名者能够在任何时间、任何地点通过网上报名系统完成报名操作,可以说网上报名系统为众多报名者大开方便之门。同时,网上报名并不需要诸多工作人员忙前忙后,因而在一定程度上即提高了工作效率,又降低了考试成本。 网上报名系统的重要性及意义要想真正实现报名管理信息化,首先要解决的就是报名者数据的采集问题,而利用先进的网上报名系统,能够及时、准确地完成报名者数据的采集的工作,因此网上报名系统的实现对考试管理具有重要意义。采用网上报名系统,能够及时对众多报名者信息进行全面、完整的采集工作;能够真正意义上实现教育改革所提出的“减人增效”的目标;采用网上报名系统,报名者可以随时随地进行网上报名、信息修改等操作,不再受时间和地域限制;同时教育行政机构以及招生考试机构能够及时准确地了解并掌握报名者的全面信息,从而达到招生信息及时、统一、全面、严格、标准等要求,为实现高效、科学、公开、安全的招生管理提供有力保障。在网络化的今天,我国全国硕博研究生的考试报名以及一些省市的高考报名均实现了网上报名2。经过实地调查表明,网上报名的实现极大程度地方便了全国各地的报名者,大大降低了招考办工作人员的工作量,同时使得报名者数据的统计工作迅捷、高效,大大提升了招考办人员的工作效率。网络桥梁的搭建,使得报名者和活动机构的信息沟通不在受时间和空间限制,最大限度地实现了优势互补、资源共享。基于网上报名的诸多优点,其越来越受到报名者及相关教育机构的喜爱和重视,并逐渐成为当下考试报名的主流趋势1。 国内外网上报名的发展现状 国外研究概况通过对美国哈佛、麻省理工、耶鲁以及斯坦福等著名高校的网上报名网站的登录调研发现,这些高校的招生网页不光具备诸如招生简章等一些必备信息,在他们的招生网页上都提供网上提交报名申请表这项功能。报名者不但能够通过招生网页获得该校的招考信息,还能够通过网络进行报名。这一功能使得网页由过去的单向查询变成了双向信息交流。这一重大转变标志着网上报名的真正意义上的实现。 国内研究概况二十一世纪是信息网络化时代,随着互联网技术的飞速发展,目前我国已经有多种行业及资格考试开始利用网上报名系统开展考试报名工作。而大家耳熟能详的托福考试,是我国最先实现网上报名的考试,不过由于当时受诸多因素影响,比如网络环境以及趋之若鹜的报名者等,导致此次网上报名刚一开始,就因为网络负荷过大而出现堵塞状况,许多考生从早晨七八点钟就开始进行网上报名,结果到了下午三四点钟还没能成功报名。基于此次考试报名的教训,之后国内其他考试中心在实施网上报名之前,都作了大量的准备工作,比如由广州招生办举办的自考网上报名、北京市人事考试中心举办的多种技术资格认证考试、计算机四六级考试以及公务员考试等网上报名系统5。上述这些省市在实施网上报名之前,首先将全国各地考生按区域进行划分,在各个区域都设有领取准考证及考试点,同时开通网上支付功能,考生可以通过网络完成报名费的支付。自2003年起,中国教育部首先在硕士学位外语考试及学科综合水平考试中尝试采用网上报名。在2004年。国内一些著名高校如清华、北大等招生规模较大的学校,率先对攻读硕士研究生的全国统一考试采用网上报名,并取得了成功。自2005年,我国教育部对攻读硕士研究生的全国联考全面实施网上报名2。天津市学位办于2004年首先在成人高等教育本科生申请学士学位的英语考试中采用网上报名形式,获得了比较满意的成效4。当前,大多网上报名系统的数据库都是采用的 ASP+ACCESS。因为在网上报名过程中,在同一时间段内,很可能会有数量众多的考生同时进行报名或个人信息修改等操作,这就需要利用数据库进行大量的查询及提交信息等任务,从而致使Web页面反应速度较慢,对考生的正常报名产生一定影响。相比较而言,JSP技术具有效率高、易操作、功能丰富以及可移植性等特点3。 目前报名面临的主要问题目前,我国目前5。采集考试数据不全面也是影响考试管理的重要因素之一。当下的部分考试,考生在报名过程中需要填写信息登记表,由于采用手写方式进行报名登记表的填写,因此考生信息不完整或不规范等问题时有发生,这就使得考试管理机构在一定程度上增加了额外的工作,严重影响了工作人员的工作效率4。 主要研究内容本文以某网上报名系统为背景,对JSP、JavaServlet、JDBC以及数据库连接池技术的部分特征进行了详细论证,并对网报系统中的角色访问控制、信息安全、数据库访问控制以及数据模型等作了详细介绍,还对映射随机算法进行了改进,最终以JSP技术以及JavaServlet技术为基础,设计并开发了网上报名系统,该系统综合了多项先进技术,极大地提高了考试管理机构的工作效率,使得考生能够利用该系统完成所有报名流程,为考生大开方便之门,同时也进一步推动了考试管理的规范化和科学化。此外,考生信息数据的采集只是实现真正意义上的网上报名的第一环节,要想真正达到网上报名的目标,还需要将数据采集工作同网报后期工作进行有效结合。本文一些章节就信息数据采集、考试管理、数据的上传和下载以及随机分配准考证号等内容进行了详细介绍,为网上报名的全面实施打下了坚实基础。2 网上报名系统相关技术2.1 B/S模式B/S模式也就是我们常说的浏览器/服务器模式6。目前,C/S模式和B/S模式是计算机信息管理系统中比较常用的两种模式5。比如表2-1:表2-1 C/S结构和B/S结构的比较传统的C/S结构B/S结构客户端负荷技术标准较重、内部统一低、瘦客户机开放可维护性较差好移植性移植困难好用户界面界面各不相同 统一、易用培训投资大小维护成本高较小支持用户量较小多安全性较好较差适合的网络环境局域网广域网根据上表可知,两种模式的优点和缺点各不相同。上世纪八十年代至九十年代,C/S模式一直占据计算机管理系统中的老大地位,该模式基本上能够在客户端实现全部的工作和表示逻辑以及数据通道代码。不过,面对用户越来越高的需求,运算程度越来越复杂以及不断提速的数据交换频率,致使C/S模式下的计算机系统的维护和升级变得越来越不方便,再加上C/S模式要求客户端必须同数据库进行连接的要求,导致系统支持的用户数量受到一定限制。伴随着Internet以及Intranet的不断发展进步,采用Web技术为基础的浏览器/服务器模式被研发出来,该模式一经出现,就以其具有的开放性、极佳的伸缩性以及较低的维护成本等特点,迅速取代了C/S模式,成为当下计算机管理系统中的“新宠儿”6。三层B/S网络结构计算模式如下在B/S模式中,整个应用逻辑都位于Web服务器上,客户机上仅驻留表示层,此种客户机还可以称作“瘦客户机”。在三层B/S网络结构中,要想扩充系统,只要在中间层加装应用服务器即可,用它能够实现Web服务器及数据库服务器的连接。采用此种方法,能够利用较少的资源取得最大的效果,即使系统的伸缩性有很大程度的提升,这也正是此种新型模式的优点所在。B/S模式是以C/S模式为基础进行的技术升级,它的应用功能主要由表示层、功能层以及数据层构成,因而具有明显的三层体系结构。对表示层、功能层以及数据层实施分割处理,使各个层次能够在逻辑上独立运作。将原有的数据层从客户端独立出来,成为数据库服务器,只需要把表示层配置在客户端上即可。同时将功能层配置在Web服务器上。如此一来,可以大幅降低客户端压力,由Web服务器分担其一部分压力,进而有效解决C/S模式因两层结构而导致客户端压力过大的问题。表示层作为应用用户的接口组成部分,承担着用户同应用之间的对话功效,同时对用户通过键盘等工具录入的数据进行检查,并对应用输出的数据进行显示。功能层指的是能够进行扩展的Web服务器。系统的实物处理逻辑就是功能层的主要功能,具体体现在以下两方面:第一,对表示层发送的数据进行接收,并对接收到的数据进行分析,对分析后的数据信息进行整理后,由Web数据库进行保存;第二,对表示层发送的数据查询请求进行接收,然后将表示层的请求进行转换,以便Web数据库能够对表示层的请求进行识别,通过数据库查询后,将结果在转换成表示层能够识别的格式进行发送。所谓的数据层指的是DBMS,其主要功能就是对数据库中保存的数据进行管理和读写。对DBMS的要求是,能够对巨量的数据进行更新及检索,以满足客户需求,关系型数据库服务器是当下的主流产品,因此,通常情况下由功能层向数据层进行数据传送过程中,大多采用SQL语言7。B/S模式具有以下优点:B/S是以浏览器为基础构建的,其表现形式丰富生动,用户能够通过该模式较为容易的获得多种形式的媒体信息服务;B/S是在广域网上够构建的,不受地域和用户限制,用户不管想要获得哪种信息服务,只需要安装一个通用的浏览器即可;采用B/S模式能够最大限度地降低维护和升级成本,用户对系统升级时,无需购买其它软件,只要在互联网上就能实现在线升级功能;不像C/S结构那样,需要对服务器端和客户端两头进行维护,只要对服务器进行维护即可;具有较高的可操作性,其客户端只是个浏览器软件,方便易懂,用户根本不用进行专门培训就能够熟练操作;B/S结构能够实现程序代码的共享,具有较高的可重用性;能够最大限度减少网络负荷,浏览器和服务器之间并不需要对所有复杂的数据都进行传输,仅需要对计算条件和结果进行传送,进而有效降低了网络负荷8。因为使用网络报名系统进行报名的用户存在地域及素质等方面的差异,我们无法让全部用户都集聚在一起,对他们进行专门培训,同时对该网络报名系统进行升级和维护的过程中,要是采用C/S结构模式的话,不但要对客户端进行维护,还要对服务器端进行维护,会花费较多的人力、物力和财力。基于此种情况,对网络报名系统,我们采取B/S模式,这种模式比较适用于对不同信息进行管理并发布。B/S结构所采用的浏览器是比较普遍的客户端浏览器,比如由Netscape公司研发的Navigator浏览器,或者由Microsoft公司研发生产的 Internet Explorer浏览器,这种客户端浏览器能够有效实现零维护,对系统升级过程中,只要对服务器端进行维护就可以了。这不但极大地降低了维护成本,还进一步使用户获得方便。B/S模式主要由三部分组成,分别是浏览器、Web和数据库服务器这三部分,如果用户对数据库进行访问的话,需要利用一个中间件同其进行交互,而网络报名系统所采用的中间件是JSP/Servlet容器Tomcat。该系统的B/S模式如图2-1:图2-1 本系统B/S结构 JAVA技术概况Java2,Java2平台、最后到SUNONE体系,Java技术经历了由小程序到应用程序,最后发展到目前的Web服务器以及网络计算等,随着Java技术的不断发展,它的应用领域范围也随之发生了很大变化。该技术以其无可比拟的优异性能、开放的体系机构以及先进的技术在计算机领域被广泛应用,并成为该领域的标准7。Java最开始源于SUN公司开发的名为Green的项目,其最初目的就是研发一个适合普通家用电器的分布式代码系统,然后将Email命令发送到洗衣机、电饭煲等电器上,从而实现对多种家用电器的控制及信息交流。在研发这一项目初期,研发人员使用C+语言,不过由于它太繁杂并且没有稳定的安全性,所以被放弃使用。直至1991年,该公司的Jameoosling还有 BillJoe等研发人员,研发除了一种新语言程序,即Oak语言,它具有简单易懂、安全可靠的优点,SUN公司曾以Oak语言为依托,参与了一个交互式电视项目的招标活动,不过标书最终被SGI公司获得。而此时由MarkAndersen研发的Mosai及Netscape,对Oak语言的研发团队给予了极大的启发,该团队成员利用Java语言编制出了HotJava浏览器,该成果得到了SUN公司执行主席ScottMeNealy的认可和支持,从而迈出了Java进军互联网的脚步9。Java不单单是编程语言,它还具有开发平台的功能,程序员在编程过程中所用到的编译器、解释器以及文件打包等工具,都是由Java技术提供的。与此同时,Java还可作为程序发布的平台,它主要有两种发布环境,第一种是J ava运行时环境,它包含有全面的类文件包;第二种是Java解释器和运行时环境。当下,SUN公司根据市场不同需求及设备定位,将Java平台被划为成三个平台,分别是J2EE平台、J2SE平台以及J2ME平台。J2EE平台指的是Java2 Enterprise Edition,它主要面向企业计算机。它具有开发性结构特点,无论是哪家软件生成商都可以生成与其相适合的产品,从而使客户具有多样化的选择权。以BEA公司为首的共29家公司已经推出同J2EE相符合的产品,特别是由BEA公司生产的Weblogic产品以及由IBM公司生产的BsPhare产品,获得了广大用户的一致认可。J2SE指的是 Java2StandardEdition,它的服务目标是台式机及工作站。通常情况下,我们用J2SE平台学习Java技术。J2ME平台指的是 JavaJava技术的目标。J2EE平台、J2SE平台以及J2ME平台的各自特点如图2-2所示10。图2-2 JAVA技术架构图JAVA有如下特点:简单性:Java语言是面向对象的语言,它同C+语言极为相似,所以,C+程序员能够快速对Java编程技术了解并掌握。在Java中,对C+语言很容易导致程序出错的地方,比如指针及内存管理这两处都进行了完善修改。Java能够使类库资源更加丰富,并使编程变得简单容易11。面向对象:Java语言是纯面向对象的编程语言,对于c语言支持的程序设计技术,Java语言并不支持。它所支持的是静态以及动态风格下的代码继承和重用。分布式:Java应用程序可以利用URL对网络上的对象进行访问,并且访问方法基本同访问本地系统所用的方法相同。向互联网发送动态内容是件极为困难的事,不过采用Java却使其变得极为简单。解释性:Java运行系统可以令目标代码指令直接运行。通常情况下,链接程序所需用的资源要比编译程序少得多,因此程序设计人员能够节省更多的时间用在创建源程序上。安全性:Java的安全性主要体现在以下两方面。一是Java语言对C语言的指针功能和内存管理功能并不支持,因此能够有效规避非法内存操作风险。另外,采用类装载能够将本几类同网络资源类的名称进行分割,从而防范木马现象出现,保证安全性。可移植性:跨越平台的特点能够让Java较为容易的进行不同服务器间的移植。与此同时,Java类库也能够建立了与不同平台间的接口,从而使得Java类库也能实现跨平台移植。而且Java系统自身就拥有可移植性的特点。高性能:如果Java运行系统的速度较快的话,它能够在运行的过程中将目标代码直接翻译为服务器指令。这样能够有效提高其性能。多线程:Java具有的多线程功能能够确保在一个程序里,多个小任务可以同时执行。同时其特有的同步机制还可以有效保障正确操作共享数据。利用多线程功能能够使互联网交互性行为变得更加容易。动态性:Java具有的动态性可以使程序运行中所需的类进行动态装入,而这一功能是C+语言所不具有的。同时Java下的多继承同C+语言下的类继承相比,具有方式更灵活以及更强的扩展性特征。 JSP技术随着科技的发展以及网络化社会的到来,互联网已经成为人们生产生活过程中不可或缺的一部分,人们可以通过互联网实现学习、购物以及交流等多项服务,可以说,人们当前的生产生活方式正在被网络所改变。特别是以WWW为基础的互联网,因其具有更加优良的交互性以及绚丽多彩的内容,成为众多网民眼中的“宠儿”,与此同时,也为Web技术的快速发展创造了机会,各种以Web为基础的技术以及计算机语言,受到越来越多的网民的喜爱。由一开始的HTML发展到目前的JSP、PHP以及ASP等技术,都表现出Web技术正在向着越来越完善成熟的趋势发展,特别是JSP技术独有的无关性及较为容易的维护性特点,再加上引进Java语言所具有的特点,使其被人们认为是当下以及未来最有发展前景的动态网站技术。JSP技术的全称是JavaServerPages、使用该技术能够把纯Java代码镶嵌在HTML中,从而达到实现动态功能的目的。它可以让Web研发以及网页设计等相关人员方便快捷的开发出,既实现动态又易于维护的Web主页。利用JSP技术开发出来的Web应用程度,能够在包括Windows及Linux等在内的多种操作系统上运行。JSP技术一经发布,就引起了人们的广泛关注。 主要特点早些时候,CGI技术是开发网络数据库过程中应用最多的程序。对CGI程序进行编程过程中,能够采用多种编程语言,比如Delphi、C/C+等语言。虽然该技术具有较强的功能,不过由于其存在效率较低、不易编程和修改等不足,因此逐步向被功能更强大,更便于维护的新技术所取代的方向发展。基于此种情形,各种新技术如雨后春笋般崛起,比如在Microsoft公司研发的 AS技术以及SUN公司研发的Java、JSP、Servlet等技术。在这些新技术中,由于JSP利用了Java的所有优点,具有较高的伸缩性特点,因此同 JavaEnterpriseAPI之间形成紧密集成的关系12。SP技术具有的主要特点有以下几方面:第一,将内容的生成和显示进行分离。Web页面开发人员可以采用JSP技术,能够运用HTML或XML对Web页面进行设计。对于Web页面上的动态内容,可以用Java技术或小脚本技术来完成。生成内容的逻辑可以封装在标识及JavaBean组件中,这样其他工作人员既可以对JSP页面进行编辑和使用,还不会对内容的生成产生不利影响。在服务器端,技术人员可以利用JSP引擎对小脚本及JSP页面进行解释,从而生成客户所请求的内容,并将生成内容以HTML页面或XML页面的形式发到浏览器上。这样既能够保证作者代码的安全性,又能够保证所有基于HTML技术背景下的Web浏览器具有完全可用性13。第二,生成可重用的组件。通常情况下,大部分JSP页面要借助具有可重用及跨平台组件,处理那些比较复杂的应用程序,比如JavaBeans组件等。对于那些普通的操作组件,开发人员可以进行共享或者是交换执行,也可以用让这些普通组件服务更多的客户或团体组织。组件的出现使得系统总体开发速度大幅提高。第三,采用标识简化页面开发。对JavaBeans组件进行访问记实例化、能够对组件属性进行检索或设置以及下载Applet等都是标准JSP标识所具有的功能。利用开发定制标识库的措施,能够将JSP进行扩展。软件第三方开发人员以及其他有关人员能够通过JSP技术,根据常用功能开发创建属于自己的标识库。从而使Web开发人员可以利用具有特定功能的组件及工具完成工作任务。第四,JSP可以提供所有Servlet功能。在对进行书写或修改方面,相比较而言,JSP技术要比Println更加实用,也更为方便。另外,还可以将各环节的分工更加清晰明确,比如可以由Web开发人员编写出HTML,然后再由Servlet程序员将动态内容插入页面。强大的存储管理及安全性功能:由于JSP技术是基于Java形成的,因此该技术同样拥有Java全部优点,而强大的存贮管理及安全性优点正是Java技术独有的优点。一次编写,随处运行:JSP技术就是Java开发平台的一部分,所以Java技术所具有的一次编写,随处运行的优点,JSP也同样继承了该方面的特点。正是基于JSP的这些优点,更多的供应商都将JSP技术应用在他们所生产的产品中,而消费者能够利用该技术去选择自己喜爱的工具和服务器,不会对他们的应用产生任何影响。JSP具有更广泛的应用平台:同ASP相比,JSP几乎适用于所有应用平台,比如Java、JSP+JavaBeans等,当JSP及JavaBeans由一个平台转移到另一个平台时,根本不用进行再次翻译,可以直接移植。不过同ASP一样,Java的某些优也为它带来了新的问题。比如它所具有的跨平台的功能,就因为要增加伸缩能力而使产品的复杂性也随之增强。由于Java的运行速度的完成依赖于class常驻内存,因此它在通常情况下所采用的内存,和它的用户数量来说应该算得上“最低性能价格比”。另外,Java及class文件的存储还需要相应的硬盘空间来完成14。 结构模型JSP模式1和JSP模式2是建立在JSP基础上的两种应用模式。它们两者之间的最根本的区别就是发送处理请求的位置各不相同。在JSP模式1中,JSP文件请求由浏览器发送,然后对Bean组件进行访问或者访问可以将动态内容发送给浏览器的组件。由PlicationServer将该文件实施语法分析,然后生成JSP源文件。该源文件并不是任何时候都发生的,仅会在第一次调用Servlet过程中才会生成。在JSP模式2中,将Servlet技术和JSP技术相结合,也就是说显示内容采用JSP技术来完成,而将数据生成动态内容的任务由Servlet技术进行。当用户的数据请求发送到Servlet控制器后,由其创建出JSP需要的对象或者Beans,在依据用户的操作,把数据发送到JSP“view”进行显示。在JSP页面中,不会对任何的商业逻辑进行处理,它仅会对Servlet创建的对象或者Beans进行检索,然后把生成的动态内容插入到已经提前定义好的模板中。如果仅从开发的角度去观察的话,我们认为JSP模式2要比模式1将内容生成从内容显示分离出来的过程更加简捷。两种模式都具有较为清晰的整体结构,都比较容易实现。它们的主要目的都是要最大限度对Web页面中的外观制作和应用逻辑实施分离。在JSP模式1中,绝大多数的处理都在JavaBeans组件上完成,JSP文件的功能主要是为了生成动态的网页,而在JSP模式2中,是由Servlet对HTTP发送的请求进行处理的,JSP文件只是单一的进行生成网页这一任务。此种设计方式,使得网页部分和应用逻辑部分所拥有的开发条互不相干,是相互独立的一个关系,使得修改和维护变得较为容易。JSP两种模式都具有效果极佳的实用性。当然,并不是说只有这两种模式才使用JSP/Servlet技术,最重要的是通过这两种模式,充分了解并掌握JSP/Servlet的特点,然后针对不同客户的不同需求,有针对性的选择合适的模式,从而实现不同需求的交互处理。本文所介绍的报名系统选择的是JSP模式215. Servlet技术在Java技术领域,大家最为耳熟能详的就是Applet的名字了,Applet的出现使得WWW世界充满了青春的活力,更是让Web页面由落后的静态转变成了更加先进的动态。Applet所具有的强大的功能使其成为互联网世界中不可或缺的重要组成部分。不过Applet只应用在客户端,SUN公司为了支持B/S模式,对服务器实施了多方面的研发,希望创建出以Java为核心的服务器体系,并首先开发出了一款被称之为JAVA WEB SERVER的服务器。Servlet是该服务器的灵魂,自此之后,各大软件公司都纷纷加入到开发支持JavaServlet的Web服务器的队伍中,比如Apache Jserv就是由世界著名软件公司自由软件Apache,专门开发的一款支持JavaServlet的引擎。而有的Web服务器根本不需要其它引擎,本身就具备支持JavaServlet的功能,比如JRUN服务器16。2. Servlet及其功能Servlet的中文翻译就是服务器小程序,它同在客户端运行的Applet程序互相对应,这两个程序都是采用Java语言编制的。Servlet程序并未采用Main方法进行启动,而是采用其它特定的方法来执行启动、运行以及退出等命令。该程序即能够同在客户端上运行的Applet程序实施交互行为,也能够同HTML页面进行直接交互活动,具体如图2-3所示:图2-3 Servlet与前端交互Servlet同协议没有直接关系,只是一个跨平台的服务组件,它就像Applet同WWW集成在一起一样,同服务器集成在一起,然后起到在互联网上实施远程动态加载的作用。在被开发的初始阶段,Servlet主要被集成在HTTP下的Web服务器上,不过通过对它的进一步改进,最终它能够同任何服务器进行集成。Servlet位于服务器端,而Applet位于客户端上,它在Web服务器中的运行,和Applet在Web浏览器上的运作相同。因为Servlet在服务器端上运行,所以Servlet程序不会设置同用户间进行交互活动的接口,不过Applet却对公用网关接口提出了比较高的运行要求。Servlet在服务器端接收由客户端发送来的客户数据请求,然后再将数据请求处理结果发送回客户端。目前,在很多大型应用中,Servlet被作为互联网同Java之间连接的桥梁16。 Servlet与CGI的比较CGI指的是公用网关接口,它的作用是使Web站点对用户所显示的不再是静态信息,而是动态的信息。事实上,公用网关接口就是在Web站点中所有能够同用户进行交互的程序标准。通常情况下,它的作用就是用于超文本文件与服务器之间的信息传递。公用网关接口脚步大多被用来向发送数据请求的客户提供动态的内容,并同Web浏览器进行通信,比如,用户在浏览器中填上所要访问的内容后,向Web服务器提交,而Web服务器就会用公用网关接口调用该脚本,对Web客户端发送的客户请求进行处理,具体如图2-4所示17:图2-4 拥有CGI脚本的Web服务器体系结构公用网关接口的工作步骤为:某个用户发送请求,要将某个CGI应用程序激活;CGI应用程序通过交互主页,对用户发送的请求信息进行提取;CGI以提取的用户信息为依据,对服务器上的某些应用程序进行调用,比如数据库查询程序;服务器将公用网关接口对用户信息处理完成后的结果,以HTML文件的形式通过客户端发送给用户,至此,整个CGI进程全部完成。不过采用CGI脚本对用户请求进行处理的速度要比应用Servlet的速度慢。这主要是由于Servlet程序在服务器上运行的是Java虚拟机,只要是调用同一个Servlet,不管多少次,都只需加载一次,所以速度要比CGI脚步快得多。不过在Servlet发生改变后,就需要进行重新加载。在重新加载Servlet后并不需要重启计算机。CGI的执行性能也要稍逊于Servlet。通常情况下,CGI并不是同WWW服务器有着相同的进程,它是独立的,一个CGI应用程序只对应一个用户请求。因此,每当用户发送一个请求,就会打开一个CGI应用程序。一旦客户发送请求数量较多的情况下,就会导致CGI应用程序占用大量的系统资源,从而影响服务器的工作效率。SUN公司专门为Servlet提供了一个标准的API,以确保开发程序的一致性。ServletAPI的主要特点就是它同协议没有任何关系。以下内容都是它没有包含在内的:网络传输协议、加载方法以及它运行时的服务器环境。究其主要原因是由于ServletAPI会被应用在不同类型的服务器上,如果它包含以上内容的话,会严重限制他的应用范围18。 工作过程由图2-5所示,JSP/Servlet支持HTTP的请求/响应模型,通过线程工作方法对客户由浏览器发送的请求进行反应。用户由客户端发送的Servlet数据请求,将由Servlet引擎直接进行处理。当JSP接收到用户的请求后,JSP文件会由JSP引擎转变为Servlet程序,即将其编译成Java语言下的字节代码文件,也就是所谓的Servlet程序。在Servlet引擎接收到由客户端发送的客户请求后,如果对其设置要求采用最新的JSP的话,它会自动寻找JSP文件,并对该文件进行检查,确定JSP文件是否被改动过。如果确定JSP文件被改动过,就会对其进行重新编译,不过最后的结果是一样的,还会将用户请求发送给已经编译好的Servlet程序,然后由Servlet引擎将用户请求处理后转变为HTML格式文档,发送到客户端上。因为Servlet一直驻于内存上,因此具有较快的反应速度。一旦JSP文件被修改过,服务器会自动对修改后的文件进行重新编译,重新编译后的文件将会替代内存里的Servlet,同时继续完成以上处理过程。JSP技术从动态的内容中把静态的HTML分离出来,这种方法要同Servlet技术相比较,要方便的多。同时Servlet并不支持某些HTML元素以及Javascript脚本。不过江程序模块只在JSP中,嵌入大量的Java代码并将全部的应用逻辑都进行集中的话,就会导致程序代码艰深晦涩,不利于系统的维护。本文所介绍的报名系统充分结合了JSP以及Servlet的特点,它们两个着重点各不相同,JSP和Servlet分别着重于表示逻辑和业务逻辑19。图2-5 JSP/Servlet工作过程 JDBC与Servlet的结合计算机的主要用途就是对数据的存储和管理功能。随着网络化时代的到来,人们可以利用互联网对数据库进行访问。不过在Java技术研发之前,要想在互联网上进行访问的话,必须采用CGI来完成。因为CGI具有较低的工作效率,所以当JavaServlet被开发出来后,如何将JavaServlet同数据库进行有效结合,从而开发新的软件是件极为重要事情。JDBC是由Java soft公司研发的同JAVA程序有关联的API类数据库,它同Java在某些特点上是一样的,比如它也独立于开发平台及数据库。Java虚拟机只有本地 driver manager才会使得JDBC在平台上有效运行。通过JDBC能够比较容易的完成基本查询,生成及修改等数据库任务。对于那些比较复杂的数据库任务来说,JDBC有单独的语句来实现。JDBC能够为自动程序及设计者工具提供专门的metadata类及方法,从而实现对数据库以及表结构等信息的操作。它主要在Java.sql包中实现上述功能。要想在Java程序中实现这些功能,必须利用importJava.sql语句导入 Java.sql包。具体实施流程由下图可知。在API层下,驱动程序管理器作为Java虚拟机的组成部分,是为各种操作系统和硬件服务的。JDBCdriverManager不但能够专门为特定的数据库服务,也能够为其它的数据库提供服务。SUN公司开发的不但有通用的 JDBCdriverManager驱动程序,还包括专为ODBC开发的驱动程序。因为JDBC同ODBC的设计方法极为接近,所以软件开发人员还有那些软件生产商能够较为容易掌握由Java开发的数据库应用程序的操作法。JDBC主要有连接口、结果组、语句以及动态驱动程序等组成。JDBC的结果组中包含有数据流及其说明。对于数据流的说明称之为resultsetmetadata。利用 Java.sql法能够对结果组中包括的列名及数据类型进行查询。为了进一步增强数据库的访问功能,Oracle公司及Sybase公司以自身的数据库特点为前提,开发出了能够对自己资料库进行直接访问的驱动程序,即JDBC程序。图2-6是SUN公司及其它数据库生成商的实现方案20。图2-6 数据库访问实现方案通过图2-7可以发现JDBC的类层次关系。JDBC的对象正处于递进层次关系,由Driver Manager将对象连接到数据库,然后在返回到连接对象。在连接对象执行SQL的语句所用的方法是语句相关法。对结果组的数据资料采用一列一列,一行一行的方式进行处理。图2-7 JDBC类层次图JDBC的类型主要为语句、数据以及实现等。由表2-2列出了上述类型。此前对Web数据库访问的效率低下的原因是,之前服务器大多采用CGI对数据库进行查询,而该程序在启动过程中,要对数据库的所有数据实施查询,而查询时间都维持在10s左右。如果将Servlet同JDBC结合起来的话,能够有效提高数据库的应用性能21。表2-2 JDBC类型在Java程序对JDBC产生需求时,它先要登记一个driver类,创建出Java.sql.connection对象及其它的对象。然后创建出Java.sql.statement这个最为基本的类,利用它对数据库进行操作。下面对较为简单的 JDBCServlet例子进行具体介绍:tryClass.forName(,SUN.JDBC.odbe.JDBCOdbeDriver,);Cormeetioncon=DriverManager.getConneetion(,JDBC:odbeaamPledata,”,”);Statemelltst=con.ereatestatement(); Resultsetrs=stmt.exeeuteQuery(, seleetNamefromeustomers,):Out.Priniln(,);While(rs.next()out.Priniln(,”+rs.getstring(,Name,);outprintln():rsclose();stmt.close();conclose();catch(SQLExeePtione)out.Println(, AnSQLExcePtionwasthrown.”);根据上述例子可知JDBCServlet的具体执行过程为:首先要加载JDBCOdbCDriver;然后同用户所要访问数据库的JDBC URL进行连接。在上述例子中,Driver就是JDBC,而数据库则为命名为Sample data下的odic数据源。而get-connection参数为用户名及口令;如果我们完成了一个连接,那么就意味着创建出一个Statement程序。我们利用建立的Statement程序进行SQL查询任务,用返回结果为Result set的对查询后的数据反馈进行显示。我们为了有效增强其性能,还要在init()方法中创立一个connection对象。从而方便Serialist调用过程中实现重用,有效解决对每一个Statement都要操作一次的connection,在一定程度上降低了成本。不过要想在数量众多的Statement间,共同享有对象的话,有一个问题是需要解决的,即资源的并发控制问题,通常情况下,我们用同步机制法来实现对资源的合理控制。此法方便简捷,同时Java对其也有不错的支持,因此在一些简单的应用逻辑中,利用同步机制法来控制资源的共享问题。 JavaServlet作为安全线程来说,就是Web服务器在调用service()时,在此种方法进行任何操作前完成调用。这就导致在使用全局变量过程中,要对访问实施特别处理才可,一旦不同的线程无法以正确顺序对变量进行访问的话,就会产生问题。Java由一个关键字synchronized来支持多线程的同步。而关键字synchronized总计有两种不同用法。第一种是将一个完整的方法进行标记,将其标记为同步后就会使该方法结束,而在运行前,别的方法根本无法对该方法中的变量进行修改。采用此方法在确保正确性的同时却对性能产生了一定影响22。而另一种用法就是采用一个小代码段将其标记为同步,具体如下所示:synchronized(this) balance=balance+deposit;out.Println(“NewBalance:”+balanee);采用这一段小代码可以有效确保在变量增多及显示间,其它方法不会对balance变量进行修改,此种方法能够降低同步语句粒度,尽最大努力使能够并发执行的语句数量增多。.1 表单技术表单的作用就是对用户输入的各种信息进行收集和提交,它是HTML中的不可或缺的组成部分。在一对.标记中会含有一个表单,其中name及action等都是表单的属性,name代表的是表单的名字,在每一个表单内系统都会默认一个名字为form,如果一个界面里有多个表单的话,系统就会以form1、form2的形式进行表单名字的默认;action代表的是接收数据服务器的URL,也就是说将表单数据交由哪个页面进行处理;method代表的是数据提交方式,提交方式主要包括get和post。如果采用get方式实施数据提交任务的话,所提交的数据将会以明文显示的形式出现在浏览器的地址栏内,该方式不适用于那些敏感数据的提交;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!