#工具类的优化
提取出相同的东西
*元数据MetaData
*数据库元数据
获得:
* DatabaseMetaData conn.getMetaData();
作用:
* 获得驱动信息(驱动类,用户名,url).
* 获得数据库中表信息及表中的主键的信息.
*参数元数据
获得:
* ParameterMetaData pstmt.getParameterMetaData();
作用:
* 获得SQL中的参数的个数.
* 获得SQL中的参数的类型. --MYSQL数据库有问题.
*结果集元数据
获得:
* ResultSetMetaData rs.getMetaData();
作用:
* 获得列的个数
* 获得列的名称
* 获得列的类型
#XML&Tomcat
*XML
*XML的概述
可扩展标记语言
是一种标记语言,类似HTML
设计宗旨是传输数据,而不是显示数据
标签没有被预定义,需要自行定义标签
被设计为自我描述性
是W3C的推荐标准
*XML的作用
传输和存储数据(存储到配置文件)
软件的配置文件
*XML的语法
*文档声明
通常出现在文档的第一行第一列
*写法:
<?xml 属性名="属性值" 属性名="属性值" ...?>
version 必须是1.0
encoding:字符集,是使用浏览器打开的时候采用的默认的字符集的编码
(告诉浏览器解析XML的字符集的编码)
standalone:描述XML文档是否需要依赖其他的文件 可以引用CSS进行美化
*注释
跟html一致 <!--XML的注释-->
*元素(标签)
命名规则:
不能使用 :
标签区分大小写的.<a> <A>
XML语法比较严格,有开始标签,必须有结束标签.<book/>
XML的元素名称.需要以字母开始中间不能使用空格 不能使用:
元素的名称不能是以XML,xml,Xml开头.
XML文档必须有一个跟元素.
*属性
属性名称的规范和元素一致
不能使用空格,冒号特殊字符.
属性需要以字母开头.
属性必须使用引号.
*特殊字符和CDATA区
< <
> >
<![CDATA[ 内容 ]]>
*XML的解析
从XML文档中获得想要的数据(通过代码完成)
XML的解析方式(面试)
*DOM解析:Document Object Model
一次性将文档加载到内存,形成树形结构进行解析
缺点:如果文档特别大,容易导致内存的溢出
优点:对XML进行增删改的操作
*SAX解析:
事件驱动方式,逐行进行解析
缺点:不能对文档进行增删改的操作
优点:如果文档特别大,不会导致内存的溢出
针对这两种解析的方式,不同公司提供了不同的API的实现
*JAXP:SUN公司提供的一套XML的解析的API
*JDOM:
*DOM4J:开原组织提供了一套
*pull:解析-主要应用在android.
*XPath
*dom4j支持XPath的jar包
*dom4j支持XPath的API
子孙元素//
子元素/
属性[@type]
*xml的约束
*概述
就是用来约束xml的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数
*约束的作用
用来规范xml的写法
*xml的约束的种类及区别
*DTD
*Schema
区别:
1.DTD语法是自成一体的,Schema语法就是xml的语法
2.Schema的语法就是xml的语法,所以更容易被解析器所解析
3.Schema支持名称空间
4.Schema有比DTD更加强大的语义和语法的约束
*DTD的语法(了解)
*引入的方式
*内部的DTD
<!DOCTYPE persons[
]>
*外部的DTD
*一种本地DTD
<!DOCTYPE books SYSTEM "book.dtd">
<!DOCTYPE 跟标签名 SYSTEM “路径”>
一种网络DTD
<!DOCTYPE persons PUBLIC "//UNKNOWN/""unknown.dtd">
<!DOCTYPE 跟标签名 PUBLIC "约束名" "约束地址"
*DTD语法:
* 元素:<!ELEMENT 元素名称 元素组成>
* 元素类型:
EMPTY
ANY
子元素
(#PCDATA)
* 如果出现子元素:
使用?(出现0次或1次),
*(出现0次或多次),
+(出现1次或多次) 表示子元素出现的个数.使用|或者,规定元素出现的顺序.
| :代表或
, :代表子元素出现必须按照顺序.
* 属性:
<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
* 属性类型:
ID:表示属性值需要是唯一的
枚举"
CDATA:普通的字符串
* 属性的约束:
REQUIRED
IMPLIED
FIXED
*Schema的语法(了解)
名称空间:一个XML只能引入一个DTD约束文档.使用了Schema约束XML文档,一个XML可以引入多个Schame的约束!!!
如果再多个Schema文档中定义了相同的属性名称 该怎么办?
* 名称空间类似于java中的package.通过名称空间区分 标签或属性来自于哪个文档的!!!通常名称空间唯一的不重复的即可.一般情况下使用一个URL地址表示一个名称空间.
|
|