




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP程序设计教学第1页/共67页第2页/共67页4.2JDBCAPI
JDBCAPI是Java平台提供的一个标准的数据库访问接口集,是支持数据库操作的类与方法的集合,利用它开发人员在编写应用程序时不必考虑所用的数据库。JDBCAPI包括java.sql和javax.sql两个包。java.sql包包含了JDBC的核心API;而javax.sql包则包含了JDBC标准的扩展API。JDBCAPI提供了以下基本功能:(1)建立与数据源的连接。(2)向数据源发送查询和更新语句。(3)处理从数据源得到的结果。实现上述功能的JDBCAPI的核心类和接口均定义在java.sql包中。熟练掌握这些类和接口的使用方法,是JDBC程序设计的基础,也是构建更复杂、更高级的应用程序的必要条件。第3页/共67页4.2.1管理驱动程序类DriverManagerDriverManager类是JDBC的管理层,作用于用户和数据库驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序登录时间限制,以及登录和跟踪消息的显示等事务。DriverManager类中常用的方法如下表所示。第4页/共67页4.2.2数据库连接类ConnectionConnection对象代表与数据源进行的唯一对话。Connection类提供了进行事务处理、创建执行SQL语句和创建存储过程所用对象的方法。同时,Connection类还提供了一些基本的错误处理方法。Connection类的实例可以通过DriverManager.getConnection()或DataSoure.getConnection()方法创建。java.sql.Connection类提供的常用方法如下表所示。第5页/共67页第6页/共67页4.2.3SQL声明类StatementStatement类用于将SQL语句发送到数据库中。实际上有三种Statement类:Statement、PreparedStatement和CallableStatement,它们都专用于发送特定类型的SQL语句。其中,Statement用于执行不带参数的简单SQL语句。Statement对象用Connection的createStatement方法创建,具体格式如下:Statementstmt=conn.createStatement();第7页/共67页4.2.4PreparedStatement类由上一节可知,Statement类使用SQL语句直接处理查询。在执行过程中,Statement类把SQL语句提交给数据库,数据库分析执行SQL语句,然后将执行结果返回给用户。值得注意的是,使用Statement类,即使重复执行同一查询,SQL语句也要由数据库再次格式化;尤其是当SQL语句中包含where子句时,每一次查询都需要数据库解析、优化,然后才能返回执行结果。因此,使用Statement类将会在很大程度上影响重复数据查询的执行效率。为了提高查询效率,对于同一个查询语句,JDBCAPI提供了PreparedStatement类来优化这一过程。PreparedStatement是Statement的扩展,代表了一条预设SQL语句。预设语句是指预先将SQL语句传送给数据库,并在数据库中被编译、优化并缓存。也就是说,使用PreparedStatement类,SQL语句不需要在每次执行时都由数据库重新编译和优化,而仅需编译和优化一次,这就提高了执行查询的效率和性能。另外,已编译的SQL语句可以指定输入参数,用于定制特殊SQL语句的执行效果。输入参数可以是select或者update语句中的where子句中的值,也可以是insert语句中的values子句中的值。使用预设语句时,PreparedStatement将SQL语句及其参数提交给数据库,由数据库对这些语句进行预处理。第8页/共67页4.2.5查询结果类ResultSet一旦建立了数据库连接并执行了SQL语句,就可以从Statement实例中获取一个以ResultSet表示的结果集。ResultSet类封装了执行SQL查询所得到的数据行或元组。ResultSet类提供了一系列的方法,用于在返回的结果集中自由移动指针,以加强应用程序的灵活性并提高访问数据的效率,这些方法如下表所示。第9页/共67页4.2.2文本的编辑第10页/共67页4.2.6数据库操作异常类SQLException基本上所有JDBCAPI的方法都会抛出SQLException异常。这个异常类继承了java.lang.Exception接口,并通过重写的getMessage()方法获取产生异常的原因和所生成异常的相关信息。SQLException类的构造方法包含了一个字符串,这是数据库服务器或JDBC驱动程序根据SQL状态给出的异常产生原因。SQL状态是一个标准化的字符串,包含了产生异常的SQL处理状态,以及与数据库厂商相关的错误码(一个整数)。SQLException类提供的构造方法如下:(1)SQLException():创建一个新的SQLException,将产生异常的原因、SQL处理状态以及厂商错误码的值设为NULL。(2)SQLException(Stringreason):创建一个新的SQLException,设置产生异常的原因,并将SQL处理状态以及厂商错误码的值都设为NULL。(3)SQLException(Stringreason,StringSQLState):创建一个新的SQLException,设置产生异常的原因和SQL处理状态,并将厂商错误码的值都设为NULL。(4)SQLException(Stringreason,StringSQLState,intvendorCode):创建一个新的SQLException,并设置产生异常的原因、SQL处理状态以及厂商错误码的值。第11页/共67页此外,SQLException类提供了如下方法,以实现被抛出异常的内部数据的访问:(1)intgetErrorCode():返回异常的厂商错误码。(2)SQLExceptiongetNextException():如果还有异常,则检索异常链中的下一个异常。(3)StringsetNextException(SQLExceptione):设置当前对象的异常链中的下一个异常。注意:由于大部分JDBC方法都会抛出SQLException异常,因此,在应用程序中,必须捕捉异常对象,并进行适当的处理,然后把错误码返回给调用者。此外,在程序运行结束时,必须使用finally语句块关闭Connection对象,而不管是否产生了SQLException异常。第12页/共67页4.3JDBC驱动程序的类型通常,当数据库厂商推出自己的数据库产品时,都会提供一套访问数据库的API,这些API能以各种编程语言的形式提供,客户端程序通过调用这些专有的API来访问数据库。各个厂商提供的数据库访问API不尽相同,导致构建在某一个特定数据库上的应用程序不能移植到另一个数据库上。JDBC以Java类库的形式取代数据库厂商的专有API,客户端只需要调用JDBCAPI,而处理与数据库通信的具体操作由JDBC的实现层(即JDBC驱动程序)完成,从而降低了应用程序与数据库之间的耦合度。第13页/共67页JDBC驱动程序分为以下四类:(1)JDBC-ODBC桥。(2)Java到本地API。(3)JDBC网络纯Java驱动程序。(4)本地协议纯Java驱动程序。第14页/共67页4.3.1JDBC-ODBC桥连接因为Microsoft推出的ODBC比JDBC出现的时间要早,所以绝大多数的数据库都可以通过ODBC来访问,当Sun公司推出JDBC的时候,为了支持更多的数据库,特意提供了JDBCODBC桥。JDBCODBC桥本身也是一个驱动,利用这个驱动,用户可以使用JDBCAPI通过ODBC去访问数据库。这种桥机制实际上是把标准的JDBC调用转换成相应的ODBC调用,并通过ODBC把数据库调用发送给ODBC数据源,其原理如下图所示。第15页/共67页第16页/共67页由图可以看出,通过JDBC-ODBC桥的方式访问数据库需要经过多层的调用,因此,利用JDBC-ODBC桥访问数据库的效率比较低。然而,当数据库没有提供JDBC驱动,只有ODBC驱动的情况下,也只能利用JDBC-ODBC桥的方式访问数据库,例如,在访问Access数据库时,就只能使用JDBC-ODBC桥来访问。第17页/共67页4.3.2Java到本地API大部分数据库厂商都提供与他们的数据库产品进行通信所需要的调用API,这些API往往用C语言或类似的语言编写,依赖于具体的平台。此类型的JDBC驱动程序使用Java语言编写,并能够调用数据库厂商提供的本地API。此时,利用JDBCAPI访问数据库时,JDBC驱动程序将数据库调用请求转换为厂商提供的本地API调用,数据库处理请求,然后将处理结果通过这些API返回,进而返回给JDBC驱动程序,最后,JDBC驱动程序将结果转化为JDBC标准形式,再返回给客户程序。其原理如下图所示。第18页/共67页第19页/共67页从图中可以看到,通过这种类型的JDBC驱动程序访问数据库时,减少了ODBC的调用环节,提高了数据库访问的效率,并且能够充分利用厂商提供的本地API功能。但是,在这种访问方式下,需要在客户的机器上安装本地JDBC驱动程序和特定厂商的本地API。第20页/共67页4.3.3JDBC网络纯Java驱动程序这种驱动利用作为中间件的应用服务器来访问数据库。应用服务器作为一个或多个数据库的网关,客户端通过它可以连接到不同的数据库服务器。应用服务器通常都有自己的网络协议,Java程序通过JDBC驱动程序将JDBC调用发送给应用服务器,应用服务器使用本地驱动程序访问数据库,从而完成请求。其原理如下图所示。第21页/共67页第22页/共67页使用这类驱动程序的优点是可以直接通过JDBC访问网络数据库,不需要安装驱动程序,程序与平台无关,不仅可以用在一个第三方的解决方案中,而且可以在Internet上使用。第23页/共67页4.3.4本地协议纯Java驱动程序这种类型的JDBC驱动程序完全用Java语言编写,通过与数据库直接连接的套接字进行通信,它采用厂商相关的网络协议把JDBCAPI调用转换为直接的网络调用(如OraclethinJDBCdriver)。其原理如下图所示。第24页/共67页
第25页/共67页这种类型的驱动是四种类型驱动中访问数据库效率最高的,不过,由于每个数据库厂商(Oracle,Microsoft,Sybase等)都为自己的数据库产品提供了这种类型的驱动,因此,访问不同的数据库时,需要使用不同的JDBC驱动程序。在本章第4节中,将使用此类型的驱动程序操作数据库。第26页/共67页本章小结本章主要学习了关系型数据库中SQL语言的基本功能和使用方式,以及JDBCAPI的核心接口和常用方法。在此基础上,用JSP和数据访问对象实现了一个较为完整的数据显示Web应用程序。其中,SQL语言是操作关系数据库的标准语言。尽管SQL语言结构简单,但功能非常强大,可以完成数据库整个生命周期的管理和数据访问操作。JDBC提供了Java程序访问关系数据库的方法。在JDBC中,定义了一系列的接口,如Connection接口、Statement接口和ResultSet接口等,通过这些接口,用户可以方便地与数据库交互,构建更复杂、更高级、更易用的应用程序。第27页/共67页第5章JavaBean技术第28页/共67页此前介绍的JSP页面中混合了HTML代码和Java代码,页面的显示逻辑和业务逻辑混杂在一起,代码的可读性差,维护难度高。为了分离页面中的HTML代码和Java代码,一个很自然的想法就是单独编写一个类来封装页面的业务逻辑。在页面中,只需简单地编写几句调用类中方法的代码,即可完成所需的功能。这种方式,不但提高了代码的复用率(多个页面可调用同一个类的方法),而且将页面的显示逻辑和业务逻辑也区分开了。在JSP技术中,负责完成业务逻辑的类可用JavaBean组件来实现。第29页/共67页5.1JavaBean概述JavaBean是描述Java的组件模型,类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以扩充Java的程序功能,通过JavaBean的组合还可以快速生成新的应用程序。对于程序员来说,使用JavaBean可以实现代码的重复利用,使得程序更易维护。JavaBean就是一个特殊的Java类,这个类必须符合JavaBean的规范。JavaBean原来是为了能够在一个集成开发环境中可视化、模块化地利用组件技术开发应用程序而设计的。虽然在JSP中不需要使用任何可视化的功能,但仍然需要利用JavaBean的属性、事件、持久化和用户化来实现模块化的功能。第30页/共67页5.1.1JavaBean特性
下面介绍在JSP开发中经常用到的JavaBean规范的一部分,主要有属性特点、构造方法等。1.构造方法标准的JavaBean中一定要有一个不需要任何参数的构造函数,这个构造函数在使用<jsp:useBean>实例化JavaBean类时调用。如果JavaBean类中没有任何构造函数,系统会自动生成一个没有参数的构造函数。2.属性JavaBean中的属性都应该定义为私有的,这样这些属性就只能通过JavaBean内的方法访问或修改,从而较好地保护数据的完整性和封装性,也可以对数据加以约束。第31页/共67页5.1.2属性的类型JavaBean有简单(Simple)属性、索引(Index)属性、绑定(Bound)属性和约定(Constrained)属性四种类型的属性。1.简单属性简单属性表示伴随有一对get/set方法的变量。属性名和该属性相关的get/set方法名对应。2.索引属性索引属性表示一个数组值。使用该属性对应的set/get方法可获取数组中的数值,该属性也可一次设置或取得整个数组的值。第32页/共67页5.2使用JavaBean访问数据库本节通过讲解如何利用JavaBean连接并显示数据库表中的记录。在第4章已讲过连接SQLServer数据库的方法,现以SQLServer为例,将连接封装在JavaBean中,通过Bean来连接数据库,并访问数据库中的表。第33页/共67页5.2.1设计访问数据库的JavaBean首先编写连接数据库的JavaBean程序conn.java,数据库名为JspDataBase,用户名与密码已知,数据库JSP中已存在数据表student,主要存放关于学生学号、姓名和成绩的信息。在conn.java程序中,首先加载SQLServer驱动,语句如下:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");然后使用DriverManager对象的getConnection(dbURL,dbUser,dbPassword)方法建立连接,其中指定参数dbURL为“jdbc:microsoft:sqlserver://localhost;DatabaseName=JSP;SelectMethod=Cursor”,然后创建SQL语句对象。关于数据库连接程序第4章已有介绍,这里不再详述。第34页/共67页5.2.2在JSP中调用JavaBean访问数据库下面介绍一个具体实例来演示如何在JSP中调用访问数据库的JavaBean。实例详见教材117页。第35页/共67页5.3综合案例JavaBean具体的实施部署步骤如下:首先建立Web项目,将编好的JavaBean代码放入项目文件夹中的WEB-INF\\classes文件夹下(注意需要为JavaBean指定一个包名),然后就可在项目中的JSP文件中调用JavaBean了。以下是两个具体的实例。第36页/共67页5.3.1用户注册的JavaBean本节中,将通过一个简单的例子演示如何在JSP页面中访问JavaBean。首先提供一个注册表单,让用户输入相关的信息,在用户提交表单后,将用户的注册信息保存到JavaBean对象中,然后在另一个页面通过读取JavaBean的属性来获得用户的注册信息。
第37页/共67页5.3.2动态日历本节主要讲解如何使用JavaBean实现一个能根据年、月进行查找的日历程序。本例具体步骤详见教材126页。第38页/共67页本章小结本章主要介绍了JavaBean的基本知识。利用JavaBean组件来封装业务逻辑,可以避免在HTML中嵌入大量的Java代码,使得页面的显示和业务逻辑分离,提高了代码的可维护性。通过JavaBean实现数据库连接及事物处理过程,可有效地将静态、动态工作分离开来,减少代码量,增强代码可读性并能极大地提高效率。第39页/共67页第6章JSP与XML第40页/共67页随着Web的广泛运用,HTML的局限性逐渐显露出来。HTML缺乏扩展性,标记定义比较模糊,因此可能导致错误的蔓延。人们在开发Web应用时需要一种标准化的、具备高可扩展性并且结构严谨的新语言,由此诞生了XML。XML是W3C推出的一种标记语言,它组合了其前身语言SGML的强大功能和可扩展性,以及Web应用的简洁性。目前,XML已经成为计算机行业内最热门的技术,它获得了广泛的行业支持,并且由于不断加强XML标准,从而使XML可以跨越所有边界,实现真正独立、跨平台的数据传送格式。第41页/共67页6.1XML语法规则XML的全称是extensiblemarkuplanguage,意思是可扩展的标记语言,它是标准通用语言(standardgeneralizedmarkuplanguage,SGML)的一个子集。XML的语法规则既简单又严格,非常容易学习和使用。正因为如此,编写读取和操作XML文档的软件也是相对容易的事情。首先来看一个XML文档(CH6-1.xml)的例子。XML文档使用了自描述和简单的语法。<?xmlversion="1.0"encoding="gb2312"?><JSP程序设计><作者>古乐声</作者><出版社>国防科技大学</出版社><题材>计算机</题材></JSP程序设计>第42页/共67页代码的第1行是XML声明,并且定义XML的版本,目前发布的是1.0版本,使用gb2312字符集;代码的第2行是这段代码内容的根元素,类似文章的标题,是XML文档所必须声明的元素;代码的第3~5行是根元素的子元素,在这里有3个子元素(作者、出版社、题材);最后一行的代码则定义了根元素的结束,至此一段完整的XML代码就算完成了。从上面的例子可以看出,所有的元素都要有闭合标记,这并非是一个巧合,而是XML语法规则定义的。第43页/共67页1.元素必须有闭合标记2.XML标记都是大小写敏感的3.在XML中必须正确嵌套4.所有XML文档必须有且只能有一个根元素5.XML文档元素的属性值必须使用引号6.XML文档中的空白将被保留第44页/共67页6.2XML文档结构一个XML文档从逻辑上可以分为五个部分:XML声明、文档类型声明、元素、注释、处理指令。第45页/共67页6.2.1XML声明XML数据文件的定义不像HTML那样自由,它是非常严格的。XML文档总是从一个XML声明开始,在其中指明所有的XML版本和文档编码等信息。下面是一个完整的XML声明:<?xmlversion="1.0"standalone="yes"encoding="gb2312"?>XML文件的声明必须存在而且放在第一行,否则解析器不予解析。声明的作用是告诉浏览器或者其他处理程序这个文档是XML文档。声明语句中的“version”表示文档遵守的XML规范的版本,它必须在属性列表中第一个出现;“standalone”表示文档是否是独立的,如果不带附带DTD(DocumentTypeDefinition,文档类型定义)文件,则将该参数设置为yes,如果附带有DTD文档,则将该参数设置no;“encoding”表示文档所用的语言编码,默认是UTF-8。第46页/共67页6.2.2文档类型声明在一个XML文档中,用户可以任意定制标签,但是当将XML文档提交给其他人使用时,那么文档一定要有相应的DTD文件,并且要严格遵守DTD文件制定的规范。XML从SGML继承了用于定义语法规则的DTD机制,几乎所有的XML应用都是用DTD来定义的。HTML文件就是一个严格遵守DTD机制的文件,所以其组织结构和所有的标签都是固定的。DTD文件也是一个文本文档,通常用“.dtd”作为其扩展名。通过文档类型声明,指出XML文档所使用的DTD,DTD文件的声明语句紧跟在XML声明语句后面。文档类型声明有两种形式,一种是在一个外部的文件中声明DTD。格式如下:<!DOCTYPEtypeofdocSYSTEM/PUBLIC"dtdname">第47页/共67页6.2.3元素元素是XML文档的基本单元,基本XML文档必须包含一个或多个元素。一个XML文档必须包含根元素,并且只能包含一个根元素。一个元素的起始标签和结束标签的名字必须相匹配,并且标签名是大小写敏感的。所有以起始标签开始的元素都必须以与起始标签同名的结束标签作为结束,在起始和结束标签中间的文本是元素的内容,无内容的元素可以使用一种特殊的形式,即<名字/>。这里,“>”之前的斜线实际上代替了结束标签。元素名可以由字母、数字、连字符号、下划线、冒号以及句号组成。冒号用于划分命名空间。元素可以没有或者有一个或多个属性,属性名的命名规则同元素命名规则相同。其名字和值由“=”分隔,并且属性值必须在单引号或者双引号之间,如果要在属性值里面使用单引号或双引号,那么就必须使用反斜线来进行转义。第48页/共67页元素和属性的格式如下:<元素名属性名="属性值"><子元素>元素的数据</子元素></元素名>XML元素的内容可以包含子元素、字符数据、字符引用和预定义实体引用、CDATA段。第49页/共67页1.子元素子元素本身也是元素,被嵌套在上层元素之内。子元素是相对于父元素而言的,如果子元素还嵌套了其他元素,那么它同时也是父元素。2.字符数据在一个元素中,字符数据可以是不包括任何标记的起始定界符和CDATA段的结束定界符在内的任意字符串,就是说在元素的内容中,字符数据不能有和号(&)和小于号(<),也不能有字符串“]]>”。在CDATA段中,字符数据可以是不包括CDATA段的结束定界符在内的任意字符串。第50页/共67页3.字符引用和预定义实体引用在字符数据中,不能有和号(&)和小于号(<),因为未经处理的小于号(<)与和号(&)在XML文本中往往被解释为标记的起始界定符。在XML中,提供了五个预定义的实体引用,分别用于引用XML文档中的五个特殊字符,即小于号(<)、大于号(>)、双引号(")、单引号()、和号(&)。这五个特殊字符也可以通过字符引用的方式去引用。字符引用和预定义实体引用都是以一个和号(&)开始并以一个分号(;)结束的。如果用的是字符引用,需要在和号(&)之后加上井号(#),之后是所需字符的十进制代码或十六进制代码。如果用的是预定义实体引用,在和号(&)之后写上字符的助记符。第51页/共67页4.CDATA段CDATA段中包含的都是纯字符数据,在字符数据可以出现的任何地方都可以使用CDATA段。CDATA段主要用于需要将整个文本解释为字符数据而不是标记的情况下。CDATA段中的内容不被XML处理器分析,所以可以在其中包含任意的字符。例如,在XML文档中含有Java代码,而Java代码可能存在着小于号(<)、大于号(>)、双引号(")、单引号()、和号(&)这些特殊字符,这个时候,CDATA段就派上用场了。CDATA段以“<![CDATA[”标记开始,以“]]>”标记结束。第52页/共67页6.2.4注释在XML文档中,注释可以出现在文档中其他标记之外的任何位置,另外,它们还可以在文档类型声明中语法允许的地方出现。XML的注释和HTML的注释类似,都是以“<!--”开始,以“-->”结束。注意:注释文本中不能出现字符“-”和字符串“--”,且注释不能被嵌套。第53页/共67页6.2.5处理指令处理指令(processinginstruction,PI)允许文档中包含由应用程序来处理的指令。在XML文档中,有可能会包含一些非XML格式的数据,这些数据XML处理器无法处理,此时就可以通过处理指令来通知其他应用程序来处理这些数据。处理指令的语法和XML声明类似,以“<?”标记开始,以“?>”标记结束。例如,一个常见的使用样式表单的处理指令如下所示:<?xml-stylesheethref="hello.class"type="text/css"?>第54页/共67页6.2.4幻灯片的编辑开始标记“<?”后的第一个字符串“xml-stylesheet”是处理指令的目标,它是必须要用到的应用程序,要注意的是,对于其他的非W3C定义的处理指令不能以字符串“XML”或“xml”开头。其余的部分是传递给应用程序的字符数据。应用程序从处理指令中取得目标和数据,执行要求的动作。处理指令的目标可以是要使用的程序的名字,或者是一个类似于xmlstylesheet这样的通用标识符。不同的应用程序支持不同的处理指令,对于不认识的处理指令,大多数应用程序采取忽略的方式进行处理。xml-stylesheet处理指令总是放在XML声明之后,第一个元素之前,其他的处理指令可以放在除标记的内部和XML声明之前的任何位置。第55页/共67页6.3JSP和XML的综合应用JSP和XML是J2EE的两个至关重要的组件。作为建立在JavaServlet之上的表达层技术,JSP技术允许将HTML标记和服务器端脚本混合起来生成动态网页,从而使得动态网页的生成更加简单。同时,作为一种开发工具,XML简化了数据交换,因此受到开发人员喜爱并越来越流行。这使得在J2EE架构中利用JSP访问XML或集成XML成为一种趋势。在应用程序中,经常需要对XML文档进行分析,以检索、修改、删除或重新组织其中的内容。例如,将应用程序运行所需要的一些配置信息以XML文件格式进行保存,在程序启动时,读取XML文件,从中取出有用的信息,这就需要对XML文档进行解析。第56页/共67页在解析XML文档时,通常是利用现有的XML解析器对XML文档进行分析,而编写的应用程序则通过解析器提供的API接口得到XML数据。整个过程如下图所示。第57页/共67页6.3.1使用DOM解析XMLDOM是documentobjectmodel的缩写,即文档对象模型,它是W3C组织推荐的处理XML的标准接口。有关DOM技术报告可以在/DOM/上查看。DOM是独立于程序设计语言的,W3C组织以IDL(interfacedefinitionlanguage,接口定义语言)的形式定义了DOM中的接口。某种程序语言要实现DOM,需要将DOM接口转换为本语言中的适当结构,为了保证不同语言的不同的DOM之间可以实现广泛的兼容,W3C组织在DOM规范的附录部分提供了Java和ECMAScript这两种语言绑定。第58页/共67页DOM中的核心概念是结点。DOM在分析XML文档时,将组成XML文档的各个部分(元素、属性、文本、注释和处理指令等)映射为一个对象,这个对象就叫做结点(Node)。在内存中,这些结点形成一棵文档树。整棵树是一个结点,树中的每一个结点也是一棵树(子树),可以说,DOM就是对这棵树的一个对象描述,通过访问树中的结点存取XML文档的内容。在使用DOM处理XML的时候,需要读入整个XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档很大,处理DOM就会变得相当费时费力。第59页/共67页1.DOM中的Node对象DOM定义了一个Node对象,表示XML文档中的元素的Element对象和表示元素属性的Attr对象都是从Node对象派生而来。Node对象是DOM结构中最基本的对象,代表了文档树中的一个结点。然而在实际使用中,很少会真正用到Node对象,而是使用Element、Attr、Text等Node对象的子对象来操作文档。虽然在Node中定义了对其子结点进行存取的方法,但是一些Node对象的子对象,如Text对象(表示元素或属性的文本内容),并不存在子结点。第60页/共67页2.DocumentBuilder类的parse()方法在java.xml.parsers包中,定义了DOM解析器工厂类DocumentBuilderFactory,用于产生DOM解析器。DocumentBuilderFactory是一个抽象类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东农业大学《轮胎结构设计》2023-2024学年第二学期期末试卷
- 河北软件职业技术学院《建筑数字技术》2023-2024学年第二学期期末试卷
- 2025年陕西省建筑安全员考试题库及答案
- 山东城市建设职业学院《建筑工程概预算实验》2023-2024学年第二学期期末试卷
- 四川工商学院《生态环境学》2023-2024学年第二学期期末试卷
- 南京工业大学浦江学院《用户研究与设计定义》2023-2024学年第二学期期末试卷
- 阳江职业技术学院《材料形变加工新技术》2023-2024学年第二学期期末试卷
- 青岛滨海学院《设备安装》2023-2024学年第二学期期末试卷
- 新乡学院《建筑设备》2023-2024学年第二学期期末试卷
- 新疆职业大学《有机化学理论教学》2023-2024学年第二学期期末试卷
- GB∕T 9286-2021 色漆和清漆 划格试验
- 新教材人教版高中化学选择性必修3全册各章节知识点考点重点难点归纳总结
- 病假学生追踪记录表
- 生产组织供应能力说明
- 碳酸丙烯酯法脱碳工艺工程设计
- 手榴弹使用教案
- 广东中小学教师职称评审申报表初稿样表
- 城市支路施工组织设计
- 北师大七年级数学下册教学工作计划及教学进表
- 菜肴成本核算(课堂PPT)
- 光纤通信原理课件 精品课课件 讲义(全套)
评论
0/150
提交评论