第一章绪论 1
1.1引言 1
1.2开发内容管理系统的重要意义 1
1.3内容管理系统的国内外发展现状 2
1.4本文研究的内容及所作的工作 3
第二章J2EE技术规范 4
2.1J2EE总体概述 4
2.1.1J2EE 的发展 4
2.1.2J2EE 的优势 4
2.1.3J2EE应用程序的结构 5
2.2基于J2EE的WEB应用解决方案 6
2.2.1基于B/S的多层分布式结构 6
2.2.2J2EE Web应用多层结构 8
2.2.3基于J2EE的多层Web应用实现方法及比较 9
2.3J2EE核心技术 10
2.3.1组件技术 10
2.3.2服务技术 14
2.3.3通信技术 18
第三章数据库通信和连接池技术 21
3.1JDBC 技术 21
3.2访问数据库 23
3.3几种不同的连接方式 25
3.4连接池技术 25
3.4.1数据库连接池技术的原理 25
3.4.2工作机制 26
第四章内容管理系统的分析与设计 30
4.1系统的需求分析 30
4.2系统的目标 31
4.2.1系统的性能指标 31
4.2.2系统的功能指标 32
4.3系统的总体设计 33
4.3.1系统的结构 33
4.3.2网络拓扑结构 34
4.4系统的数据结构设计 35
4.4.1数据库设计原则 35
4.4.2主要表结构 36
4.5系统详细设计 39
4.5.1身份验证与授权模块的设计 39
4.5.2类别管理模块设计 42
4.5.3用户管理模块设计 45
4.5.4新闻管理模块设计 46
4.5.5商务信息管理模块设计 47
第五章内容管理系统的实现 49
5.1系统开发平台的建立 49
5.1.1数据库的选择 49
5.1.2开发语言和工具的选择 51
5.2数据库连接池的设计与实现 54
5.2.1总体实现 54
5.2.2貝体过程实现 54
5.3系统主要功能模块的实现 55
5.3.1身份验证模块的实现 58
5.3.2类别管理模块的实现 59
5.3.3用户管理模块的实现 63
5.3.4新闻管理模块的实现 65
5.3.5商务信息模块的实现 69
5.4关键技术 71
5.4.1数据库优化技术 71
5.4.2组件技术 72
5.4.3安全技术 72
第六章总结与展望 73
6.1总结 73
6.2进一步研究 73
参考文献 75
致 谢 77
作者简历 78
第一章绪论
1.1引言
中国实施政府上网工程以来,电子政务的内网和外网建设成为政府上网工程的热点。企业也 开始建立网站用以实现企业信息化、电子商务、宣传企业形象等。目前国内政界和商界的信息化 发展很快,但同时也存在一些问题,国内约有1/3的网站难以打开,约有1/3的网站应用价值比 较低,还有相当数量的网站存在网站建设困难、信息更新不及时、服务功能不健全、发布的消息 无时效价值等现象。例如:根据需要突然增加个栏目,可是却需要美工人员来设计,专业人员来 编码,整个过程相当复杂;只是想修改一下栏目的名称,需要改动几个字,居然会花费一天的时 间,甚至需要专业人员修改;维护网站,不得不聘了大量网页制作人员,网站的维护成本太高; 当你管理着外网或者内网时,栏目一个个增加,需要发布的信息越来越多时,发现让网站的内容 保持更新成为一件棘手的事情。等等这些问题的存在对网站的发展造成了制约。采用网站内容管 理系统就能很好的解决上述问题,它是一个很好的管理平台和发布平台,提供直接的接口给管理 或业务人员;其通过对机构中各种类型的数据资产的产生、管理、增值和再利用,增加了内容的 价值,快速廉价的内容更新,并提高准确度,降低信息获取的开销。为技术创新提供支持,改善 组织的运行效率和提高企业的竞争能力。
内容管理由两部分组成,“内容”强调对象,“管理”强调方法。什么是内容?内容是任何类 型的数字信息的结合体,可以是文本、图形图像、Web页面、业务文档、数据库表单、视频、声 音文件等。应该说,内容是一个比数据、文档和信息更广的概念,是对各种结构化数据、非结构 化文档、信息的聚合,这在某种程度上也包含了知识。什么是管理?管理就是施加在“内容”对 象上的一系列处理过程,包含收集、确认、批准、整理、定位、转换、分发、更新和存档等,目 的是为了使“内容”能够在正确的时间、以正确的形式传递到正确的地点和人。
内容管理可以定义为:协助组织和个人,借助信息技术,实现内容的创建、存储、分享、应 用和更新,并在企业个人、组织、业务、战略等诸方面产生价值的过程。而内容管理系统就是能 够支撑内容管理的一种工具或一套工具的组合。
网站内容管理系统不仅是一种可以建设网站,管理网络资源的工具,更是一种高效的信息发 布系统。
1.2开发内容管理系统的重要意义
随着Internet的快速发展,内容管理已成为所有Web应用的基础。从电子政府、企业信息化、 综合性网站,到垂直门户、数字图书馆、远程教育、远程医疗,乃至所有的电子商务应用,都是 围绕内容的采集、创建、存储、管理、发布、检索和服务,这是用户核心的需求。提高内容管理 的效率和质量,可以从以下几个方面带来好处:
1、 用户能够方便的搭建网站、增加栏目、修改栏目的属性或者决定发布的内容,以及方便 的管理系统的信息。
2、 用户已经习惯于从企业的网站上了解最新的产品和服务信息。保证网站上信息的及时更 新是企业进行市场工作的必要组成部分。
3、 用户逐渐地产生个性化内容的需求,特别是企业面向大量的顾客时,用户希望看到的内 容是经过定制的,动态地进行个性化的。
4、 企业越来越依赖T Internet,良好的内容管理流程对于提高生产率起到重要作用。企业再 也不用一而再、再而三地在电话服务里向顾客解释一个技术问题,而只需要简单地放置到网站上 即可。
5、 市场部门需要及时地在线开展市场活动,以应对企业快速推出的新产品或新版本。对市 场的反应迟钝带来的后果是失去市场份额。
6、 错误的信息对于客户关系是致命的打击,不可想象顾客可以忍受因为错误的操作指导引 起经济上的损失。
7、 雇佣庞大的网络系统维护队伍,对于企业是一笔不必要的开支。
而使用内容管理系统可以使得内容制作人员高效地从他们熟悉的操作系统环境进行Web内 容的发布。网站结构管理和模板技术,可以提高效率,通过降低长期维护成本降低投资总成本, 对不断变化的客户需求和竞争威胁做出反应。
1.3内容管理系统的国内外发展现状
目前,无论在国内还是在国外,内容管理系统产品都处在开发应用的黄金时期。根据META 集团的报告,在全球2000强公司中,采用网站内容管理的企业在2002第一季度就达到了 60%, 到了 2004年底,全球内容管理市场已经超过100亿美元,采用网站内容管理系统的全球2000强 企业占到90%多。IDC公司则认为,网站内容管理市场将以年均44%的速度增长,到2006年将 达到240亿美元的规模。
在国外,内容管理产品市场主要由四大提供商把持。据Forrester Research公司2001年对北 美地区874位高级主管的调查表明,Interwoven公司的企业内容管理解决方案以28%的应用比例 遥遥领先,Z后的是Vignette公司,占据16%的份额,Documentum公司占据15%份额。微软公 司在2001年5月份购买了加拿大企业NCompass Labs之后获得了该公司的Resolusion软件产品, 并更名为Microsoft内容管理系统,该系统占据14%的市场份额。
对丁国内市场来讲,国外的那些厂商在内容管理的影响力、技术、资金等方面具有一定的优 势,但他们的产品面向的应用规模较大、功能大而全,价格昂贵、技术应用难度高、不支持中文 等问题是制约他们目前在中国快速发展的原因。因为中文内容管理技术和市场与国外相比,具有 一定的特殊性:
语言处理问题:这些内容管理产品都来自国外厂商,在内容的理解、检索和表示方面,都以 英语为主要语言,这对国内绝大多数用户来说是无法接受的。
工作流程问题:受到中国国情的限制,国内无论在政府机构还是企业,其工作流程还没有完 全实现国际接轨,和国外仍有巨大的差别。这使得他们对内容管理系统在流程控制上的要求也与 国外不同。
成本问题:这些产品的价格相当高,以微软的内容管理系统为例,其售价高达每个处理器 42999美元。而且内容管理实施的成本在国外也要在一年后才能完全收回并产生效益,加上服务 的费用,对于国内用户来说,特别是中小企业来说,这是一个巨大的投资和风险。
随着国内信息产业的发展,内容管理越来越受到政府和企业的重视。在2003年北京市政府 采购内容管理产品后,云南、陕西等省份也开始进行电子政务的建设。在企业方面,联想集团、 海尔集团等国内大型企业也纷纷展开企业网站内容管理的建设。目前,国内的内容管理产品市场 却远未发育成熟。大部分的内容管理提供商是在原来的办公软件提供商的基础上发展起来的,产 品的质量、功能和性能与国外相比仍有巨大差距。
1.4本文研究的内容及所作的工作
中国农业机械装备经过50多年的建设,已形成了具有相当规模的农业机械工业体系。在经 济全球化和市场国际化的趋势下,我国农业工程和设备技术产品必须走向世界,提高参与国际市 场的竞争力。但是,由于生产企业的位置分散、产品的品种繁多、技术标准的复杂以及信息不畅 等原因,导致在农业机械装备领域没有形成网络资源共享体系,其结果是给农业机械装备整个行 业的发展形成障碍,与世界发达国家的差距增大。
农业机械装备网是国家科技部于2003年11月开始支持的项目,其目的是完成国家农业机械 装备网络平台的建设,形成农业机械装备行业的资源共享平台,利用此网络平台促进中国农业工 程和机械装备的发展,提高中国农业机械装备领域的整体水平。其中,内容管理系统是农业机械 装备网的一个子系统。
本文研究的内容及所作的工作主要如下:
1、 深入研究了 J2EE技术体系,并对基于此技术的各种开发方法和解决方案进行全面研究。
2、 对数据库通信技术进行深入研究,并设计和实现了一个高效的数据库连接池。
3、 农业机械装备网内容管理系统的需求分析和功能设计。
通过对网站建设和管理的长期深入调研和分析,确定了用户的需求,并结合农业机械装备网 的特定需求,进行了需求分析和功能设计,并采用建模工具进行分析设计。
4、 研究开发农业机械装备网内容管理系统的理论依据和方案
如何去实现系统的功能,采用什么技术达到系统的先进性和稳定性,通过综合分析给出一个 具体可行的方案。
5、 给出农业机械装备网内容管理系统的设计和实现过程,详细的描述了其中几个模块的实 现。
6、 对系统实现中的关键技术和难点,给出具体的解决办法。
7、 与网站其它系统整合,并投入了实施和运行。
第二章J2EE技术规范
2. 1 J2EE总体概述
为了快速设计和开发企业级的应用程序,Sun公司推出了一种全新概念的模型一Java 2 Platform Enterprise Edition (J2EE),它与传统的互联网应用程序模型相比有着不可比拟的优势。
2.1. 1 J2EE的发展
1997年4月12 B, Sun宣布了一项为企业环境开发Java平台的创新成果。使用开放式的Java Community Process, Sun促进了一组标准的Java扩展的开发,称为Enterprise Java API □这些应 用程序编程接口(API)为各种各样的中间件的实现提供了不依赖供应商的编程接口。Enterprise Java API的要点是Enterprise JavaBeans API.后者为Java应用程序服务器定义了一个服务器端组 件模型,以及一个不依赖供应商的编程接口。
J2EE为Enterprise JavaBeans技术提供了工作环境。事实上,Sun把若干项软件技术都设想为 这样的构件块,它们将使大型企业能把以任务为关键的业务系统移植到Java环境中,而Enterprise JavaBeans技术只不过是这些技术之一。EJB组件是按照它们自己的规范定义的,但是EJB技术 并不是一项独立的技术。它建立在其它Java技术之上,这些技术由Sun和其它公司联合规定,它 们一起提供了这个框架内容,该框架就称为Java 2 Platform, Enterprise Editiono
参与到这个企业Java框架中,并不意味着每项技术都依赖于所有其它技术。单独的规范文档 指出每项技术的相关性。例如,Enterprise JavaBeans规范就指明了在定位各个组件时与JNDI的 相关性。以及在编程中启动和停止事务处理时与JTA的相关性。
2.1.2 J2EE的优势
J2EE是一种利用Java 2平台简化企业解决方案的开发、部署和管理相关复杂问题的体系结 构。J2EE技术的基础就是核心Java平台或Java2平台标准版,J2EE不仅巩固了标准版中的许多 优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术,以及 能够在Internet应用中保护数据的安全模式等,同时还提供了对EJB、Java Servlets APL JSP Uava Server Pages)及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投 放市场时间的体系结构。
J2EE的优势主要表现在如下五点:
1、稳定的可用性
一个服务器端平台必须能够全天候运转以满足公司客户、合作伙伴的需要。因为Internet是 全球化的、无处不在的,即使在夜间按计划停机也可能造成严重损失。若是意外停机,那会有灾 难性后果。J2EE部署到可靠的操作环境中,支持长期的可用性。
2、 可伸缩性
企业必须选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统 上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可 被部署到高端UNIX与大型机系统,这种系统单机可支持64〜256个处理器。J2EE领域的供应 商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署。这种部署 可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。
3、 支持异构环境
J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作 系统、中间件、硬件,因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这 在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户定购与J2EE兼容的第三方现 成的组件,把他们部署到异构环境中,节省了由自己制定整个方案所需的费用。
4、 高效的开发
J2EE允许公司把一些通用的、很烦琐的服务器端任务交给中间件供应商去完成,这样开发 人员可以集中精力在如何创建业务逻辑上,相应地缩短了开发时间。
5、 保留现存的IT资产
由于企业必须适应新的商业需求,利用已有的企业信息系统方面的投资而不是重新制定全盘 方案就变得很重要。这样,一个以渐进的方式建立在已有系统上的服务器端平台机制是公司所需 求的。J2EE框架可以充分利用用户原有的投资,如一些公司使用的BEA Tuxedo. IBMCICS等, 这之所以成为可能,是因为J2EE拥有广泛的业界支持和一些重要的“企业计算”领域供应商的 参与。每一个供应商都对现有的客户提供了不用废弃已有投资即可进入可移植的J2EE领域的升 级途经。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系 统和硬件也能被保留使用。
2. 1.3 J2EE应用程序的结构
SUN设计J2EE的初衷是为了解决两层模式(client/server)的弊端。在传统的两层模式中, 客户端担当了过多的角色而显得臃肿。在这种模式中,第一次部署的时候比较容易,但难于升级 或改进,可扩展性也不理想。现在,J2EE的多层企业级应用模型将两层化模型中的不同层面切 分成许多层,一个多层化应用能够为不同的服务提供一个独立的层。
J2EE典型的结构分为4层:
•运彳亍在客户端机器上的客户层组件(Client tier)。
•运行在J2EE服务器上的Web层组件(Web tier)。
•运行在J2EE服务器上的业务逻辑层组件(Business tier)o
•运彳亍在EIS服务器上的企业信息系统(Enterprise information system)层软件(EIS tier)。
其中第二层和第三层合称为中间层(Middle tire)。其结构图如图2-1所示:
2.2基于J2EE的WEB应用解决方案
计算机网络技术的发展和成熟,特别是Internet的普及,将应用扩展到局域网、广域网甚至 Internet上已经成为软件发展的必然需求,企业迫切需要有效地实施企业系统的开发,构建出高 质量的结构、高度可用的、高效的网络应用,具备与网络时代相适应的特点,具有集成Internet 的能力。在传统的应用中,主要采用分布式计算环境中最为流行的C/S计算模型。然而C/S计算 模型在大型网络中存在着可扩充性差、可维护性差以及客户端负载过重等缺点。随着网络迅速普 及,各种新的网络技术,包括Web技术和分布式对象技术等的出现和成熟,为企业级的开发注入 新的动力。随着Web技术、分布式对象技术两者的结合,导致了整个应用系统的体系结构从过去 的C/S主从结构向灵活的基于Browser/Server的多层分布式Web计算模型演变。
2.2.1基于B/S的多层分布式结构
随着互联网技术的发展,网络用户的数量急剧增长,应用日趋复杂,传统的C/S结构由丁-它 的局限性,正在被B/S结构所取代。基于B/S的分布式体系结构,以组件开发,利用Browser作 为最终用户界面的解决方案已经成为今后应用软件开发的方向。B/S模型实质上也是一种三层客 户/服务器模型,只不过在B/S结构下,客户端只需要安装浏览器,用它来进行逻辑的显示,以方 便用户和服务器进行交互,而中间层处理大部分业务逻辑,如对客户端的请求进行处理,完成对 数据库的访问,并将结果返回给客户端。
但是随着Internet的普及与发展,对Web应用开发的要求越来越复杂,一个Web应用的开发 不仅仅局限于创建HTML文件和简单的CGI脚本,而是涉及到怎样处理一个高性能、高伸缩性、 高健壮性和易于管理等非常复杂的问题,传统上的B/S结构己经不能解决上述问题。为了弥补 B/S结构的缺陷,技术开发者提出了 N层结构的概念,N层结构是把传统的B/S三层结构的中间 层进一步划分成许多独立的组件层,分布在许多不同的机器上,可能使用CORBA.EJB或DCOM, 因此乂可以称为多层分布式结构。实际上这种结构还是以三层结构作为基本模式,只不过在中间 层可以同时使用分布结构的多个服务器资源。
这种基于B/S的多层分布式结构真止实现了显示与逻辑处理的分离,它的主要优点有:
1经济性、可维护性。在客户端只有简单的浏览器,这样在企业内部部署硬件时客户端有时 仅需要简单的可以联网的PC机即可,大大降低了成本。由于浏览器执行应用程序是从Web服务 器上下载来的,因此客户端不必安装及配置应用软件,而系统维护人员只需要在服务器端对服务 器进行集中的维护。这给应用软件的维护、升级带来巨人的好处。
2可伸缩性。在设计中使用这种结构可以将复杂的业务处理分割成相互之间可交互调用和通 讯的若干个业务功能部件和对象,并可以将其分配到多个网络互连的应用服务器中来实现负荷分 担。这种应用服务器还具备对分布对象管理和实时调度的功能,能够迅速的将请求交给当时可用 的对象,并随着请求的增多调用更多驻留在其应用服务器上的对象,从而实现只要通过添加应用 服务器便能满足日益增长的业务处理需要。
3健壮性。当某台应用服务器发生故障或失效时,分布式系统会自动把该应用服务器正在处 理的事务请求移交给另外一台工作正常的服务器。
4软件重用及可剪裁性。业务处理是由许多分布式对象交互协作完成的。将来会出现更髙层 次的分布式对象组件和商务对象组件,可以针对每个企业级应用的具体情况量体裁衣,选用不同 的分布式商务对象组件来构建应用系统。
5兼容性。由于对象可以建成与现有系统接合的方式,所以分布式对象是可以与现有系统一 起工作。一个对象如果具有现有系统的接口,就可以在分布式系统中调用以前的程序,同时,使 用分布式对象时,不必重建传统的应用程序。这样便大大加快了系统的开发速度,也节省了大量 资金。
6异构性。网络分布的业务处理对象可访问不同的后台数据库,适合多种异构数据库环境, 从而达到数据分布开放的效果。
7安全性。严密的安全管理,对业务处理对象的调用和数据库的存取权限是按层次设置的。 即使外部入侵者突破了客户机层的安全防线,如果在应用服务器层中备有另外的安全设计,系统 也可以阻止入侵者侵入。
8独立性。在多层结构中,各层都具有相对独立性,于是每一层都可选取各自的最优解决方 案。
随着基于Web的瘦客户机结构的发展,基于B/S的多层分布式体系结构已经是开发企业级应 用系统的主流。B/S计算模型的特点和优越性给应用软件的开发注入了强大的动力,极大的推动 了应用系统集成的发展。
2.2.2 J2EE Web应用多层结构
J2EE规范作为一种可扩展的、多功能的平台,可将企业级应用扩展到WEB上并可适应多种 不同的Internet数据流,可连接到几乎任何一种数据库和已存的系统上,开发人员可以使用不同 厂家所提供的产品和技术来开发和部署应用程序,进而降低开发的费用和复杂性,目前J2EE技 术已经取得了巨大的成功。
SUN设计J2EE的初衷是为了解决两层模式的弊端。在传统的两层模式中,客户端担当了过 多的角色而显得臃肿。在这种模式中,第一次部署的时候比较容易,但难于升级改进,可扩展性 也不理想,而且经常是基于某种专有的协议,这样就使得重用业务逻辑和页面逻辑变得非常困难。 现在,J2EE的多层企业级应用模型将两层化模型中不同的层面切分成多层,由Web做表示层, 由EJB和JavaBean做业务层,由JDBC做集成层。
客户层 Web层 业务层 集成层 资源层
pg JSP和 Servlet 三 3
图2-4体系结构的分层图
实际上要从物理上再考虑分层的话,就会真正理解N层的含义,不同的客户请求得到处理之 前所经过的区域即为层。每个层都与一个或多个逻辑相关联,例如表示、业务或数据访问等。两 层应用一般由表示层和数据层组成。三层应用则更进一步,存在一个更瘦的客户端与某个Servlet 或CGI程序相关联,而后者再与数据库通讯,表示层和数据层更明显地被分离,而服务器端也从 数据访问逻辑中区别出了业务逻辑。一个N层应用则包括更复杂地处理路径,其中可能涉及到更 多的远程方法调用。举例来说,一个客户与某个Servlet或JSP联系,而Servlet则与一组应用服 务器通信,每个应用服务器均可以访问不同的数据库。可以说目前的绝大多数Web应用系统都是 N层的。
2. 2.3基于J2EE的多层Web应用实现方法及比较
J2EE技术本身包括许多不同技术,因此可以通过不同的技术组合方式来实现Web应用,基 于J2EE的多层Web应用主要由两种实现方法,一种以Web层为中心的Web应用,一种是以业 务层为中心的Web应用。
1、以Web层为中心
以Web层为中心的企业级应用,表示和业务逻辑都位于Web容器中,通过JDBC和Connector 访问EIS资源。
Web层几乎实现所有的功能,如访问EIS,接受和解释来自客户端的输入、生成动态内容和 分配资源等,由于Web层需要完成的功能太多,很容易在系统中造成很大的瓶颈,而且以Web 层为中心的系统有集成化的倾向,随着软件复杂性的增加,JSP页面将充斥大量的HTML标记和 Java代码,业务逻辑一点改变都会大面积的修改源程序,后期维护工作无法想象,另外由于许多 模块不能复用,导致系统扩展性能较差,而且J2EE的Servlet和JSP虽然是J2EE中用来开发服 务器端动态网页的主要技术,但是它只适合网络流量较小的数据存取,对于网络流量较大的且复 杂的多笔数据存取交易就会显得难以应付,即使勉强使用,在实现上的难度颇高,比如说维护交 易记录一致性、多个客户端同时存取数据记录的情况,以及必须应付数量无法预知的客户端请求 等。
图2-5以WEB层为中心的web应用图
2、以业务层为中心
以业务层为中心的企业级Web应用,位于Web容器里的Web组件专门处理应用的表示逻辑, 由JSP和Servlet负责产生动态的Web内容,并将其传送到客户端。驻留在EJB容器中的业务逻 辑组件,一方面响应Web层的请求,另一方面访问EIS资源,把数据访问和终端用户的交互分离 开来。
运行在应用服务器中的EJB承担核心业务逻辑的实现及与EIS通信,Web层通过业务层访问 EIS,这样绝大多数的核心功能转移到业务层,Web层只是负责接收客户的请求和给客户显示 HTML应答页面,由于业务层能够和许多企业级的服务交互,极大的降低了系统的开发难度,另 一方面由于业务层中的EJB容器提供了一个高度结构化的开发环境,使得开发人员可以完全集中 于业务问题本身的研究,EJB容器提供的这些标准化的服务使得系统具有更好的可靠性。并且业 务层的结构鼓励封装和组件化设计原则,避免把业务逻辑暴露给客户,便于日后应用系统的维护 和升级。
两种方案比较,以Web层为中心的方案适合中小系统的应用,以业务为中心的方案适合构建 大型的复杂的企业级应用。
2. 3 J2EE核心技术
J2EE是一个技术架构,也可以视为一个技术体系,它包含了许多内容,这也是其复杂性之 所在。根据其应用的不同分成组件技术、服务技术和通信技术。
2.3.1组件技术
在任何应用程序中,最重要的元素就是通过使用组件或者应用程序级可重用的单元来构建必 要的业务逻辑。J2EE系统平台为开发组件提供了三种技术,分别是Servlet、JSP和EJB,其中 Servlet和JSP又称Web组件技术,需要澄清的一点是,J2EE系统平台并不规定一个应用程序必 须使用所有三种类型的组件技术。
2.3.1.1Web 组件
Web组件技术具体分为JSP技术和Servlet技术。
1、 JSP技术
JSP提供了一种在网页中嵌入组件的方式,并且允许生成相应的网页最终发送给客户。JSP 网页可以包含HTML、Java代码及JavaBean组件。JSP网页实际上是Servlet编程模型的一个扩 充。当用户请求一个JSP网页时,Web容器会把相应的JSP网页编译成一个Servleto接着此Web 容器调用这个Servlet,并且把得到的内容返回给Web浏览器。从JSP网页编译出Servlet之后, Web容器就可以简单地把这个Servlet返回,而不需要每次都重新编译。因此,JSP网页提供了一 种功能强大的动态网页装配机制,可以从Java系统平台的许多优点中获益。
与纯Java代码构成的Servlet相比,JSP网页只是基于文本的文档,直到Web容器把它们编 译成相应的Servlet为止。这样在应用程序逻辑与表示逻辑之间就有了清楚的分界。这种情况进而 使应用程序开发者能够集中注意力于业务细节,而让Web设计者集中注意力于信息的表示。
JSP与Microsoft的ASP技术非常相似。两者都提供在HTML代码中混合某种程序代码和由 语言引擎解释执行程序代码的能力。但是,ASP的编程语言是VBScript之类的脚本语言,JSP使 用的是Java,这是两者最明显的区别。此外,ASP与JSP还有一个更为本质的区别:两种语言引 擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释执 行;在JSP下,代码被编译成Servlet并由Java虚拟机执行。
总之,JSP规范是Web服务器、应用服务器、交易系统及开发工具供应商之间广泛合作的结 果,它在多方面加速了动态页面的开发。
2、 Servlet 技术
Servlet是一个以Java技术为基础的Web组件,它被一个容器管理,它能产生动态的内容。 像其它以Java为基础的组件一样,Servlet是独立于各种平台的Java类,它能够被编译成平台中 立的字节码,然后在可以使用Java的Web服务器上装载和运行。容器有时也被称作Servlet引擎, 是Web服务器的扩充,它提供了 Servlet的功能。Servlet通过Servlet容器实现的请求/应答机制与 Web客户端进行交互。
Servlet容器是服务器或应用服务器的一部分,它提供了网络服务。通过这些网络服务请求和 应答对以MIME为基础的请求进行解码,形成以MIME为基础的应答。一个Servlet容器在Servlet 的整个生命周期中装载并管理它。
一个Servlet容器能够建立在Web服务器的核心中,也可以通过服务器本身的扩展API作为 附加组件安装在一个Web服务器中o Servlet容器还可以嵌入或安装到支持Web的应用服务器中。
所有的Servlet容器必须将HTTP作为请求和应答的规程。另外,以类似HTIPS这样的规程 为基础的请求和应答也可以被支持。
一个Servlet可以具有这样一个处理序列:
(1)一个客户端连接到一个Web服务器,并发送一个HTTP请求到这个Web服务器。
(2)请求被Web服务器接收,并转交给Servlet容器。Servlet容器可以与Web服务器在同 一个主机上运行、在同一个主机但不是同一个处理器上运行,或者是不同的主机上运行。
(3)Servlet容器在其配置的Servlet中找到调用的Servlet,然后,用代表请求和应答的对象 调用它。
(4)Servlet使用请求对象找到谁是远端的用户,那些HTTP POST参数可能被作为这个请求 的一部分,并找出其它相关参数。Servlet完成已经被编入程序的处理逻辑,然后生成数据返回客 户端。在它将数据返回到客户端的时候通过应答对象完成。
(5)当Servlet完成了对请求的处理,Servlet容器确认应答已经确实完成,则将控制权返回 给Web服务器。
Java Servlet是创建动态的、高性能的电子商务站点的有效工具,它能够改善电子商务应用的 操作效能和可伸缩性,并能重复使用各种用于提高应用开发效率的部件。
图2-7典型Web应用程序体系结构图
2.3.1.2Enterprise JavaBeans 组件
EJB是用于开发安全、可扩展、事务型及多用户组件的一种分布式组件模型。简单地讲,EJB 是(理想的)包含业务逻辑的可重用软件单元。正如JSP网页允许把应用程序和表示逻辑分开,EJB 允许把应用程序逻辑与系统级服务分开,这样开发者可以集中精力于具体业务问题,而不是系统 编程。这些企业小程序(Bean)业务对象具有三种基本形式,同样也没有必要三者都实现,它们分 别是会话(Session)Bean、实体(Entity)Bean 和消息驱动(Message-driven)Bean。
1、会话Bean
会话Bean本身有两种类型。一种是说明性会话(Statefill Session)Bean,这是一种用于表示一 个客户与系统交互的短暂对象。它执行客户应用程序中的请求、访问数据库等,当客户的操作完 成后,它将被删除(也就是它只存在于客户会话中)。这方面的一个示例就是一个应用程序客户发 送一系列请求到一个应用程序,从而来执行一个业务处理。在这种情况下,说明性会话Bean可 以跟踪客户与应用程序之间的交互状态。另一种形式是无状态(Stateless)会话Bean,不在客户请
求之间维护状态信息。一般情况下,此类会话Bean用于实现一种不要求客户状态的特定服务, 例如一个简单的数据库更新。
2、 实体Bean
实体(Entity)Bean是一种持久性的对象,确定了数据存储的模型。也就是说它是数据的一个 对象包装器。例如,关于一次购买订单的数据可以使用实体Bean Purchaseorder表示出一个综合 的、包含全部相关购买订单数据的视图。与可供任何客户使用的会话Bean相比,实体Bean可以 同时由许多客户访问,但是必须通过一个主键来维护一个惟一的标识。实际上,在J2EE容器结 构中,我们可以选择由容器管理实体Bean的永久状态,或者在Bean自身中“手工”实现这一点。
3、 消息驱动Bean
消息驱动Bean是一类特殊的EJB,它并不是直接客户调用的方式。消息驱动Bean的目的在 于处理通过JMS收到的消息。消息驱动Bean通过提供一种在EJB容器内部处理消息的方式来实 现JMS的异步属性。当应用程序客户或者一个应用程序通过JMS发送一条消息时,容器调用适 当的消息驱动Bean来处理这条消息。
EJB组件是可部署的,它们可被导入到作为组件主机的应用服务器中。EJB的优点如下:
•它是被业界认可的。凡是使用EJB的人们都会受益于它的广泛应用。因为每个人都使用 相同的技术,在将来,您很容易就会雇佣到雇员,他们懂得您的系统(因为他们以前有 过EJB的开发经验),学习用最好的方式来提升您的系统性能,适应业务(因为技术是 一致的)和最终卖掉您的软件。“一旦培训,代码任移”的概念将被应用。
•移植性容易实现。EJB规范是公开发布的,并且每个人都能得到它。因为EJB是一种标 准,所以您不必依赖于某一个单一的、孤立的供应商的体系结构。
•快速应用系统开发。因为您从应用服务器中可以获得中间件,所以应用系统的构建会快 很多,同时也有更少的麻烦需要处理。
图2-8客户端与EJB组件系统的交互图
2. 3. 2服务技术
2.3.2.1 JNDI
JNDI(Java Naming and Directory Interface, Java 命名和目录接口)是一组在 Java 应用中访问命 名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服 务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
命名或目录服务使你可以集中存储共有信息,这一点在网络应用中是重要的,因为这使得这 样的应用更协调、更容易管理。例如,可以将打印机设置存储在目录服务中,以便被与打印机有 关的应用使用。
1、JNDI概述
我们大家每天都不知不觉地使用了命名服务。例如,当你在web浏览器输入http://java.sun.com 时,DNS(Domain Name System,域名系统)将这个符号URL名转换成通讯标识(IP地址)。命名系 统中的对象可以是DNS记录中的名称、应用服务器中的EJB组件、LDAP(Lightweight Directory Access Protocol)中的用户 Profile<>
目录服务是命名服务的自然扩展。两者之间的关键差别是目录服务中对象可以有属性(例如, 用户有email地址),而命名服务中对象没有属性。因此,在目录服务中,你可以根据属性搜索对 象。JNDI允许你访问文件系统中的文件,定位远程RMI注册的对象,访问象LDAP这样的目录 服务,定位网络上的EJB组件。
对于象LDAP客户端、应用launcher,类浏览器、网络管理实用程序,甚至地址薄这样的应 用来说,JNDI是一个很好的选择。
2、JNDI架构
JNDI架构提供了一组标准的独立于命名系统的API,这些API构建在与命名系统有关的驱动 之上。这一层有助于将应用与实际数据源分离,因此不管应用访问的是LDAP、RML DNS、还 是其他的目录服务。换句话说,JNDI独立于目录服务的具体实现,只要你有目录的服务提供接 口(或驱动),你就可以使用目录。
关于JNDI要注意的重要一点是,它提供应用编程接口(application programming interface,API) 和服务提供者接口(service provider interface,SPI)»这一点的真正含义是,要让你的应用与命名服 务或目录服务交互,必须有这个服务的JNDI服务提供者,这正是JNDI SPI发挥作用的地方。服 务提供者基本上是一组类,这些类为各种具体的命名和目录服务实现了 JNDI接口一很象JDBC 驱动为各种具体的数据库系统实现了 JDBC接口一样。作为一个应用开发者,你不必操心JNDI SPL你只需要确认你要使用的每一个命名或目录服务都有服务提供者。
23.2.2JMS
1、消息服务
消息是软件组件或应用之间的一种通信方法。消息系统是一种对等(peer-to-peer)的系统: 消息客户可以向其他客户发送消息,也可以接收来自其他客户的消息。每一个客户和一个消息代 理相连,由消息代理提供创建、发送、接收、读取消息的服务。
消息实现了松散耦合的分布式通信。组件发送消息到目的,消息接收者从该目的提取消息。 但是,消息的发送和接收却不是同时进行的。实际上,发送者不必去了解接收者,同样接收者也 不必了解发送者;它们只需要知道消息格式和消息目的。因此,消息不同于像远程方法调用(RMI) 这种紧密耦合的通信方法,RMI要求知道远程应用的方法。
消息也不同于电子邮件(e-Mail),电子邮件是人与人或应用程序与人之间的通信方法。消息只 应用于应用程序和组件之间的通信。
2^ Java消息服务
Java消息服务是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的 服务。由Sun公司和它的合作伙伴设计的JMSAPI定义了一组公共的应用程序接口和相应语法, 使得Java程序能够和其他消息组件进行通信。
JMSAPI最大限度的减少了程序员学习使用消息产品的概念,但是却提供了足够功能支持复 杂的消息应用。通过JMS提供者内相同的消息域,它最大限度的加大了消息应用的可移植性。
JMS建立了一个松散耦合的通讯框架,采用异步的形式并且很可靠:
异步:意味着接收者不需要为了接收一条消息而主动地向它发出请求。
可靠:意味着可以保证得到消息的一次性成功发送,这是现代系统的基本特征。
消息系统可以分为两个一般领域:点到点(point-to-point)和出版/订阅(publish/subscribe)。 为满足J2EE规范,JMS对这两个领域都提供支持。
3^ JMS体系结构
在JMS体系结构中有6个基本构件,建立JMS应用程序需要逐一地使用它们:
•管理的对象:指普通情况下在程序外面维护的对象,经常要使用一些类型的管理工具。 这些一般都是JMS实现中唯一的工厂(factory)对象。
•连接:泛指与JMS提供者服务器的连接,经常是位于客户和JMS服务器之间的一•个套接 字连接。连接从一个ConnectionFactory获得,可以用于生成一个或多个会话。
•会话:会话为一些消息分组而提供事务型上下文环境。会话对象用于生成消息制造者、 消费者以及消息本身。
•消息制造者:消息制造者是由会话生成的。它们向一些目的地发送消息。
•消息消费者:这些内容位于JMS主题/队列的另一端,与制造者不同,它们接收发送到 某个目的地的消息。
•消息:这里包装着数据,由制造者发岀,要由消费者接收。消息由三部分组成。头部
(header)包含着诸如目的地、回复目标、时间限制等内容;属性(properties)是头 部的扩充,包含着可选头部字段以及一组应用程序专用的名字一值对,可以从Message 对象访问;第三部分就是消息主体(message body),可以是字节、Java对象、String 消息等内容。
JMS各构件的相关性和关系如图2-9所不:
图2-9 JMS各构件的关系图
2.3.2.3 JavaMail
JavaMailAPI是一个抽象的类组,使基于消息的系统得以实现。JavaMail API对于消息领域 所起的作用就像是JDBC对于数据库所起的作用。它提供了一种抽象的与大范围消息存储机构交 互的方法。JavaMail使得在任何Java程序、servlet、bean或者applet中都能够很容易实现电子邮 件连接能力。与包装电子邮件以便于成功地进行接收和发送相关的复杂问题已经被抽象成一组方 法调用。
JavaMail包的一部分绑定的核心协议如下:
•简单邮件传输协议(Simple Mai.1 Transport Protocol, SMTP)
•邮件协议版本 3 (Post Office Protocol version 3, POP3)
•因特网消息访问协议(Internet Message Access Protocol. IMAP)
•多用途因特网邮件扩充(MIME)
JavaMailAPI是非常大的一个类和接口的集合,总数接近了 100个。但是,在使用时并不需 要理解其中的每一个细节,可以对实现进行抽象并且提供一个清楚而简单的功能接口。其所有的 类可归结为以下四个方面:
•会话管理:API的会话部分定义了邮件客户与网络的交互。它处理所有与总体通信的有 关方面,包括该使用什么协议进行传送以及需要哪些默认值。
•消息管理:由于JavaMa订API的总的目标是发送和接收邮件消息,因此这里有丰富的 API用于生成和管理邮件消息。
•邮件存储和检索:如果一条消息没有被发出或者没有收到,那么它正在存储中。消息存 储在类似于文件和目录的层次结构中。JavaMa订API有一组用于管理这种存储的类, 包括添加、删除和移动消息。
•传送:最后是消息的传送。JavaMail里有特定的类来简化此机制。
2.3.2A Java连接器结构(JCA)
企业信息系统(EIS)为整个企业提供信息基础设施和服务。这些信息的形式可能是一个数 据库中的一组记录、一个ERP业务中的对象、一个客户关系管理(CRM)系统的工作流对象、 或者一个事务处理应用程序中的事务程序。
对这些复杂业务应用程序进行调整使之成为一个多层应用框架具有很大的挑战性,而把它们 应用于一个具有高可用性的Web应用,则是一项庞大的工程。
在Connector Architecture出现之前,一些应用程序服务器厂商为集成EIS系统提供了各种可 自定义的适配器。这些适配器基本上提供了自定义的本机接口,这些内容很复杂,不易理解,并 且因为它们试图支持一种标准体系结构而受到限制。
J2EE Connector Architecture (J2EE连接器体系结构,JCA)为开发者提供了一种容易的办法 以便于把Enterprise Information Systems (企业信息系统,EIS)与J2EE系统平台组件无缝地集成 起来。
JCA是在一个遵守J2EE 1.3规范的应用程序服务器上实现的,同时有一个由EIS厂商提供的 遵守JCA的资源适配器。这个资源适配器在应用程序服务器中是一个EIS专用的可插入J2EE组 件,它提供了一个用于与基层EIS系统通信的接口。JCA定义了下列元素和服务:
•系统级合同(contract)和服务:定义了 J2EE组件、应用程序服务器提供者和EIS系 统之间的标准接口。这些合同和服务是由J2EE服务器提供者实现的,并且也位于EIS 厂商的资源适配器中。这些合同和服务的实现在应用服务器和资源适配器的系统级角色 和责任之间定义了一个逻辑划分。这样就使J2EE服务器和资源适配器能够彼此协作, 例如连接缓冲池、安全性和事务等。
•JCA通用客户接口(CCI):定义J2EE组件(如JSP、EJB等)可以用于连接到EIS系统 或者与之交互的一个客户API,除了 J2EE客户组件之外,它还允许非管理的应用程序
(如Java applet和应用程序客户)使用一个遵守JCA的资源适配器与一个EIS集成。
•打包和实施接口:允许各种EIS资源适配器插入J2EE应用程序中。
2. 3. 3通信技术
2.3.3.1因特网协议
由于网络技术的快速发展,浏览器几乎适用于世界上任何场合。客户的请求以及服务器的响 应将通过三种主要协议实现通信。
1、HTTP
HTTP即超文本传输协议,是一种通用的、无状态的应用程序级协议,除了简单的超文本功 能外还有许多应用。它工作于一种请求/响应机制上。客户以请求方法的形式向服务器发送一个请 求,后面有URI (Uniform Resource Identifier.统一资源标识符)、协议版本号、一个类似于MIME 的消息包含着请求修饰符、客户信息以及正文内容,这些信息都通过一条与服务器的连接发送出 去。服务器接下来用一个状态行进行响应,后面跟随一个类似于MIME的消息,包含着服务器信 息、实体元信息以及可能实体正文内容。
2、 TCP/IP
TCP (传输控制协议)与IP (网际互联协议)实际上是两个分离的协议,但人们一般都把它 们结合为一个实体。IP是一种保证通信双方在因特网上能够接收到数据的协议。当我们在浏览器 中输入一个网址时,IP可以保证我们的请求以及对这些请求的执行会传送到正确的目的地。为了 提高效率,客户与Web服务器之间传送时并不是都采用相同的路由。TCP是跟踪分组并且保证 它们按照当初拆分时的顺序重新装配的协议,并且保证不出差错。因此,TCP和IP结合起来可 以在因特网上传输数据。
3,SSL
安全套接层(SSL)用于对客户和服务器之间的信息流进行加密和解密。这样也提供了一种 供双方彼此验证的办法。安全HTTP (HTTPS)通常会使用不同的端口号(默认为443),以此与 普通未加密的HTTP区分开。
23.3.2远程对象协议(RMI)
在当今的编程术语中,分布式计算已经成为一个很常见的词。它指的是一种应用程序设计方 案,在这种方案中程序、程序处理的数据以及实际计算任务都分布在网络上,这样可以调节多台 计算机的处理能力,也可以适合应用程序由不同模块组成的本性。
在Java分布式对象模型中,远程对象就是可以从另一个Java虚拟机调用其方法的对象,其 可以位于一个不同的主机上。这种类型的对象由一个或者多个远程接口描述,这些是Java接口, 它们声明了该远程对象的方法。远程方法调用(RMI)就是指调用一个远程对象上远程接口的一 种方法的操作。
RMI的目的是让位于不同JVM中的对象外观及行为上都是本地对象。调用此远程对象的 JVM通常称为客户,包含此远程对象的JVM—般称为服务器。这种RMI设计的最重要方面是其 设计上的透明性。应用程序并不知道一个对象是远程的还是本地的。在远程对象上进行的方法调 用与在一个本地对象上进行方法调用采用相同的语法,而实际上发生的过程要比看到的复杂的 多。
在RMI中,“服务器” 一词并不指实际的服务器或者应用程序,而是指拥有一些可供远程调 用的方法的一个远程对象。与此类似,“客户”一词也不指实际的客户计算机,而是指调用一个 远程对象上的远程方法的对象。同一个对象既可以是客户,也可以是服务器。
尽管获得对一个远程对象的引用与获得对本地对象的引用有所不同,但是,当有了这种引用 之后,程序员就可以把远程对象像本地对象一样使用。RMI底层会自动截获方法调用,找到远程 对象,然后处理远程请求。
远程对象总是通过其远程接口来访问的。也就是说,客户只有在确定了对远程接口的引用之 后才可调用对象上的方法。其实现实际上是由三个抽象层建立:
• Stubs/Skeletons Layer (存根/主架层):这一层会截获客户发出的对接口引用的方法
调用,并且把这些调用重定向到一个远程对象。需要记住的是,这里的stubs (存根信 息)是针对客户方的,而skeletons (主架信息)则位于服务器方。
•Remote Reference Layer (远程引用层):这一层处理着与解释和管理客户对远程对象 建立的引用有关的细节。它把客户连接到正在运行的远程对象,并且通过一对一的连接 链路导出到一个服务器。
•Transport Layer (传输层):这一层建立在网络上计算机之间的TCP/IP连接基础上。 它提供了基本的连接能力以及一些防火墙深透策略。
应用层
表示层
会话层
传输层
网络层 数据链路层
图2-11 RMI体协结构分层图
这个分层结构提供了良好的实现灵活性,不会影响应用程序的体系结构。每一层都可以得到 增强或者更换而不会影响系统的其它部分。
第三章数据库通信和连接池技术
3.1 JDBC 技术
JDBC是一种“开放”的方案,它为数据库应用开发人员、数据库前台工具开发人员提供了 一种标准的应用程序设计接口,使开发人员可以用纯JAVA语言编写完整的数据库应用程序。在 JDBC的发展经历中,产生了几种不同的驱动程序结构。
1、JDBC-ODBC 桥
第一类驱动程序利用“桥”的概念,使用已经存在的ODBC驱动程序RDBMS连接。这类驱 动程序不是100%JAVA的驱动程序。
开放数据库连接(Open Database Connectivity, ODBC)的生成最初是为 Microsoft Windows 系统平台上的SQL提供API标准,后来经过了增强也为其它系统平台提供SDK。ODBC部分以 X/Open Call-Level Interface (CLI)技术规范为依据,它是数据库访问的标准API。
JDBC驱动程序的第一类在JDBC API与ODBC API之间提供了一个桥梁。这个桥把标准 JDBC调用翻译成对应的ODBC调用,然后通过ODBC库把它们发送到ODBC数据源。如图3-1 所示:
图 3-1 JDBC-ODBC 桥图
2、部分Java、部分本机驱动程序
这种类型的驱动程序使用的是Java实现与厂商专用API的混合形式来提供数据库访问。它 与类型1的驱动程序相比少经过一层,因此速度上比类型1快些。
JDBC数据库调用被翻译成厂商专用的API调用。数据库将处理相关的请求并且把结果通过 API送回,然后结果再被转发到JDBC驱动程序。JDBC驱动程序将把结果翻译成JDBC标准, 并且把它们返回到Java应用程序。
与类型1驱动程序相似,部分Java、部分本机代码的驱动程序以及厂商专用的本机语言API 必须在每个运行此Java应用程序的客户上安装。
图3-2部分Java、部分本机驱动程序
3、中间数据库访问服务器
第三类驱动程序作为一个代理的驱动程序与某个中间层服务器通话,而再由这个中间层服务 器使用第一类或第二类驱动程序与数据库通信。
Java客户通过一个JDBC驱动程序向中间数据访问服务器发送一个JDBC调用,它使用另一 个驱动程序完成数据源的请求。用于在客户和中间服务器之间通信的协议取决于这个中间件服务 器厂商,但此中间件服务器可以使用不同的本机协议来连接不同的数据库。
4、纯Java驱动程序
第四类驱动程序通过RDBMS支持的访问协议直接与RDBMS通话,是真正的100%JAVA驱 动程序,因此具有很高的效率。
此类驱动程序使用厂商专用的网络协议把JDBC API调用转换成直接网络调用。它们这样做 是通过与数据库建立直接的套接字连接。此类驱动程序提供的性能一般要优于类型1和类型2驱 动程序。它也是实用中最简单的驱动程序,因为这里不需要安装其它库或者中间件。所有的主要 数据库厂商都为它们的数据库提供了纯Java驱动程序,也可以从第三方厂商获得这些驱动程序。
图3-4纯JAVA驱动程序
3. 2访问数据库
在基于JDBC的应用程序中,很多内容都围绕着java.sql.Connection接口。在进彳亍任何数据 库操作之前,应用程序必须首先创建一个到数据库的连接(Connection)。然后,这个连接就成为 应用程序和数据库之间的通道。应用程序使用它将SQL语句发送给数据库。数据库进行操作并 将执行结果通过这个通道返回。一个连接和一个数据库用户帐号相关联,这样可以使数据库对通 过连接提交来的SQL语句执彳亍访问控制检查。连接也是数据库事务(transaction)的边界。一个 事务由若干SQL语句组成,这些语句作为一个原子操作要么都成功执行,要么都失败。事务可 以提交(commit)(所有对语句的修改都被永久保存)也可以回滚(rollback)(所有修改都被忽 略),这些都要通过调用Connection的方法来实现。
在一个独立的应用程序里,一个连接通常只被创建一次,直至应用程序结束时才关闭。这样 做并不奇怪,因为一个独立的应用程序在某一个时刻只需要服务于一个用户、由单一用户启动的 数据库操作彼此之间通常都是有联系的。而在一个处理来自不同用户的无关请求的应用服务器应 用程序中,如何处理连接还不是很明显。有三件事需要考虑:创建连接需要时间;在某一时刻连 接必须服务于一个用户,以免造成冲突;连续保持打开的代价很大。
创建一个连接大概需要1一2秒种。除了建立到数据库的网络连接之外,数据库引擎还要对 用户进行身份验证,并用各种数据结构创建一个环境以便记录事务、缓存的语句和结果等等。为 服务器所接收的每一个请求都创建一个连接,实现起来虽然很简单,但在事务较多的服务器应用 程序中,它的时间开销太大。
减少创建连接次数的一个办法就是,为每个需要访问数据库的servlet或JSP页面维护一个连 接。可以在对网络资源进行初始化时创建连接、并以实例变量的方式将它保存起来,直至应用程 序关闭时为止。随后我们会发现,当我们用这种方法部署应用程序时会导致多线程问题。每个请 求都通过同一个servlet或JSP页面执行一个独立的线程。许多JDBC驱动程序并不支持多线程访 问同一个连接,这样就会出现很多运行时错误。那些支持多线程的驱动程序会将所有调用都串行 化,这样又会降低可伸缩性。这样做所产生的一个更严重的问题是来自不同用户的请求(都使用 了同一个连接)对相同的事务进行操作。如果一个请求试图回滚,那么所有使用相同连接的数据 库操作都要被回滚。
连接保持打开的代价很大,尤其是在系统资源方面,很多商业数据库产品都使用按照同时打 开的连接数目定价的执照,所以从金钱方面来看连接的代价也很大。因此,应当尽量减少应用程 序所需要的连接数。一个解决办法就是“一个资源一个连接”,也就是说,当数据库接收用户的 第一次请求时为用户创建一个连接(每个用户一个连接),并将这个连接作为一个会话作用域对 象。然而,这样做的缺点是连接在大多数情况下是不活动的,因为用户每次查看请求结果之间有 较长的时间间隔。
最好的解决办法是使用连接池(connection pool)»连接池中保存了一些Connection对象,这 些对象被所有servlet和JSP页面共享。对于每个请求都会分配给它一个连接,使用完后再收回这 个连接。使用这种方法解决了上面提到的问题:
解决问题1:创建连接需要时间。放入池内的连接只被创建一次,以后一直重用这个连接。 大多数连接池的实现都允许我们在启动时指定Connection对象的初始化个数和最大个数。如果需 要就可以创建新的Connection抓对象,直到达到最大个数。一旦达到了最大个数,连接池的客户 就必须等待一个已有的Connection对象用完,而不能再创建新的Connection对象。
解决问题2:共享连接会造成多线程问题。每个请求将得到它自己的Connection对象,所以 在某一时刻它只被一个线程使用,从而避免了潜在的多线程问题。
解决问题3:连接的资源有限。有了连接池之后,每个连接都会得到有效地利用。如果有很 多请求挂起,连接就很难在连接池中休息。如果连接池允许我们指定Connection对象的最大个数, 我们还可以根据响应时间权衡并发连接的个数。
然而,连接池并不解决所有问题。因为所有用户都在使用一些相同的Connection对象,所以 我们不能依靠数据库引擎来限制对受保护数据的访问(对受保护的访问应当是每个用户一个连 接)。相反,我们必须根据用户的不同角色(具有相同访问权限的用户组)来定义数据访问规则。 这样我们就可以针对不同角色的用户使用不同的连接池,每个连接池根据用户角色的帐号来创建 Connection 对象。
JSP和Servlet作为提供Web动态内容的一种方法与其它技术相比较,在易用性、效率、安 全性和可移植性方面都有很好的表现。JSP的应用程序中通过JAVA数据库连接(JDBC)与数据 库引擎相互作用。在Web环境下,当有大量的用户对数据库进行访问时,如何对JSP和数据库的 连接进行管理是一个很重要的问题,这会对系统的效率带来很大的影响。本文针对这种情况,分 析目前的几种数据库连接管理方法的优缺点,并讨论釆用数据库连接池模式的设计方法和应注意 的问题。
3.3几种不同的连接方式
当有多个用户连接系统时,在同一时间内很有可能会不止一个用户需要数据库连接,我们可 以有下面的几种数据库连接的管理方法:
•为每一个连接请求建立一个新的数据库连接;
•在系统初始化时建立一个连接,所有对数据库的通信都通过此连接进行;
•为数据库连接创建一个连接池,在连接池中管理着限定数目的数据库连接。
第一种方法的实现最简单,在任何时候都可以处理数据库的多用户并发请求。但在Web站点 中用数据库存储的信息生成Web页面时,每一个页面请求都需要一次新的数据库访问。连接数据 库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务,因而往 往成为最为耗时的操作。更严重的问题是,当有大量的用户登陆站点时,系统的承受能力会受到 考验。首先,系统能处理的并发请求数量受RDBMS和JSP引擎的限制。其次,系统能并发请求 的数量受系统资源的限制,如系统内存不足以支持这些连接的通讯资源的话会导致系统瘫痪。
第二种方法可以免除每次请求时初始化和释放数据库连接的开销,而且不会有系统并发处理 的问题。但由于只使用一个物理数据库连接,所有通过这个连接的请求只能串行执行,也就是说, 系统在处理完毕前一个用户请求之前无法处理下一个用户请求,这样必然影响数据库的效率。当 有多个并发的请求到达服务器时,不能被处理的请求只能由较底层次的套接字和网络协议封锁, 通常釆用缓冲机制。因此,当系统的缓冲不足时,也有系统崩溃的危险。
第三种方法从某种意义上来说是第一种和第二种方法的折中。我们使用专门的管理程序来创 建和维护数据库连接池,当需要一个数据库连接时,通过此管理程序来获得连接,当结束一个数 据库连接时,此连接交还连接池管理程序。在小负载的系统中,连接池的功能不能体现,但随着 负载的增加系统的性能会有体现。使用这种方式可以达到系统中资源和性能的平衡,而且实现的 方式也不复杂。
3. 4连接池技术
3.4.1数据库连接池技术的原理
连接池顾名思义,就是众多连接对象的“缓冲存储池”,也就是连接对象的集合体。连接池 内部提供一种管理机制,能控制连接池内部连接对象的个数,对应用程序提供获取和释放连接的 接口,完善的连接池还应能控制连接对象的生存期。
对象连接池是一种管理和重用一组对象的技术。因为生成Connection对象属于资源占用最多 的一类操作,因此最常用的对象缓冲池通常是连接缓冲池。在JDBC中,一个Connection对象代 表着一个本地数据库连接(内存中的数据库除外,这种情况在实际中很少使用)。数据库服务器 必须分配通信和内存资源以及验证用户,并且为每个连接建立安全环境。尽管有多个参数来指出 获得一个连接的时间,也经常会见到连接时间为1或2秒(取决于连接、数据库符合等)。通过 在客户之间共享一组连接,而不是在它们需要的时候都为它们生成,这样就可以改善资源使用, 因此提高应用程序的响应能力。
数据库连接池可以为大多数访问数据库的服务器方应用程序带来益处,使用数据库连接池技 术的条件是:
•用户通过一组较少的公用数据库用户帐户来访问数据库。其替代形式为每个用户使用一 个专门的帐户。在以因特网为中心的应用程序中,使用公共用户帐户的情况更常见。
•数据库连接只用于一个请求的过程,与用于来自相同会话的多个请求相结合的过程相 对。
3. 4. 2工作机制
这里结合JSP技术,对连接池的工作机制做以下探讨。连接池主要由三部分组成:连接池的 建立;连接池对连接的管理;关闭连接池。连接池建立时,连接池应从数据库一次性获取预设数 目连接对象,作为可分配的自由连接。连接池对连接的管理部分是连接池机制的核心,外部JSP 服务线程需要访问数据库时,不是直接同数据库建立新的连接,而是向连接池申请一个连接。若 连接池有空闲的连接,则分配一个连接,反之,若此时无可用的连接,这里连接池就会充分利用 JAXA的线程同步机理,使当前服务线程处于等待状态,直至有空闲的连接出现。JSP服务线程对 数据库访问完毕后,应向连接池释放连接,而不是关闭连接,连接池这时激活等待连接的其它JSP 服务线程,并分配连接。关闭连接池即连接池向数据库归还所有的连接对象。
图例 © 正在使用的连接 O被返回连接池的连接
•连接池中的连接(准备好)
图3-5连接池工作机制
3.4.2.1传统连接缓冲池
采用这种技术的时候,应用程序需要完成下列处理:
•获得对连接缓冲池或者管理多个缓冲池的对象的一个引用
•从一个缓冲池中获得一个连接
•使用此连接
•把连接返回到缓冲池
这种老式模式的实现包括一个管理一组JDBC Connection对象的类。这样一个类为初始化这 个缓冲池提供方法,还提供了获得连接、返回连接的方法。这个类的客户在获得连接之前先初始 化这个缓冲池。图3-6显示了这个原理。
图3-6传统模式连接缓冲池原理
从图3-6中可见,连接缓冲池是由客户来处理的。客户应用程序生成缓冲池、检索连接,再 释放连接。此外,这种方式要求有来自客户应用程序的严格的约定:
•客户应用程序不能关闭连接;它只应该把连接返回到连接池。但这个约定不能在客户应 用程序上严格的保证。如果客户程序在把连接返回之前意外关闭了连接,则这个连接就 将无法再使用,缓冲池将删除对它的引用,然后在必要的时候再重新生成。
•当客户在一个事务中使用Connection对象时,忘记了结束(提交或回卷)这项事务, 则连接缓冲池检测不到这种情况。这样会使应用程序事务混在一起,从而丧失数据的一 致性。
这种老式的连接缓冲池只有在共享相同运行时间的客户中有效。这是一个客户方的缓冲池。 当多个客户应用程序都要求获得连接时,这种传统的缓冲池就不适用了。在这种情况下,更合适 的选择是服务器方的连接缓冲池。当每个客户维护他自己的连接缓冲池时,很可能连接重用并不 会以最优的效果运行。
传统连接缓冲池的根本缺陷在于这样一个缓冲池并不使用于分布式事务。它还会给像Web 容器这样的容器管理的环境带来灾难,因为它强迫你在静态变量中保持连接,而在这种方式下容 器无法实现其访问控制。
3.4.2.2使用javax.sql包的连接缓冲池
javax.sql包提供了连接缓冲池的一个透明的解决办法。采用这种技术,应用程序服务器或数 据库驱动程序可以内部处理连接缓冲池的操作。
图3-7使用javax.sql包的连接缓冲池原理图
与传统连接缓冲池相比,不同之处在于应用程序服务器与JDBC驱动程序协作维护的额外的 连接缓冲池。这意味着对于JDBC客户应用程序不需要再有额外的编程要求,而是需要由J2EE 服务器的系统管理员在应用服务器上配置一个连接缓冲池。准确的语法与类名是与具体实现相关 的。在遵守JDBC2.0的应用程序服务器和数据库驱动程序中,服务器系统管理员一般会进行下列 指定:
•—个实现 javax. sql. ConnectionPoo 1 DataSource 接 口的类
•一个实现java. sql. Driver接口的类
•缓冲池的大小(最大和最小尺寸)
•连接时间限制
•验证参数
javax.sql包为实现连接缓冲池指定了三个接口和一个类:javax.sql.ConnectionPoolDataSource> javax.sql.PooledConnection、javax.sql.ConnectionEventListener 和 javax.sql.ConnectionEvent。
•javax. sql. ConnectionPoolDataSource 接口:这个接口与 javax. sql. DataSource 接口 类似。它不是返回Connection对象,而是返回javax. sql. PooledConnection对象。也 就是说,连接缓冲池数据源是缓冲池连接对象的一个工厂(factory)。即使在配置了连 接缓冲池之后,应用程序仍然使用javax. sql. DataSource对象来获得连接对象,这是 DataSource实现的一部分。连接缓冲池对于应用程序代码仍然保持透明。系统管理员 在建立了连接池之后,应用程序就可以自动开始使用连接池中的连接了。
•javax. sql. PooledConnection接口:打开了连接缓冲池处理后,本接口的对象保持着 一个实际的数据库连接。缓冲池中的连接和普通连接的区别在于,首先,这种连接是 JDBC客户应用程序中的一个实际的连接。在JDBC连接缓冲池处理中,Connection对象 并不包含实际的数据库连接。应用程序获得的实际上是一个常规的Connection对象。 Connection对象对于所有数据库访问都使用缓冲池中的Connection对象所包含的实际 连接;其次,当调用close0方法时,实际的连接并没有关闭。DataSource实际只是删 除了连接对象与缓冲池中Connection对象之间的关联。因此可以在使用之后关闭连接, 此后数据源可以重用缓冲池中的连接;最后,应用程序不需要把Connection对象返回 到任何缓冲池,只要关闭它即可,就像没有使用连接缓冲池一样。
•javax. sql. ConnectionEventListener 接口:此接口有两个方法 connectionCloseO 和 connectionErrorOccuredO 0第一个方法在应用程序调用close()方法时被调用。连接 池为重复使用而对连接做标记;第二个方法在出现致命连接错误时被调用。连接缓冲池 在出现这种事件时会关闭Connection,并且把它从缓冲池中删除。
•javax. sql. ConnectionEvent类:这个类代表着与连接有关的事件。连接缓冲池会向池 中的连接添加连接事件侦听器,而连接侦听器会在出现连接事件时得到通知。
在典型的实现形式中,应用程序调用数据源的getConnection()方法时会经过下列两个步骤:
•数据源先查看一个空闲的PooledConnection对象。如果有,则连接缓冲池会返回一个 PooledConnection对象到这个数据源。接着这个数据源调用这个PooledConnection对 象的getConnection 0方法,返回一个Connection对象。
•如果在连接池中没有空闲的PooledConnection对象可用,则此数据源会使用个连接 缓冲池数据源来获得一个新的缓冲池中的连接。
由于一个连接实际上就是缓冲池中连接的一个句柄(它保持着网络连接),因此可以使用相 同的缓冲池中的连接来生成和关闭一个连接许多次。不仅如此,客户API仍然保持相同,这是因 为连接缓冲池的细节永远也不会暴露给应用程序。
总结:这种方式的主要优点在于简单,对于客户应用程序开发者、系统管理员都是如此。系 统管理员可以独立于所有应用程序打开/重新配置连接缓冲池。
第四章内容管理系统的分析与设计
4.1系统的需求分析
中国农业机械装备网的建设目标是成为国家级的农业机械装备数据库和信息网络平台,为企 业、科研单位和个人用户提供专业信息服务,实现信息检索查询、数据统计分析、最新行业动态、 政策法规、行业标准、商务信息等多种用户需要的功能。
中国农业机械装备网主要包括企业信息模块、产品信息模块、行业新闻模块、政策法规模块、 专利信息模块、技术成果模块、商务信息模块和标准信息模块。
结合农业机械装备网的具体需求和实际情况,在对内容管理的实现方法做了深入研究后,作 者开发了农业机械装备网内容管理系统,并通过此系统实现了行业新闻模块和商务信息模块的功 能。
农业机械装备网内容管理系统的目的是实现站点的建设维护中的分工协作,把内容创作、美 工设计、系统维护的职责分离。它让网络专业技术人员来负责系统的建立和维护,并使机构中非 IT专业人员的普通用户能够通过简单的培训,利用常用的界面或者工具就能够将表单、栏目、新 闻等内容发布到站点上去。而美工人员则可以专注于系统的界面风格设计,如图4-1所示:
通过对农业机械装备网的项目需求进行分析和提取,在内容管理方面会有如下需求:
1、能够比较灵活的定制栏目,而且能够在任意位置放置这些栏目;能够增加多种类型的栏 目,还可以达到让这个栏目的信息滚动,显示发布日期等目的。
2、 能够比较方便的去管理网站的图片、文档等一切资源,达到资源共享。使用的时候,能 够比较方便快捷的查询。
3、 能够比较方便地对信息发布、录入、修改、删除;能够对信息的安全性和权限进行控制, 保证信息访问的安全性和灵活性。
4、 能够使网站风格进行统一,可以提供一些模板,也可利用其它的工具做好模板,直接在 内容管理系统中使用,对其能够导入、删除和修改。
5、 可以达到在任意地点和时刻进行网站发布,把动态的内容利用静态的页面发布出去,提 高网站的访问速度。
6、 提高系统的扩展能力,集合其它系统的功能,满足以后系统升级的需要。
4.2系统的目标
4. 2.1系统的性能指标
农业机械装备网内容管理系统在性能上应能达到下列指标:
1、 实用性和灵活性
实用性和灵活性是内容管理系统的首要考虑的特性,系统必须满足大部分的网站建设和维护 的需要,它的出现就是旨在提高内容管理和发布的效率。在软件设计中,以方便用户的使用为标 准,统一编码规则、统一界面风格使用户经过简单的培训就可以胜任所有的工作。
2、 先进性
•釆用目前市场上成熟的先进的技术,利用当前最流行的语言JAVA;先进的软件思想, 如组件思想,设计模式等应该满足现有网站内容管理的需求,能够轻松实现与其它应用 系统的集成,提供与其它系统的接口。
•系统的可扩展性:考虑到内容管理的不断升级,会在将来对内容管理提出新的需求,内 容管理系统应该能够在不改变现有系统架构的情况下,平滑地接受这种扩展,无缝地将 其集成到现有的系统中来。
•系统要具有良好的可维护性。
•便携性:内容管理系统要能够实现随时随地的办公,无论用户身处何地,无论在什么时 间,只要接入Internet网络,就可以随时随地办理一些相关的业务。
•要有较快的响应速度和较高的工作效率,有效处理数据的并发操作,保持系统运行稳定。
•在信息资源被共享的同时,其保密性也要加强。采取有效地安全管理机制,对不同用户、 各种信息的访问具有严格的权限。
3、 可靠性
可靠性是指系统使用的软、硬件可靠程度。使系统在运行中不发生或极少发生故障,在偶然 事故及操作失误时,系统应具有较强的信息保护能力,不应该造成数据信息的丢失和破坏。
4、 安全性
内容管理系统管理整个网站的所有资源,因此对系统的安全性要求非常高,一方面要保证数 据一致性,另一方面又要在非常情况下保证数据的丢失减少到最低限制。对用户的使用和后台系 统的维护上,严格控制访问的权限和等级,从而提高系统的安全性。
5、可扩展性
考虑到系统的升级功能,必须在设计的时候保持系统的良好的可扩展性。同时提供与其它系 统的接口,以便系统能够集成其它的功能。
4. 2. 2系统的功能指标
农业机械装备网内容管理系统的主要功能如图4-2所示:
1、 登陆模块:是内容管理系统的入口,保证系统的管理用户能够进入进行管理,防止非管 理用户进入。
•提供身份验证,包括用户名和密码
•根据管理用户的身份,分配相应的管理权限。管理用户共有三级,分别是系统管理员、 管理员和录入员。其中,系统管理员权限最大,管理员次之,录入员最小
2、 栏目管理模块:是内容管理系统中内容分类管理的依据,设计为二级管理。
•管理用户可以根据需要创建一个新栏目,包括栏目名称和ID号信息
•能对已经存在的栏目名称进行编辑修改
•能够删除系统中不需要的栏目
•能够在某一具体栏目的下面创建新类,包括类名和ID号,相当于栏目是第一级,类别 是第二级
•对已经存在的类别,可以进行编辑修改
•对不需要的类别,能够进行删除
3、 用户信息管理模块:是系统管理员对后台管理用户信息的管理维护模块。
•无论是什么级别的管理员,都能对其个人信息进行管理,包括用户名和密码的修改
•系统管理员可以添加新的管理员或录入员,并设定其用户名和密码
•系统管理员可以删除已经存在的管理员或录入员
•管理员级别的用户能够对录入员进行管理,包括添加新录入员和删除已经存在的录入员
4、 新闻管理模块:是内容管理系统中对新闻信息进行管理的模块。
•新闻的添加和发布,新闻的属性包括标题、作者、出处、内容、时间、所属类别等基本 属性
•新闻的编辑修改、删除,可以进行批处理
•快速定位具体新闻,提供查找功能
•支持图片新闻的功能,能够保持新闻内容的格式
5、 商务信息管理模块:是对前台普通用户发布的商务信息进行管理的模块。
•审核注册的商务信息,符合条件的商务信息进行发布
•删除不恰当的数据信息
•管理前台注册用户信息
4.3系统的总体设计
4.3.1系统的结构
农业机械装备网内容管理系统是一个基于J2EE技术的信息系统,它本身的应用属性与应用 范围决定了它只能采用B/S结构;同时由于内容管理系统涉及到复杂的业务逻辑,因此内容管 理系统设计为基本B/S结构的三层结构,既极其简化了系统的部署与管理,又有强大的功能,建 立具有高度可伸缩性和可靠性的动态Web应用。
农业机械装备网内容管理系统采用基于B/S的由表示层、应用层和数据服务层组成的三层 结构,具体如图4-3所示。其中八用户通过浏览器实现交互,WEB浏览器根据用户的请求操作, 向WEB服务器发送访问请求信息,消息中包含了请求的性质、资源的位置和服务器完成请求所 必须的其它消息。应用服务层由Web服务器和相关的中间件程序组成,用于处理复杂的业务应 用逻辑、数据处理。数据服务层由数据库服务器和数据库组成,完成数据存储、数据缓冲及各项 数据库管理任务。
这样的划分目的在于:一是改善应用程序的伸缩性,减少所必须的数据库连接数目。三层结 构模式使得每一个消耗资源的客户程序不直接访问数据服务器,而是与业务层中的服务进行通 讯,同时一个服务可以向多个客户提供服务,这样就降低了资源消耗,提高了伸缩性;二是将表 示层与具体的数据存储细节隔离开。正因为表示层与数据层相隔离,所以数据层中数据存储的格 式或位置发生变化,不会影响到表示层。
4.3. 2网络拓扑结构
网站的网络平台包括网站局域网、Internet接入、企业内外系统连接三部分,网站局域网包 括防火墙、路由器、交换机、Web服务器、数据库服务器、应用服务器、邮件服务器、存储设备 等,具体设备的选型根据企业网站的规模、提供的应用服务、安全需求进行相应的设计。对于大 中型企业来说,网站局域网可采用分布式体系结构,将网站的不同功能模块分布在不同的服务器 上,减少系统的单故障节点,并有利于系统的扩展。同时可结合双机热备份技术,提高系统中关 键功能模块的可靠性。
4.4系统的数据结构设计
4.4.1数据库设计原则
数据库的设计关系到整个系统性能、升级和移植的问题,在数据库设计的时候主要考虑了以 下几个原则:
1、 命名的格式要规范
不同的数据库产品对对象的命名有不同的要求,因此,数据库中的各种对象的命名、后台程 序的代码编写应采用大小写敏感的形式,各种对象命名长度不要超过30个字符,这样便于应用 系统适应不同的数据库。
2、 索引的使用原则
使用索引可以保证被索引列的唯一性和明显提高查询性能。但是,系统为维护索引,必将增 加许多额外的开销,会降低插入、更新、删除操作的性能。所以,索引的使用是否恰当,对系统 性能的影响很大。合理的使用索引,要注意以下几点:
•表的规模不大时,不应该使用索引
•表需要频繁更新时,维护索引的开销大于使用索引减少的开销,所以这类表最好不要建 立索引
•查询字段不确定的表不要使用索引,因为维护索引开销较大而不确定的查询字段使得索 引并不能充分发挥作用
•选中度过大的查询不要使用索引,对系统的性能提升不大
3、 数据的一致性和完整性
为了保证数据库的一致性和完整性,设计人员往往会设计过多的表间关联(Relation),尽可 能的降低数据的冗余。表间关联是一种强制性措施,建立后,对父表(ParentTable)和子表(Child Table)的插入、更新、删除操作均要占用系统的开销。如果数据冗余低,数据的完整性容易得到 保证,但增加了表间连接查询的操作,为了提高系统的响应时间,合理的数据冗余也是必要的。 使用规则(Rule)和约束(Check)来防止系统操作人员误输入造成数据的错误是设计人员的另 一种常用手段,但是,不必要的规则和约束也会占用系统的不必要开销,需要注意的是,约束对 数据的有效性验证要比规则快。所有这些,设计人员在设计阶段应根据系统操作的类型、频度加 以均衡考虑。
4、 数据库性能的调整
在计算机硬件配置和网络设计确定的情况下,影响到应用系统性能的因素不外乎为数据库性 能和客户端程序设计。而大多数数据库设计员采用两步法进行数据库设计:首先进行逻辑设计, 而后进行物理设计。数据库逻辑设计去除了所有冗余数据,提高了数据吞吐速度,保证了数据的 完整性,清楚地表达数据元素之间的关系。而对于多表之间的关联查询(尤其是大数据表)时, 其性能将会降低,同时也提高了客户端程序的编程难度,因此,物理设计需折衷考虑,根据业务 规则,确定对关联表的数据量大小、数据项的访问频度,对此类数据表频繁的关联查询应适当提 髙数据冗余设计。
4.4. 2主要表结构
1、news 表
news表的设计是用来存储新闻信息的,一条信息应包括标题、作者、时间、内容和出处等等 属性信息,表的字段名称、数据类型和意义设计如表4-1所示:
表4-1 news表的数据结构
字段名称 数据类型 长度 意义
newsld int 4 序号
classld Int 4 分类号
kindld Int 4 二级分类号
myOther Int 4 是否原创
headTitle Varchar 255 新闻题目
Content Text 16 新闻内容(正文)
connectNews Varchar 255 相关新闻
Author Varchar 50 作者
Editor Varchar 50 编辑
newsFrom Varchar 50 来源
topNews Int 4 是否头条
newsTime Varchar 50 发布时间
Hits Int 4 点击数
State Int 4 状态标识
Tag Int 4 标志
2、newsadmin
newsadmin表是用来对管理员和录入员信息进行存储的,其字段项有用户名、密码、用户级 别、最后登陆时间和登陆IP地址等信息,其意义如表4・2所示:
表4-2 newsadmin表的数据结构
字段名称 数据类型 长度 意义
username Varchar 20 用户名(登陆名)
passWd Varchar 20 密码(登陆密码)
Purview Int 4 级别(是否是管理员)
LastLogin Datetime 8 上次登陆时间
lastLoginlp Varchar 20 上次登陆IP地址
3、newsclass 表
newsclass表是对分类中的类别进行存储,并且是一级分类的信息,包括类别号和类别名称等
字段,其意义如表4・3所示:
表4-3 newsclass表的数据结构
字段名称 数据类型 长度 意义
classld Int 4 栏目号
Content Varchar 50 栏目名称
4、newscommon
newscommon表用来记录管理员的登陆次数和登陆的IP地址
表4・4 newscommon表的数据结构
字段名称 数据类型 长度 意义
Counter Int 4 登陆次数
Ip Varchar 50 登陆地址
5、newskind 表
newskind表把一级分类和二级分类联系起来,具体定义如表4-5所示:
表4・5 newskind表的数据结构
字段名称 数据类型 长度 意义
kindld Int 4 二级分类号
Content Varchar 255 类名称
classld Int 4 一级分类号
6、business_infb 表
business.info表的作用是用来存储商务信息的所有内容,主要是信息的基本属性,具体如表
4・6所示:
表4-6 business info表的数据结构
字段名称 数据类型 长度 意义
Id int 4 标识
Infb_Name varchar 100 信息标题
Content text 16 信息内容
Company varchar too 公司名称
ContactPerson varchar 50 联系人
Telephone varchar 20 电话
Fax char 10 传真
Address varchar 200 地址
Postcode int 10 邮编
Website varchar 50 网址
Email varchar 50 电子信箱
Style int 4 信息类型
UserName char 30 用户名
ReleaseTime datetime 8 发布时间
State int 4 信息状态
7、business_infb_type 表
business_info_type表用于存储商务信息的类型以及类型代码编号:
表4・7 business info type表的数据结构
字段名称 数据类型 长度 意义
Id int 4 标识
Type char 10 信息类型
Code int 4 类型代码编号
8、business_register_user 表 business_register_user表用于存储前台用户注册的基本资料:
表4・8 business registei^user表的数据结构
字段名称 数据类型 长度 意义
Id int 4 标识
Name varchar 50 姓名
Username varchar 50 用户名
Password varchar 50 密码
Company varchar 100 公司名称
Address varchar 150 地址
Postcode int 10 邮编
Fax int 15 传真
Email varchar 50 电子邮箱
RegisterTime datetime 8 注册时间
4. 5系统详细设计
4.5.1身份验证与授权模块的设计
4.5.1.1系统整体安全设计
信息安全研究防止信息内容被故意地或偶然地非授权泄露、更改、破坏,或使信息被非法地 系统识别、控制的各种机制,它可确保信息的完整性、保密性、可用性和可控性。确保信息安全 可以从以下几个方面入手:
•操作系统安全:对操作系统安全的研究可分为两个方面。一是操作系统的整体安全,即 指从系统设计、实现和使用等各个阶段都遵循了一套完整的安全策略的操作系统,这些 安全策略可以按需要分成不同的级别;另一是研究操作系统的安全部件,包括通过构造 安全模块等来增强操作系统的安全性。
•数据库安全:它一般采用多种安全机制与操作系统相结合的方式来实现数据库的安全保 护,其形式与操作系统类似。
•网络安全:提供访问网络资源或使用网络服务的安全保护,研究内容包括网络安全管理、 网络安全系统和网络系统的安全部件。
•计算机病毒防护:对病毒防护的目的主要是保护网络资源,方法有防火墙技术和防毒软 件等。
•访问控制:主要是通过主体访问客体时的权限控制来实现。
•数据加密技术:主要包括加密体制和加密算法,用于保护存储和传输过程中的数据。
农业机械装备网内容管理系统在安全性方面进行了周密的设计,服务器端操作系统做了身份 验证设置,只有管理员才能进入;在数据库安全方面设置用户和角色,做到分级别可控管理:在 网络安全方面,设置防火墙和过滤规则,避免计算机病毒侵入系统;在访问控制方面,本系统在 后台管理入口做了身份验证控制,来确保系统资源的安全。
4.5.1.2身份验证和授权设计
农业机械装备网内容管理系统是只有管理员身份的用户才可以进入来进行系统管理,本系统 在用户身份和权限上做了三级管理和权限控制。最高级别的是系统管理员,具有此身份的用户能 够进行所有功能和信息的管理,具有决对权限;第二级别的是管理员,具有此身份的用户能够进 行后台用户管理和新闻管理,而不具有类别管理和商务信息管理的权限;第三级别的是录入员, 具有此身份的用户只能够进行新闻信息的发布和个人信息的管理,而不具有分类管理、用户管理 和新闻修改等权限。其用例图如图4-5所示:
管理入口的身份验证设置了用户名和密码匹配验证方式,如果用户名和密码都匹配成功,则 表明此用户是系统管理者身份,接下来进行权限验证,其目的是看此管理者具体是什么身份和具 有什么权限,如果此用户具有系统管理员权限,则进入系统进行系统管理员的权限级别管理;如 果此用户具有管理员权限,则进入系统进行管理员的权限级别管理;如果此用户具有录入员的权 限,则进入录入员的权限级别管理;如果用户名和密码验证不成功,则表明此用户不是系统管理 者,不具有管理权限,不能进入系统。其流程图如图4-6所示:
在与数据库通信方面,是利用newsadmin表来做身份和权限验证分析的数据依据,其表结构 如表4-2所示。
说明:newsadmin表中的字段Purview的含义是代表管理用户的身份级别,其数据类型是Int, 本系统在设计时,规定数字0代表此用户是系统管理员级别,数字I代表管理员级别,数字2代 表录入员级别。
这样设计的优点是:方便管理者对系统的管理。系统管理员可以创建多个管理员用户和录入 员用户,并分配给不同的人,让多个具有新闻录入权限的用户进行信息发布,而管理员在具有录 入的权限的同时,对录入员进行管理,这样系统管理员的繁重的工作将被管理员和录入员分担, 系统管理员只需要保证系统的正常运行就可以了。
4.5.2类别管理模块设计
4.5.2.1信息分类学研究和实际意义
信息分类学是网站开发人员的好伙伴,它可以帮助他们达成在设计网站时需要考虑的两个非 常重要却又容易忽视的目的:用户满意度和投资回报程度。如果在设计时对信息分类考虑较少甚 至不予考虑,那么就算效率再高的搜索引擎也难以圆满实现这两个目的。
在互联网出现以前,公众获取信息或知识的一个主要途径就是图书馆。借助专业的信息检索, 图书管理员知道如何通过布尔逻辑、加号、减号以及其他符号完成复杂的查询工作。这种复杂的 查询依赖于对信息架构的正确分类和明确标记。但是当互联网兴起时,人们认为解决信息查询问 题的方法就是将大量信息一股脑的抛到这个信息高速路上,而没有考虑该如何组织这些信息。
这种局面造就了搜索引擎,这个在整个互联网上辛苦搜集信息的工具。不幸的是,我们中的 大多数人都没有受过图书管理方面的培训,无法准确告诉搜索引擎我们所需信息的关键词。而互 联网在经过几年的迅速发展后,在我们面前的互联网已经成为了一个无边无际的电子信息海洋。 它带给我们的好处就是超级丰富的信息量。然而由于没有良好的内容结构,我们无法在这些信息 内容中快速找到所需信息,甚至根本就找不到所需信息,更糟的是也许我们找到的只是一堆不需 要的东西,而我们却还在这堆垃圾中挑来拣去的寻找根本没有的东西。
1、缺乏结构性带来的问题
无结构性的互联网内容带来的问题无法用量化的标准来说明,因为借助搜索引擎,搜索者很 少知道为什么会搜到这个结果或者这个信息来源何处。因此,我们将网络内容缺乏结构性带来的 各种问题总结如下:
(1) 不成功的搜索所浪费的时间。
由于搜索者无法找到所需信息,因此信息收集存储的投资回报很低,比如数据仓库和内容管 理。
(2) 由于不完整或者不精确的信息造成的决策失误。
不成功的捜索给搜索者带来的不良体验会破坏公司形象、公司与客户/合伙人间的关系,以及 内部人员的关系。
2分类学给网站开发带来的益处
生命科学家用分类学将所有的生物进行有组织的分类。图书管理学家和信息科学家们也将这 种技术和方法用于信息搜索和数据检索。借助于这种技术和方法,我们可以开发一种网络分类框 架,将先前无法快速访问的容转换为具有结构性的Web内容以便于访问。
分类学牵扯到网站开发的很多方面,比如网站设计、内容管理以及网站内容的搜索过程。下 面让我们具体来看看分类学是如何给这些方面带来益处的。
(1)分类学给网站设计带来的益处
分类学具有两个方面:结构分类和视图分类。网站设计所涉及的更多的是视图分类,它通过 将信息按主题分组达到将网站内容逻辑化的目的。在利用外观分类实施网站设计时,我们可以利 用直观的组织和标识来建立一个有效的网站导航系统。当网站内容彼合理的组织并有了清晰明了 的标识后,网站访问者就可以轻松的导航和定位所需内容,这种体验可以有效提高访客的回头率。
(2)分类学给网站内容管理带来的益处
图书馆根据美国国会图书馆分类系统(Library of Congress Classification System)或者杜威图 书分类系统(Dewey Decimal System)对书籍和杂志进行组织。每一项都用一系列标准属性来标 记,比如图书编目号码、主标题、标题和作者等等。然后,这些书籍和杂志可以放心地入库,以 后可用人工或计算机化的卡片编目来方便地检索。
同样,企业也可用结构分类来组织其信息资源如文档、网页等等。结构分类提供了一个层次 化的分类系统,它基于一个已经定义好的范围和背景。在内容管理过程中,可采用结构分类的标 准术语来统一分类及标记信息资源。在内容管理工作流中,内容管理员通过提供一个层次化的类 别列表以推行分类结构。
最终的结果就是,企业或公司范围内的所有信息都存储到一个内容管理系统中,而且每项信 息都与一个或多个类别相关联。之后就可通过一个视图分类或者搜索引擎,在网上更有效地检索 这些分类信息资源,这和传统的图书馆检索并没有多大的区别。内容管理系统最终的目标就是使 企业的内容达到最大的可用性。因此将结构分类集成到内容管理过程中,就能改进内容管理系统 的可用性。
4.S.2.2类别管理模块设计
为方便信息的组织和管理,农业机械装备网内容管理系统在信息管理的分类设计上,采用二 级分类管理,第一级称栏目管理,第二级称类管理。类别管理模块是对系统管理员开放的功能模 块,对其它权限级别的管理员具有透明性。在发布新闻信息的时候,会选择新闻应归属的栏目和 类别,也就是每一篇新闻信息都有两个分类的属性来表明它的类别。
1、栏目管理设计
对于第一级别的栏目管理,系统管理员可以创建新栏目、编辑修改已经存在的栏目和删除不 需要的栏目。其用例图如图4-7所示:
图4-7栏目管理用例图
需要说明的是,在系统管理员进行栏目删除时,如果有属于这个栏目的二级分类,则这些二 级分类也将被从系统中删除,还有就是属于这个栏目的新闻信息也将被从系统中删除。这样设计 是保证栏目与子类、新闻信息的一致性。从逻辑上来讲也必将如此。
同样的,在系统管理员进行栏目编辑时,栏目的改动将影响到二级分类和新闻信息中的栏目 信息。也就是说,此处对栏目名称的修改,二级分类中父类(栏目)和新闻属性信息中的对应的 栏目名称也要做相应的修改。
在数据库设计中,newsclass表就是用来存储栏目信息的,其结构如表4-3所示。
表结构说明:在表4-3中,与其它表相联系的是字段classld,具体是说,在二级分类表中和 新闻属性信息表中都有栏目编号这一字段,而不用出现栏目名称,由于栏目编号和栏目名称是一 一对应的关系,所以只要知道栏目编号就可以知道其栏目名称。
2、类别管理设计
对于第二级的类管理,在功能设计上有创建新类、编辑类和删除类。其中创建新类是在已经 存在的栏目中进行的。
系统管理员
图4-8创建新类的活动图
说明:图4-8表明的是创建一个新类的活动图,图中创建新类这个活动是在创建栏目活动之 后执行的,他们存在一种顺序关系;同样,编辑类活动和删除类活动是在创建新类后执行的,也 就是说创建新类必须先于这两个活动执行,他们也存在一种顺序的关系。
数据库中newskind表是用来存储二级分类数据信息的,也是把类和栏目联系起来的纽带,其 表结构如表4-5所示。
表结构说明:字段kindld代表二级分类编号,字段classld代表一级分类编号(栏自编号), 字段content代表类名称,这样每个类编号都与一个栏目编号对应,newskind表把栏目和类联系 起来,可以查看每个具体类归属于具体的栏目,这也是newskind表设计的目的。
4.5.3用户管理模块设计
用户管理模块是对内容管理系统用户的基本信息的管理,针对不同的角色,其管理的权限也 不一样,其用例图如图4-9所示:
如图4-9所示,系统管理员具有绝对权限,有添加管理员、添加录入员、删除管理员和删除 录入员的权限,并可以进行个人信息的管理;而管理员只具有删除录入员权限,并可以对个人信 息进行管理;录入员没有添加和删除的权限,只能进行个人信息的管理。
由此可见,系统管理员权限最大,由它来设定管理员和录入员的用户名以及数量,并分配给 合适的人选;管理员的权限次之,但是能够对录入员进行管理;而录入员权限最小,只能对自己 的信息进行管理。
个人信息管理主要是对密码进行管理,也就是密码修改。
与数据库发生通信的表是newsadmin表,其结构如表4-2所示。
4. 5.4新闻管理模块设计
新闻管理模块是内容管理系统的核心模块,它负责完成新闻信息的发布、修改和删除。
如图4-10所示,在新闻管理模块中,系统管理员和管理员具有绝对权限,可以进行发布新闻、 修改新闻和删除新闻的操作,而录入员只有发布新闻的权限。
一篇新闻的基本属性包括标题、作者、内容、所属类别(包括栏目和类别)、编辑、岀处、 是否有相关新闻、是否原创、新闻图片和图片位置等信息。每一项属性都存储于数据库中,news 表就是专门存储这些属性信息的,其表结构和含义如表4-1所示。
本系统可以发布带两张图片的新闻,这样就存在一个图片数量的问题,共有三种情况: 情况一:发布的新闻不带有图片;
情况二:发布的新闻带有一张图片;
情况三:发布的新闻带有两张图片;
在编辑修改新闻的时候,根据要编辑的新闻是否有图片和图片个数,修改时共有九种情况: 情况一:要修改的新闻没有图片,改后添加0张图片;
情况二:要修改的新闻没有图片,改后添加1张图片;
情况三:要修改的新闻没有图片,改后添加2张图片;
发布新闻的过程如下:
•填写新闻信息的各个属性项
•对新闻信息进行检查
•上传新闻图片(如果有图片)
•把新闻信息插入数据库
编辑修改新闻的过程如下:
•对要修改的新闻属性项进行修改
•检查修改后的新闻信息
•处理新闻图片部分的内容(9种可能情况)
•更新数据库中此条新闻信息
删除新闻信息的过程如下:
•选择要删除的新闻信息
•删除确认(避免失误)
•从数据库中删除这条新闻内容
•删除此新闻的图片信息(如果有新闻图片)
4. 5. 5商务信息管理模块设计
商务信息管理模块是针对前台用户注册信息和发布的商务信息进行管理的模块。主要功能包 括管理用户信息、审核商务信息和删除用户信息等功能。其用例图如图4-11所示:
用户信息的基本属性应包括:姓名、用户名、密码、公司名称、地址、邮编、传真、电子信 箱和注册时间共9项。
商务信息的基本属性应包括:信息标题、信息内容、公司名称、联系人、电话、传真、地址、 邮编、网址、电子信箱、信息类型和用户名共12项。
用户发布商务信息的具体过程如下:
•普通用户进行注册
•注册成功后,进行信息发布
•系统管理员进行信息审核
•审核批准后,信息发布成功
系统管理员进行商务信息审核并批准的具体过程如下:
•列出所有待审信息
•查看每一条待审信息的内容,进行审核
•审核批准
第五章内容管理系统的实现
5.1系统开发平台的建立
农业机械装备网内容管理系统是在Windows XP操作系统上开发的,以Tomcat作为Web 服务器,使用JBuilder和Dreamweaver作为开发工具,Microsoft SQL Server 2000为数据库服务 器,所有的业务逻辑封装在JAVABEAN里,结果显示用JSP文件和标签来实现。
5.1.1数据库的选择
数据库是数据存储的重要部件,目前市场上数据库的主流产品有IBMDB2、Microsoft SQL SERVER 2000. ORACLE 9i. Sybaseo 本系统选择 Microsoft SQL SERVER 2000o
SQL Server是Microsoft公司在原来和Sybase公司合作的基础上推出的一款面向高端的数据 库系统。它推出后,得到广大用户的积极响应并迅速占领了 NT下的数据库应用市场,成为数据 库市场上的一支不容忽视的重要力量。经过不断的更新换代,SQL Server已经发展到了 SQLServer 2000,它为企业基于Windows 2000的解决方案提供了一个首选数据库系统,来自开发商的信息 表明,SQL Server 2000无论是在功能、安全性、可维护性还是易操作性上较以前的版本都有了长 足的进步。
SQL Server 2000除了继承了来自以前版本的特点外,还结合了用户的需求以及最新涌现的技 术。SQL Server 2000对Web的支持主要表现在以下三个方面:
1、 丰富的Web支持
事实上,SQL Server 7.0就是一款非常适合于Web的数据库存储系统。新推出的SQLServer 2000继承了这一优秀传统,并在以前的基础上做了大量拓展。在新版本的运行过程中,SQLServer 2000主要具有以下几大特点:
•丰富的XML和Internet标准支持:SQL Server 2000支持通过XML的数据插入、删除、 更新和检索操作。SQL Server 2000还提供了一个简洁的模型供开发者开发应用程序。 同时,它还全面支持W3C制定的技术标准。
•简单安全的Web数据访问:SQL Server 2000支持基于HTTP连接的数据访问,并以新 的过滤机制实现了对格式化文档的高性能全文检索功能,简化了自然语言查询解决方案 的开发过程。
•强大灵活的基于Web的数据分析:SQL Server 2000扩展了已有的OLTP分析技术,发 布了先进的应用于ffeb数据分析的数据发掘工具和算法。同时SQL Server 2000还很好 的实现了 Commerce Server 2000的集成'首次实现了对用户点击情况的跟踪分析。
2、 高度的可伸缩性和可靠性
SQL Server 2000所具有的高度的可伸缩性和可靠性,使其成为Web和电子商务应用的首选 数据库系统。其所具有的伸缩性主要表现在以下两个方面:
•电子商务应用的可伸缩性:SQL Server 2000支持在服务器群之间的负载自动均衡,从 而对大容量的并发访问提供高速响应。SQL Server 2000还支持对查询的自动优化和分 布式查询,同时SQL Server 2000还针对对称多处理器系统进行了优化,从而有效地保 证了充分发挥对称多处理器的性能。
•数据仓库的可伸缩性:SQL Server 2000提供了对超大规模数据的分析处理能力,支持 上千维的多维数据库。
SQL Server 2000的可靠性主要表现在对错误的自动恢复和提前预测。简化了错误恢复的操作 和配置,SQL Server 2000的数据库可以在大多数操作下都保持在线状态,从而避免了系统管理时 关闭数据服务。SQL Server 2000还提供了一种被称为无偏差的快照备份服务,这种服务还集成了 事务日志分析和管理的功能。
3、高效的数据处理
SQL Server 一贯追求性能的提升,在SQL Server 2000中,对性能的考虑更加突出,正式发 布SQL Server2000以前做的测试表明,SQLServer确实是一款性能卓越的产品,其中的TCP-C 指标更是创下了世界记录。SQL Server 2000对数据处理的高效性主要表现在以下几个方面:
•高度集成并扩展的数据分析服务:SQL Server 2000提供对数据的在线分析、数据发掘 以及数据分析体系自动对应用程序的反馈等多种技术,这些技术的提出大大扩展了 SQL Server 2000的应用空间。
•简化了的管理和调整工具:SQL Server 2000对管理工具进行了进一步简化,它通过一 系列的向导来辅助系统管理员完成对SQL Server的管理,有效地减轻了系统管理员的 负担,并大大减少了出现错误操作的机率。同时针对频繁的数据库调整工作,SQL Server 也提供了一系列的向导,这些向导不仅简化了操作人员的工作量,而且,他们本身还具 有一定的智能,能自动对数据库体系结构、数据库索引、查询和存储过程等进行分析, 并把分析的最优方案提供给管理员,这对大规模和超大规模的数据库应用来说是非常有 利的。SQL Server 2000还简化了在不同数据库之间的数据转移操作。
•增强T-SQL语言的功能并简化了对SQL程序的设计和调试:T-SQL语言(Transact Structure Query Language,事务-结构化查询语言)是SQL Server的基础语言。在SQL Server 2000中增加了 T-SQL语言功能,提供了一个界面友好的Query Analysis工具 对查询进行分析优化。同时SQL Server 2000还支持服务器端对SQL语言的跟踪和在客 户端对SQL语句的统计等功能。
•灵活的数据转移服务:在新的数据转移服务模块中,SQL Server2000提供了和MSMQ
(Microsoft Message Queue, MSMQ)的集成,并支持通过 FTP (File Transfer Protocol, FTP)对数据库的访问,发布了增强的0LEDB数据库接口,还有效地解决了在发生错误 时的处理和修复技术。
5.1.2开发语言和工具的选择
通过前面的分析,农业机械装备网内容管理系统使用了 JSP+JAVABEAN的开发方式进行系 统开发。开发工具选择JBuilder8.0和DreamweaverMX。JBuilder开发工具是当前最优秀的Java 程序开发之一,它以强大的功能和友好的界面,备受Java程序员的青睐。同时也可以开发JSP程 序,并有良好的编译和调试功能。DreamweaverMX是Macromedia公司推出的主页编辑工具, 是一个所见即所得的网页编辑器,在本系统中主要开发静态的页面和具有动感效果的网页。
5.1.2.1程序开发工具一JBuilder 8
目前,能够进行基于Java的开发工具有很多,本系统的程序开发工具是JBuilder 8o JBuilder 是Borland公司出品的Java开发工具,作为业界领先的Java集成开发环境,JBuilder可以提供Java 程序的编辑、调试、编译、运行等功能,支持几乎所有的Java技术开发,从Java Applet. Java Application到J2EE、Web Service, JBuilder可以大大提供程序员的开发效率和软件产品质量。 JBuilder 8较之以前版本,功能更加强大,其主要增强的方面如下:
1.JDK 1.4.1
在JDK 1.4.1上运行的JBuilder 8大大提高了开发的效率,在客户端可以更高速的执行应用。 而且也增加了对鼠标滚轮的支持,在以前版本的JBuilder中,只有靠拖动滚动条来修改程序,现 在可以直接用鼠标的滚轮键来浏览代码了。还提供了更多关于集中针对管理及Linux上的UI支 持。
2.Web应用程序开发
JBuilder8另外一个很重要的新特性是增加了对Struts的支持。Struts是基于Model2或MVC 的一个Web应用设计框架,目的是增强对软件的设计。Model代表数据,View是数据的表现, Controller控制model和view之间的交互。Jbuilder8提供了工具和向导来使你快速的建立一个基 于Struts的应用。
3.提高软件开发的效率
(1)消息框
你可以使消息框在屏幕的任何位置变成一个自由移动的窗口。
(2)状态栏消息
你可以使用Tools|IDE Options|Browser|Status Message Timeout选项设置状态栏信息保持的时 间。
(3)编辑器
大多数效率的改进是针对编辑器的,改进后的编辑器更加提高了软件开发的效率。
4.团队开发的改进
(1)Merge Conflicts
在History面板里有一个Merge Conflicts页,你可以在这里察看或者解决在工作台和版本控 制库里相应的文件的不一致情况。
(2)CVS的改进
CVS方面有两个关键的改进:
•如果你在JBuilder8里用pserver方式连接的时候,你可以指定端口号。
•你能在Project中CVS向导里搜索库里的一系列的模块和分支。
(3)Clear case 的改进
Clear case在版本控制设置管理方面也有很多改进,Status Browser主要是一个浏览工具:可 以浏览激活的工程,显示每个文件的版本控制状态,显示可用的版本和不同版本之间的差别。
图5-1 JBuilder 8的开发环境
5.1.2.2Web 服务器一Tomcat
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心 项目,由Apache> Suri和其它一些公司及个人共同开发而成。由于有了 Sun的参与和支持,最新 的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被Java World杂志的编辑选为2001年度 最具创新的java产品,可见其在业界的地位。
与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR (Web Archive)文件。WAR 是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的
文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录, 另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件 和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet 类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到 WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方 便。
在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下, Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次 会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外 Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一 个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地 也可以。另外,Tomcat提供Realm支持。Realm类似于Unix里面的group□在Unix中,一个group 对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用 (类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。
3 Apache Toacat/5.0 - Microsoft Internet Explorer
文件0)編辑② 查看住)收藏@) 工具(V 帮助QJ) 聲
/搜素 收京夹审媒体0; " ”画■
地址 © 阖 bttp://l0.0.0 100 :8080 —3串瞬;
pache Jakarta Project
http:// jakarta.apache.org/
If you're seeing this page via a web browser, it means you've setup
Tomcat successfully. Congratulations!
As you may have guessed by now. this is the default Tomcat home page. It can be found on the local filesystem at
$ CAT ALIN A_HOME /we bapps / ROOT/index, jsp
where "SCATALINA_HOMEH is the root of the Tomcat installation directory. If you're seeing this page, and you don't think you should be. then either you're either a user who has arrived at new installation of Tomcat, or you're an administrator who hasn't got his/her setup quite right. Providing the latter is the case, please refer to the Tomcat Documentation for more detailed setup and admi ni strati o n in formation than is foun d in the INSTALL file
Internet
图5-2 Tomcat 5.0管理首页
5.2数据库连接池的设计与实现
5.2.1总体实现
本系统的连接池由两个类构成,它们是类DBConnectionManager和类DBConnectionPool« DBConnectionPool类主要负责完成对数据源的包装和初始化,还有就是当有首个连接请求时 完成池的连接。在类的结构设计上,本类是作为类DBConnectionManager的一个内隐类出现的。 这样设计的目的是便于类DBConnectionManager对其内隐类DBConnectionPool的管理。
DBConnectionManager类主要负责完成对连接池的管理,当有连接请求到达时,它会根据连 接池的连接情况做出相应的处理,如果有空闲连接资源,就分配给这个请求的进程,如果没有空 闲连接资源,则让其处于等待状态。
5.2. 2具体过程实现
1、初始化连接池
图5-4连接池初始化的UML图
如图54所示,在系统开始启动或第一个用户申请使用数据库连接时,通过定义标签传入的 一些属性信息对数据源进行初始化,并同时对连接池进行了初始化。以后,这个连接池的实例就 成为了一个系统变量,这以后访问的所有用户都使用这个连接池中的连接来访问数据库,这就是 建立连接池的全部过程。对于网页编程人员来说,他们只需要知道几个数据库的属性,比如数据 库服务器的位置、数据库驱动程序的名字、数据库定义的用户名和密码等,就可以连接并进行数 据库操作了,而完全不用知道连接池的实现细目。
2、从连接池中获得连接
图5-5获得连接的UML图
如图5・5所示,在程序调用了数据源的封装类的getConnectionO方法后,实际上是调用了连 接池的ConnectionPool的getConnectionO方法,从连接池中获得一个空闲的连接或者是一个新的 连接。最后把这个获得的物理上的连接作为参数,进行包装后返回给程序这个物理连接的封装实 例。
对于使用者来说,只要知道对数据源调用获得连接的方法就可以了,而不必知晓上面连接池 的具体工作过程。
3、把连接返回给连接池
图5-6向连接池返回连接的UML图
如图5-6所示,在使用者用完数据库连接资源后,就可以调用断开连接的release方法来关闭 这个连接。而实际上,使用者并没有关闭这个连接,它只是把这个连接返回给连接池,供其它使 用者来申请并使用这个数据库连接。
5. 3系统主要功能模块的实现
农业机械装备网内容管理系统逻辑实现中的所有类文件利结构如图5・7所示:
E 李 common
CodeFilter.java 令,Counter .java 令 DsrteUtil.java $ EnvironmentConfig .java
令 ISiteEnvironment .java
兮 Pagination java m a database
$ DBOperator.java 惡 SOLDBOpersttor .java :三享 ebusiness
令.RegisterUser java ■-令 Waitinginfo .java ;E 曲 news 国醐manage 鱼享note :令 LinkNews java
NewsShow java
-Personal.java
SearchNews.java
…& UserManage.java
…UserNews.java s a persistence
EbusinessRegisterjava
令 NBA/S Admin .java 令 NEWSCIass.java ■令 NEWSKind java 令.NEWSPic.java …兮 NEWSTable .java • Releaseinfo java
E ® pool
■ DBConnectionManager.java
DBConnectionManagerDBConnectionPool.java 三拿 servlet
令 DOServlet.java
、d SessionManager .java
图5-7类结构图
农业机械装备网内容管理系统表示实现中的文件及其结构如图5-8所示:
admin
login.jsp
'「I、admin login.jsp
■Q-h main.jsp
•Q二 index.jsp
css
? 亠
: 4
4 error.jsp
Qzh personalerr.jsp listarticle.jsp purview.jsp
admin
卜- 壬二/ usr
卜" news
; column
■ E-business
图5-8表文件结构图
5.3.1身份验证模块的实现
1、表示实现
此模块是内容管理系统的入口,其功能就是实现身份信息的逻辑验证。用于实现表示的文件
如表5-1所示:
表5-1身份验证模块表示实现的文件
序号 名称 功能
1 admin_Iogin.jsp 实现Web显示,提供系统入口
2 login.jsp 实现身份验证,对用户名和密码进行验证
3 default.jsp 系统管理平台首页
其Web表示的实现如图5-9所示:
如果用户输入正确的用户名和密码,则可以进入内容管理系统进行管理;如果用户名和密码 不正确,则系统会提示验证出错,重新登陆。
2、业务逻辑实现
实现逻辑验证的类和方法如表5-2所示:
表5-2身份验证模块逻辑实现的文件
序号 类名称 方法名称 功能
1 NEWSAdmin getUserName() 取得用户名信息
2 NEWSAdmin getPassword() 取得密码信息
3 ISLogin isUsemameOk() 判断用户名正确与否
4 IS Login isPasswordOk() 判断密码正确与否
5 ISLogin upTimeAndIp() 更新最后登陆时间和IP
6 SessionManager responseUrl() 实现文件调用
3、调用关系
图5-10登陆模块文件调用关系
如图5-10所示,其验证流程顺序如下:
•管理用户登陆,输入用户名和密码
•调用逻辑验证ISLogin类
•ISLogin类调用NEWSAdmin类取得用户名和密码数据信息
•ISLogin类与连接数据库的类通信,进行信息验证
•验证结果信息传回login, jsp文件
•如果是管理用户,则调用default, jsp进入管理系统,否则报错,返回登陆页面
5. 3.2类别管理模块的实现
53.2.1栏目管理的实现
1、表示的实现
用于表示的文件如表5-3:
表5-3类别管理模块表示实现的文件
序号 名称 功能
1 column.jsp 实现添加新栏目的Web显示
2 editcolumn.jsp 编辑、修改栏目信息
3 delcolumn.jsp 删除不需要的栏目信息
4 check.jsp session信息管理
创建新栏目和ID的功能实现如图5-11
图5-11创建新栏目名称和ID
在图5-11中填入栏目的ID号和栏目名称,点击提交即可完成新栏目的创建。其中ID号是 阿拉伯数字,如1、4、88等,栏目名称可以取系统需要的栏目,本系统新闻中用到的栏目名称, 比如栏目名称有国内新闻、农机新闻等。
图5-12编辑修改和删除功能
如图5-12所示,点击编辑和删除的图标即可进行相应栏目的编辑修改和删除操作。
2、逻辑的实现
用于实现逻辑的类和Beans的名称和功能如表5-4:
表54类别管理模块逻辑实现文件
序号 类或Beans 方法名称 功能
1 NEWSClass getClassId()、getContent()x
setClassId()x setContent() 设置和取得栏目ID和名称
2 Column InsColumn()、del Column ()等共 8 个方
法 此类用于添加、修改和删除
栏目信息
3、调用关系
图5-13栏目管理文件关系图
5.3.2.2类别管理的实现
1、表示的实现
用于表示的文件如表5-5所示:
表5-5二级分类表示实现的文件
序号 名称 功能
1 kind.jsp 实现添加新类别的Web显示
2 editkind.jsp 编辑、修改类别信息
3 del kind.jsp 删除不需要的类别信息
4 check.jsp session信息管理
创建新类别的功能如图5-14所示:
图5-14类别创建
如图5-14所示,在创建新类别时,首先要选择新类别的所属栏目,然后才能输入新类别的名 称,在添加类别后面的文本框中输入要创建的类别后,点击“添加”按钮即可完成新类别的创建。
图5-15是已经创建的所有类别信息,如果想修改类别名称,可以点击图上的编辑图标,进行 相应类别名称的修改,如图5-16所示:
图5-16类别的修改
在编辑修改时,可以重新选择栏目,然后输入该后的类别名称,点击“更新”按钮即可完成 类别的修改。
2、逻辑的实现
用于实现逻辑的类和Beans的名称和功能如表5-6所示:
表5-6二级分类逻辑实现的文件
序号 类或Beans 方法名称 功能
1 NEWSKind getClassId()> getContent()^ setClass!d()> setContentQ^ getK.indId()> setK.indId() 设置和取得栏目和类别的
ID、名称
2 Kind getKind()、delKind()等共 7 个方法 此类用于添加、修改和删除
类别信息
3、调用关系
5. 3.3用户管理模块的实现
1、表示的实现
用户管理模块有两个主要功能,一个是个人信息的管理,一个是系统用户(管理员)的管理, 用于表示实现的文件如表5-7所示:
表5-7用户管理模块表示实现的文件
序号 名称 功能 1
1 editadmin.jsp 个人信息管理,主要是密码维护
2 man ager.jsp 管理员信息管理,主要是添加和删除
3 deladmin.jsp 删除管理员信息
个人信息管理的功能实现如图5-18所示:
用户名: adiTiin
原始密码:
新密码:
重复-遍:dBHHM
用户等级: 系统管理员
1更新资料|
图5-18个人信息管理
如图所示,主要是针对密码的修改。基于安全的考虑,在修改的时候要输入原来的密码,然 后输入两遍新密码,点击“更新资料”按钮即可。
管理员信息管理功能实现如图5-19所示:
如果想修改某一管理员,则先删除要修改的管理员,再重新添加即可。
2、逻辑实现
用于实现逻辑的类和Beans的名称和功能如表5-8所示:
表5-8用户管理模块逻辑实现的文件
序号 类或Beans 方法名称 功能
1 NEWSAdmin getAdminName() 取得管理员用户名
2 NEWSAdmin getAdminPassword() 取得管理员密码
3 NEWSAdmin setAdminName() 设置管理员用户名
4 NEWSAdmin setAdminPassword() 设置管理员密码
5 Usr listUser()等共14个方法 此类用于添加、修改和删除用户信息
3、调用关系
表示层 逻辑层 数据层
图5-20用户管理模块文件调用关系图
5. 3.4新闻管理模块的实现
新闻管理模块是系统的一个重要模块,也是逻辑实现复杂的一个模块。
1、表示实现
此模块表示实现的JSP文件名和功能列表如下:
表5-9新闻管理模块表示实现的文件
序号 名称 功能
news.jsp 添加新闻属性信息页面
2 newsCheck.jsp 添加新闻检查页面,起到验证的功能
3 insert.jsp 把新闻信息存入数据库
4 newslist.jsp 列出所有新闻信息
5 search.jsp 实现新闻查找功能
6 editNews.jsp 对已经存在的新闻提供编辑修改功能
7 editN ewsCheck.j sp 实现对编辑修改后的文章进行检査
8 updateNews.jsp 完成编辑修改后的文章的更新
9 delNews.jsp 删除一条新闻内容
10 check.jsp Session信息管理
添加新闻属性信息的页面如图5-21所示:
图5-21添加新闻
如图,带*号为必填项,包括文章类型、文章标题、内容、作者、编辑、出处;其它项不做 要求,支持最多2张图片上传的功能,并对图片在新闻中的显示方式做了三种选择;相关文章选 项可以输入相关文章的题目。
填入新闻内容完毕后,点击“提交”按钮,调用检查页面进行内容核查,如果无误,进行插 入数据库,添加完毕。
图5-22新闻列表
图5-22是部分新闻信息的一个列表,点击某一文章题目可以查看其在前台页面显示的效果; 点击删除下面的图标可以对具体某一篇文章进行删除操作;点击编辑下面的图标可以进入文章的 编辑修改页面,进行修改,这里以第一篇新闻为例进行编辑修改,其修改页面如图5・23所示:
栏目:国內新闻 y 类茅j:国内新闻 育i戢暮产销御疝漁題節務苕弃’'
为了充分展示“中国马铃蓉之乡”风貌,进一步开拓广阔的国际国内市场,使定西马铃薯 '进一步走向全国、走向世界,由定西市政府主办、定西市安定区政府承办的“中国?定西首 届马铃薯产销街接洽谈会”将干2004年9月130714日在定西市隆重召开。
Y 位于甘肃省中部的定西市是中国马铃薯三大主产区之一,享有“中国马恰薯之乡” Z
「称。近年来,定西市委、市政府顺应天时、顺应市场,积极发挥比较优势,大力发展马铃 薯产业,逐步形成了种植、加工、销售.科研一体化的发展格局,定西已经成为全国重宴 的马糕薯生产、加工、销售基地。2004年全市马铃薯种植面积达到350万亩,总产量达500 「多万吨,并形成了新大坪系列、渭薯系列、陇薯系列、专用蓉系列等30多个品种和精淀 粉、粉皮、蓉格、蓉丸、薯条、萼泥等十多种产品,产品远销华北、华中、华东、华南筹 *国内市场及新加坡、日本、菲律宾,香港等国家和地区。
辭福_„ z蛙浮 $::《世界商业评论》ICXO. COM >診 網1iMmmwmmmmrniwimuwiWM———————M—W—MMBWi
图5-23新闻的编辑修改
如图5-23,可以对新闻的任何属性信息进行修改,包括图片的修改,修改完毕点击“更新” 按钮即可。
在对图片进行修改时,如原来有图片,则要选中“删除”后,在添加新图片。
2、逻辑实现
用于实现逻辑的类和Beans的名称和功能如表5-10所示:
表5“0新闻管理模块逻辑实现的文件
序号 类或Beans 功能
1 SessionManager Session信息管理
2 DOServlet 文件调度和转发
3 NEWSTable 存取新闻信息
4 upBean 上传图片文件
5 News 新闻信息的维护和管理
6 Paginatio n 分页功能实现
7 Kind 分类信息维护
8 Column 栏目信息维护
9 NewsShow 新闻信息的显示
3、调用关系
newslist.jsp
5. 3. 5商务信息模块的实现
商务信息模块主要功能是对前台用户发布的商务信息进行审批管理,以及对前台注册用户的 管理。
1、表示实现:
用于表示实现的JSP文件如表5-11所示:
表5-11商务信息模块表示实现的文件
序号 名称 功能
1 waitCheckjsp 显示待审信息,进行管理
2 lookup In fo.jsp 查看待审信息的详细内容
3 admire.jsp 审核批准待审信息,可以在前台显示
4 delWaitjsp 删除待审信息
5 register.jsp 显示前台注册用户,进行管理
6 lookup Register.jsp 查看注册用户详细信息
7 del Register.jsp 删除注册用户信息
其中,管理待审信息的功能实现如图5-25:
信息題目(加入时间) 审批
岀售炸油机 批准
图5-25待审信息管理
如图5-25,是一条“购买联合收割机”的待审信息,点击信息题目名称进行信息详情的查看, 如果信息合理正确,则可以点击“审批”字样批准;如果信息是错误的,则可以点击“删除”字 样把这条信息删除。
出售炸油瓠
信念发布时何:2005-06-04
联系人:溢曉
电话:
内容:本公司有闲置炸油机一台,性能良好,预出售,请有意者电话联系
公司名称:慈京李良农产品力0X脣陶公同
地址:北京币审台区
邮編:1G0043
传真:
阿址:无
Email : 11 li an或s:扣丄.c
信息类型:出铸信厲
关闭窗口
版权所有:中国农业机械装备网
图5-26待审商务信息详细内容
2、逻辑实现
用于实现逻辑的类和Beans的名称和功能如表5-12所示:
表5・12商务信息逻辑实现的文件
序号 类或Beans 功能
1 Pagination 实现分页功能
2 Waitinglnfo 取出所有待审信息和具体内容信息
3 RegisterUser 对注册用户信息进行管理
3、调用关系
5. 4关键技术
5.4.1数据库优化技术
对于农业机械装备网内容管理系统这种需要频繁的访问数据库的系统而言,频繁的创建、关 闭连接会极大的降低系统的性能,成为系统的瓶颈。
为了有效地解决这个问题,我们引入了连接池的概念。连接池是数据访问中的重要技术,在 某些情况下对访问数据库的性能有巨大的提高。它的核心思想是连接复用,通过建立一个数据库 连接池以及一套连接使用、分配、管理策略,使得一个数据库连接可以得到高效、安全的复用, 避免了数据库连接频繁建立、关闭的开销。连接池对JDBC中的原始连接进行了封装,从而方 便了数据库应用对于连接的使用,提高了开发效率,也正是因为这个封装层的存在,隔离了应用 的本身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成为可能。
本系统中实现的数据库连接池大大减轻了数据库服务器的负担,保证了系统的稳定、快速的 响应。
5. 4. 2组件技术
组件技术是指用可重用的组件来构造应用程序。软件的组件化不需要代码的重新编译和连 接,而是直接将组件作为功能模块在二进制代码级用于软件指纹的装配。近几年来,组件在基于 WEB应用开发中得到了广泛应用,应用组件技术可以明显提高系统的开发质量,极大的增强软 件的重用能力,同时也使得程序的后期维护变得极其方便。
JavaBean是基于Java的组件标准,具有可重用、与平台无关、可移植、兼容性、可扩展、 创建和使用方便的特点。JavaBean组件可以在任何环境和平台上使用,满足各种交互式平台的需 求,也可以在其它程序、组件、WEB应用中重用。
在内容管理系统中,通过JavaBean与JSP的结合,极大的扩展了程序的功能:将应用逻辑 封装到JavaBean中,使得用户界面与应用逻辑完全分离,能够更加方便的扩展应用逻辑,更加 灵活的使用数据库;JavaBean组件的重用提高了开发的效率和质量,同时使维护也更加方便。
5.4.3安全技术
1、 网络安全
防火墙是企业网站安全的第一道防线,可以制定防火墙策略,封闭不必要的服务端口,进行 用户认证等。采用IP地址翻译NAT(Network Address Translation),屏蔽网站内部服务器的地址, 可有效防止黑客攻击。
2、 系统安全
对操作系统与数据库及时升级,安装最新的补丁,有利于填补安全漏洞。关闭系统中不必要 的服务与端口,例如所有的R命令、Finger、talk、Ftp、Telnet等。对于维护网站所必须的Ftp 与Telnet功能,安装SSH,以代替Ftp与Telnet。
3、 用户安全
制定严格的账户管理规范,减少不必要的账户,对系统中既有用户严格依照密码规则管理。 4^系统备份
添加必要的备份设备与备份软件,制定备份策略,由系统定时将关键数据进行备份,一旦系 统被黑客攻破,数据被破坏,可以在最短的时间内将系统恢复,减少损失。
第六章总结与展望
6.1总结
本文的设计思想是从实用和研究角度出发,分析了当前网站内容管理的现状,针对大多数系 统使用不方便、可移植性差、平台不独立、不安全因素,并结合农业机械装备网的项目需求,提 出了使用J2EE技术来实现一个基于B/S模式的内容管理系统,给出了农业机械装备网内容管 理系统的设计方案,包括需求分析、功能分析、系统结构图、网络拓扑结构图、系统详细设计等, 建立了系统的开发平台,包括数据库的选择、开发语言和工具的选择、服务器的运行环境等,最 后对系统各个模块的实现过程做了详细的说明,并对实现中使用的关键技术进行了总结。
6. 2进一步研究
内容管理系统是一个非常具有实用价值和发展前景的系统,国外的内容管理系统已经有成熟 的产品和技术,国内的产品只是刚刚起步,还有更多的东西需要去研究。从技术和应用角度来看 内容管理的未来发展,会有以下几个趋势:
•一是应用范围的继续拓展,主要表现为两种方向的“E”-CM:第一个“E”是Enterprise, 另一个“E”是E-business; 一方面从办公自动化以及某些局部应用拓展到整个企业, 另一方面电子商务交易中对整个内容价值链的管理。
•二是和业务应用更加紧密结合,应用集成将成为内容管理解决方案所必须要考虑的问 题,因为内容管理最终还是要服务于具体的业务过程。
•三是技术应用的进一步深化,目前的内容管理解决方案具备了检索、工作流、版本控制 等基本功能,处理的智能性尚还不高;文档自动分类技术、文本挖掘、Web挖掘、portal 等技术也有了一定的应用,以后还会发展出更智能化的内容处理技术,如语义分析、自 然语言理解、智能代理等。
•四是和知识管理趋向融合,并最终成为知识管理解决方案的组成部分,这主要归因于内 容管理的很多功能和知识管理相比并不具备独特性。而且在目前内容管理和知识管理各 自的应用中,也没有显示出太多的差异性,这其中一个原因是因为知识管理尚处于初步 阶段,更多强调地恰恰是内容管理的功能。
本系统还需要有以下改进:
1、 整个系统力求真正做到不懂任何IT专业知识的人士,能够完成所有的工作,目前还达 不到这种程度,必须先由一定的专业人士利用此系统搭建初步的网站,但在维护和发布上做到了 真正的简单易用。
2、 提高系统的集成度,达到接口灵活、标准化程度高,方便不同厂家的产品集成,该类产 品一般包括:用户管理系统、资源管理、邮件系统、信息分类搜索管理、访问流量统计、个性化 管理等。在该系统中,虽然在部分功能都已经融入其中,但是要真正完全集成其它的系统,还要 不断的提供接口。
3、 进一步提髙系统的缓存机制,由于一个动态页面的速度往往会比静态页面慢2-10倍, 因此访问速度很快成为一个瓶颈。除了优化内容发布系统的应用本身外,如果能把更新频率比较 低的动态页面转存成静态网页来发布,速度上的提升效果将是显著的,而静态网页如果能被缓存 在内存里,访问速度更会比原有动态网页有2-3个数量级的提高。
4、 XML语言有着良好的数据存储格式、可扩展性、高度结构化、便于网络传输的优点, XML能够使不同来源的结构化的数据很容易的结合在一起,而且XML把数据和显示分开,能 够在结构数据中嵌套程序化的描述以表明如何显示数据,如果要提高本系统的平台无关性,势必 要加强XML技术的应用。
农业机械装备网内容管理系统虽然在一定程序上满足了项目的建设要求和维护网站的需要, 但是由于开发的周期和技术的限制,还存在着种种问题,有待进一步的研究和开发。
参考文献
[1]Allamaraju S> BuestC、Davies J,等著.J2EE编程指南(1.3版).马树奇 译.北京:电子工
业岀版社,2002. '
[2](美)Bruce Eckel著.Java编程思想.侯捷译.北京:机械工业出版社,2002.
[3]飞思科技产品研发中心编著.JSP应用开发详解(第二版).北京:电子工业出版社,2004.
[4]赵强、乔新亮编著.J2EE应用开发.北京:电子工业出版社,2004.
[5]王宏 编著.SQL Server 2000数据库管理.北京:人民邮电出版社,2000.
[6](美)ChanP、Lee R、Kramer D,等著.Java 2类库.赵皑、黄志军、阳亮,等译.北京: 机械工业岀版社,2001.
[7]郑人杰、殷人昆、陶永雷,等著.实用软件工程(第二版).北京:清华大学出版社,1997.
[8](美)Roman Ed著.精通EJB (第二版).刘晓华 译.北京:电子工业出版社,2002.
[9]龚俭、陆晟、王倩,等著.计算机网络安全导论.南京:东南大学出版社,2000.
[10]刘超、张莉著.可视化面向对象建模技术.北京:北京航空航天大学出版社,1999.
[11](美)BuddT著.面向对象JAVA编程思想.三联四方工作室译.北京:清华大学出版社, 2002.
[12]王能斌著.数据库系统原理.北京:电子工业岀版社,2000.
[13]萨师煩、王珊著.数据库系统概论(第三版).北京:高等教育出版社,2000.
[14](美)SchildtH著.Java2参考大全.张玉清、吴溥峰、尚勇,等译.北京:清华大学出版 社,2002.
[15]Andrews. Tanenbaum著.计算机网络(第3版).熊桂喜、王小虎译.北京:清华大学出 版社,1998.
[16]林胜利、王坤茹、孟海利.JAVA优化编程.北京:电子工业岀版社,2005.
[17]耿祥义、张跃平.JAVA2实用教程(第二版)实验指导与习题解答.北京:清华大学出版社, 2005.
[18]孙印杰、刘斌、孙玉强.JAVA编程案例精解.北京:电子工业出版社,2005.
[19]王梦丽、张利平、杜慰纯著•信息检索与网络应用.北京:北京航空航天大学出版社,2001.
[20]张卫云.基于Web的内容管理系统研究与开发:[硕士学位论文]•北京:华北电力大学,2004.
[21]李国柱.基于内容管理的Web信息发布系统的设计与实现:[硕士学位论文].苏州:苏州大 学,2004.
[22]金国藩、龚炳铮、刘津西,等.计算机及其网络的应用与发展(第四册).北京:电子工业 出版社,1999.
[23]Douglas E. Comer、David L. Stevens著.用TCP/IP进行网际互联(第三卷:客户-服务器编 程与应用Linux/POSIX套接字版).赵刚、林瑶、蒋慧等译.北京:电子工业出版社,2001.
[24]邓正宏、薛静、郑玉山.面向对象技术.北京:国防工业出版社,2004.
[25]刘勇 周学军.SQL SERVER 2000基础教程.北京:清华大学岀版社,2005.
[26]胡百敬.MICROSOFT SQL SERVER性能调校.北京:电子工业出版社,2005.
[27](美)Xiaoping Jia著.JAVA面向对象程序设计教程(第2版).杨茂江译.北京:清华大学 出版社,2004.
[28](德)Bemd Oestereich著.软件开发方式:UML面向对象分析与设计(第二版).姜南、周志 荣 译.北京:电子工业岀版社,2004.
[29]刘建生、廖列法、吴南萍著.JAVA与面向对象程序设计导论.北京:北京希望电子出版社, 2004.
[30]Barry Stinson. PostgreSQL Essential Reference. New Riders Publishing, 2002.
[31]Marco Pistoia、Duane F. Reller> Deepak Gupta» etal・ Java 2 Network Security・ California: International Business Machines Corporation, 1999 ・
[32]Pratik Patel ・ Java Database Programming with JDBC ・ Publisher: The Coriolis Group» 1996.
[33]Elliotte Rusty Harold. Java Network Programming (2nd Ed). Sebastopol: O'Reilly & Associates, Inc, 2000.
[34]Sinan Si Alhir. Learning UML. Sebastopol: O'Reilly & Associates, Inc» 2003 •
[35]Robert Englander. Java and SOAP・ Sebastopol: OReilly & Associates, Inc, 2002.
[36]Indeijeet Singh、Beth Steams、Mark Johnson etc. Designing Enterprise Applications with the J2EETM Platform (Second Edition)・ Sun Microsystems, Inc» 2002.
[37]Brell Mclaughlin. JAVA and XML. Sebastopol: O'Reilly & Associates, Inc. 2000.
[38]Gerald Carter. LDAP System Administration・ Sebastopol: O'Reilly & Associates, Inc, 2003 •
[39]Craig Hunt. TCP/IP Network Administration, 3rd Edition. Sebastopol: O'Reilly & Associates, Inc» 2002.
[40]Avinash Chugh Jon Mountjoy. WebLogic: The Definitive Guide ・ Sebastopol: O'Reilly & Associates, Inc, 2002 ・
[41]Larry Ullman・ PHP for the World Wide Web: Visual QuickStart Guide. Peachpit Press. 2001.
[42]Ashok Appu. Administering and Securing the Apache Server・ Cincinnati: Premier Press, a division of Course Technology» 2002 ・
[43]Amit Bakore、Debashish Bhattachaijee、Sandip Bhattacharya,et al • Professional Apache Tomcat. Indianapolis: Wiley Publishing, Inc» 2003・
[44]Mark Artiges > Gupreet Singh Bhasin Bernard Ciconte,et al ・ BEA WebLogic Server 8.1 Unleashed, the United States of America: Sams Publishing. 2004・
[45]James Turner. MySQL and JSP Web Applications: Data-Driven Programming Using Tomcat and MySQL, the United States of America: Sams Publishing. 2003.
[46]Martina Brockmann、Katrin Kirchner、Sebastian Luhnsdorf^et al. Zope Web Application Construction Kit. the United States of America: Sams Publishing* 2001.
[47]Mark Wutka、Alan Moffett Kunal Mittal Sams. Teach Yourself JavaServer Pages 2.0 with Apache Tomcat in 24 Hours ・ the United States of America: Sams Publishing, 2003.
[48]Ron Hitchens. JavaNIO. Publisher: O'Reilly, 2002.
[49]Todd M. Thomas・ Java Data Access—JDBC, JNDI, and JAXP. M&T Books・ New York, 2002.
[50]Shyam Kumar Doddavula・ Clustering with Tomcat. O'Reilly Network* 2002.
[51 ] Hans Bergsten ・ JavaServer Page (2nd Edition)・ Publisher: OKeilly, 2002.
[52]Jonathan Knudsen^ Pat Niemeyer・ Learning Java (2nd Edition). Publisher: OrReilly, 2002.
[53]Joe ZufFoletto> Gary Wells、Brian Gill,et al・ BEA WebLogic Server Bible. New York: Hungry Minds, Inc» 2002.