(一)XML
一.概述和作用
- eXtendsible Markup Language 可扩展的标记语言
- 可以用来保存数据
可以用来配置文件
数据传输载体
二.定义xml
其实就是一个文件,文件的后缀为 .xml
- 文档声明
- -简单声明,version:解析这个xml的时候,是用什么版本的解析器解析
<?xml version = "1.0"?>
- - encoding:解析xml中的文字的时候,使用什么编码来翻译
<?xml version = "1.0" encoding ="gbk" ?>
- - standalone:no -该文档会依赖关联其它文档, yes--这是一个独立的文档
<?xml version = "1.0" encoding ="gbk" standalone ="no" ?> - encoding详解:
- 在解析这个xml的时候,使用什么编码去解析 --解码
电脑上的文件再保存的时候并不是真正的储存文字,而是存储这些文字的二进制.
这些二进制根据文件使用的编码来得到 - 默认文件保存的时候,使用的是GBK的编码保存
所以让xml正常显示中文有两种办法
- - 让encoding也是 GBK 或者 gb2312
- - 如果encoding是utf-8,那么保存文件的时候也必须使用utf-8
保存的时候见到的ANSI对应的是本地编码 GBK
- 在解析这个xml的时候,使用什么编码去解析 --解码
- 元素定义(标签)
- - 其实就是里面的标签, <>括起来的都叫元素 ,成对出现 <stu></stu>
- - 文档声明下来的第一个元素叫做根元素(根标签)
- - 标签里可以嵌套标签
- - 空标签:既是开始也是结束.一般配合属性来用<br/>
- - 标签可以自定义. - 简单元素 & 复杂元素
- 简单元素
- - 元素里面包含了普通的文字 - 复杂元素
- - 元素里面还可以嵌套其它的元素
- 简单元素
- 属性的定义
定义在元素里面,<元素名称 属性名称="属性的值"></元素名称>
三.xml注释
- 与html的注释一样 <!-- -->
- xml的注释,不允许放置在文档的第一行,必须在文档声明的下面
四.CDATA区
- 非法字符:严格的讲,在XML中仅有<和&是非法的,省略号,引号和大于是合法的,但把他们替换成实体引用是个好的习惯
< < & & - 如果某段字符串里面有过多的字符,并且里面包含了类似标签或关键字的这种文字,不想让xml的解析器去解析,那么可以使用CDATA来包装,不过这个CDATA一般比较少看到,通常在服务器给客户端返回数据的时候.
< ! [CDATA[ <a href="http://fssaf.com">练习</a>] ] >
五.XML解析
其实就是获取元素里面的字符数据或者属性数据
- XML解析方式(面试常用)
- 有很多种,但是常用的有两种.
- - DOM docuement:把整个XML全部读到内存当中,形成树状结构,整个文档称之为document对象,属性对应Attribute对象,
所有的元素节点对应Element对象,文本也可以称之为Text对象,以上所有对象都可以称之为Node节点.
如果xml特别大,那么将会造成内存溢出,文档可以进行增删操作
- - SAX simple API for XML 基于事件驱动,读取一行,解析一行
不会造成内存溢出,不可以进行增删,只能查询
- 有很多种,但是常用的有两种.
- 针对这两种解析方式的API
一些组织或者公司,针对以上两种解析方式,给出的解决方案
jaxp sun公司,比较繁琐
jdom
dom4j 使用比较广泛 - Dom4j 基本用法
element.element("stu") //返回该元素下的第一个stu元素
element.elements(); //返回该元素下的所有子元素- 创建SaxReader对象 SAXReader reader = new SAXReader();
- 指定解析的xml Document document = reader.read(new File("../stus.xml"));
- 获取根元素 Element rootElement = document.getRootElement();
- 根据根元素获取子元素或者下面的子孙元素
-
Dom4j的Xpath使用
- - dom4j里面支持Xpath的写法. Xpath其实是xml的路径语言,支持我们在解析的时候,能够快速的定位到具体的某一个元素-
添加jar包依赖
jaxen-1.1-beta-6.jar -
在查找指定节点的时候,根据XPath语法规则来查找
//要想使用Xpath,还得添加支持的jar 获取的是第一个 之返回一个
Element nameElement = (Element)rootElement.selectSingleNode("//name");
//获取的所有name元素
List<Element> list = rootElement.selectNodes("//name"); -
后续的代码与以前的解析代码一样
-
六.XML约束
- DTD Document Type Definition文档类型定义
- - 语法自成一派,早期就出现的,可读性比较差- < !ELEMENT 元素的名称 元素的类型 >
<!ELEMENT stus (stu)> //复杂元素 (子元素)
<!ELEMENT stu (name,age)> //复杂元素 (子元素)
<!ELEMENT name (#PCDATA)> //简单元素 (#PCDATA)
<!ELEMENT age (#PCDATA)> - 第一,二种在xml中引入dtd
文档类型 根标签名字 网络上的dtd dtd的名字 dtd的路径
<!DOCTYPE stus PUBLIC "//UNKOWN/" "unknown.dtd">
文档类型 根标签名字 引入本地的dtd dtd的路径
<!DOCTYPE stus SYSTEM "../stus.dtd"> - 第三种引入dtd:直接在xml中写dtd
<!DOCTYPE stus[ 填入1的内容 ]> - 添加属性的定义
<!ATTLIST stu id CDATA 默认值> //值为字符数据
<!ATTLIST stu id ID 默认值> //约束id是唯一的 - 元素的个数
<!ELEMENT stus (stu)+>
+ 一个或多个
* 零个或多个
? 零个或一个 - <!ELEMENT stu (name , age)> 按照顺序来
<!ELEMENT stu (name | age)> 两个中只能包含一个
- < !ELEMENT 元素的名称 元素的类型 >
- Schema
- - 其实就是一个xml,使用xml的语法规则,xml解析器解析起来比较方便,是为了替代DTD
- - 但是Schema 约束文本内容比DTD的内容还要多,所以目前也没有真正意义上的替代DTD
<?xml version="1.0" encoding="UTF-8"?>
<schema
//xml namespace:名称空间/命名空间
xmlns="http://www.w3.org/2001/XMLSchema"
//目标名称空间.下面定义的那些元素都与这个名称空间绑定上
targetNamespace="http://www.example.org/stus"
//元素的格式化情况
elementFormDefault="qualified">
</schema>- 在将简单元素嵌套在复杂元素中时
<element name = "stu">复杂元素
<complexType>
<sequence>
简单元素
</sequence>
</complexType>
</element >
- 在将简单元素嵌套在复杂元素中时
- Schama约束的Xml中的格式
<stus
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //不可改动
xmlns="http://www.example.org/stus" //根据Schama中的顶部目标名称空间
xsi:schemaLocation="http://www.example.org/stus stus.xsd" //xsd文件路径
>
内部元素
</stus>
(二)tomcat
一.服务器
- 服务器
其实服务器就是一台电脑,配置比一般的要好 - web服务器
处理客户端的请求,返回资源 | 信息
- - web应用 需要服务器支撑
Tomcat apache
WebLogic BEA
WebSphere IBM
IIS 微软
二.Tomcat安装
- 解压,安装.
- 找到bin目录下的startup.bat,启动后会出现黑窗口,表明成功安装,然后浏览器输入localhost:8080看到内容则成功
- 若黑窗口一闪而过,我个人是因为没有配置JAVA_HOME D:\JDK1.8,只配置了path D:\JDK1.8\bin
三.Tomcat目录介绍
- bin
- - 包含了一些jar , bat 文件 , startup.bat - conf
- - tomcat的配置 server.xml web.xml - lib
- - tomcat运行所需的jar文件 - logs
- - 运行的日志文件 - temp
- - 临时文件 - webapps
- - 发布到tomcat服务器上的项目,就存放在这个目录 - work
- - jsp翻译成class文件存放地
四.如何把一个项目发布到tomcat中
需求:如何能让其他的电脑访问我这台电脑的资源
localhost : 本机地址
- - - 拷贝这个文件到webapps/ROOT底下,在浏览器里面访问
http://localhost:8000/stu.xml
- - 在webapps下面新建一个文件夹xml,然后拷贝文件放置到这个文件夹中
http://localhost:8000/xml/stu.xml
使用ip地址访问
http:/ip地址:8000/xml/stu.xml - - - 配置虚拟路径
使用localhost:8080 打开tomcat首页,点击Documentation入口,然后点击Configuration,接着找到Context入口进入
http://localhost:8080/docs/config/context.html
- 1 - 在conf/server.xml 找到host元素节点
- 2 - 加入以下内容
<!-- docBase:项目的路径地址 如: D:\xml\stu.xml
path : 对应的是虚拟路径,一定要以/开头
对应的访问方式是: http://localhost:8080/a/stu.xml -->
<Context docBase="D:\xml" path="/a"></Context>
- 3 - 浏览器访问: http://localhost:8080/a/stu.xml - - - 配置虚拟路径
- 1 - 在tomcat/conf/catalina/localhost/ 文件夹下新建一个xml文件,名字可以自己定义stu.xml
- 2 - 在这个文件里面写入以下内容
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:\xml" ></Context>
- 3 - 浏览器访问: http://localhost:8080/stu/stu.xml
五.给Eclipse配置Tomcat
- 在server里面右键新建一个服务器,选择到apache分类,找到对应的tomcat版本,一步步配置即可
- 配置完毕后,在server里面,右键open,找到Server Location 选择Tomcat
- 创建web工程,在webContent下定义html文件,右键工程,run as server