Web核心day01-XML&TOMCAT
一:XML的介绍
XML(可扩展的标记语言)的作用:
1.可以用来保存数据
2.可以用来做配置文件
3.数据传输载体
二:XML文档结构
例:
<?xml versio="1.0" encoding="UTF-8"?>
<stus>
<stu>
<name>zhangweiwei</name>
<age>25</age>
<desc>我曾经喜欢过你</desc>
</stu>
<stu>
<name>wangyunting</name>
<age>24</age>
<desc>我曾经喜欢过你</desc>
</stu>
<stus>
XML文档结构图三.XML文档声明
1.文档声明
简单声明,version:解析这个xml的时候,使用什么版本的解析器解析
<?xml version="1.0" ?>
encoding:解析xml中的文字的时候,使用声明编码来翻译
<?xml version="1.0" encoding="gbk" ?>
注:XML其实就是一个文件,文件的后缀名是XML,用记事本编辑的时候,存储的编码格式要和
encoding声明的编码一致才能正确读取中文(或者让encoding声明为GBK或者GB2312也
可以)。
standalone:no - 该文档会依赖关联其他文档(比如HTML关联CSS), yes-- 这是一个独立的文档
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
四:XML元素的定义
1. 其实就是里面的标签,<括起来的都叫元素>。标签是成对出现的,如下:
<stu></stu>
2.文档声明下来的第一个元素叫做根元素(根标签)
3.标签里面可以嵌套标签
4.空标签
即是开始也是结束,一般配合属性来用。
<age/>
<stu>
<name>张三</name>
<age/>
</stu>
5.标签名字可以自定义。 (了解即可,命名尽量简单,做到见名知其义)
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。
五.XML属性定义
1.简单元素&复杂元素
>简单元素:元素里面包含了普通的文字
>复杂元素:元素里面还可以嵌套其他的元素
2.属性的定义
>定义在元素里面,格式:<元素名称 属性名称="属性的值"></元素名称>
例:
<stus>
<stu id="001">
<name>zhangweiwei</name>
<age>25</age>
<desc>我曾经喜欢过你</desc>
</stu>
<stu id="002">
<name>wangyunting</name>
<age>24</age>
<desc>我曾经喜欢过你</desc>
</stu>
<stus>
六.XML解析的方式(DOM&SAX)
XML解析的方式有很多种,常用就就两种:DOM和SAX
一些组织或者公司,针对以上两种解析方式,给出的解决方案有:
jaxp sun公司,比较繁琐
jdom
dom4j 使用比较广泛
DOM和SAX解析的不同Dom4j的基本用法
element.element("stu"):返回该元素下的第一个stu元素。
element.elements():返回该元素下的所有子元素。
1.创建SAXReader对象
2.解析指定xml
3.获取根元素
4.根据根元素获取子元素或者下面的子孙元素
代码如下:
public class MainTest {
public static void main(String[] args) {
try {
//1.创建SAX读取对象
SAXReader reader = new SAXReader();
//2.解析指定xml
Document document = reader.read(new File("src/xml/demo.xml"));
//3.得到元素
//得到根元素
Element RootElement = document.getRootElement();
//4.获得根元素下的子元素age
//RootElement.element("age");
// System.out.println(RootElement.element("stu").element("age").getText());
//获取根元素下面的所有子元素
List<Element> elements = RootElement.elements();
for(Element element:elements) {
String name = element.element("name").getText();
String age = element.element("age").getText();
String desc = element.element("desc").getText();
System.out.println("name="+name+" "+"age="+age+" "+"desc="+desc);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Dom4j的Xpath用法
>dom4j里面支持Xpath的写法。xpath其实是xml的路径语言,支持我们在解析xml的时候,能后快速的定位到具体的某一个元素
1.添加jar包
2.在查找指定节点的时候,根据XPath语法规则来茶渣
3.后续的代码与以前的解析代码一样。
代码:
//想要使用XPath,还得添加支持的jar
//获取的是第一个,只返回第一个
Element nameElement = (Element) RootElement.selectSingleNode("//name");
System.out.println(nameElement.getText());
System.out.println("-----------");
//获取文档里所有name的元素
List<Element> list = RootElement.selectNodes("//name");
for(Element element:list) {
System.out.println(element.getText());
}
七.XML的约束(了解)
一般学生元素同一个学号ID不可能对应几个学生,那么怎么规定ID的值是唯一,或者元素只能出现一次,不能出现多次?甚至是规定里面只能出现具体的元素名字。
<stus>
<stu id="001">
<name>zhangweiwei</name>
<name>zhajinling</name>
<name>zhangpeipei</name>
<age>25</age>
<desc>我曾经喜欢过你</desc>
</stu>
<stu id="002">
<name>wangyunting</name>
<age>24</age>
<desc>我曾经喜欢过你</desc>
</stu>
</stus>
有两种约束的方法:
1.DTD:语法自成一排,早期就出现的,可读性比较差。
方法代码:
方法一:引入网络上的DTD
<!-- 引入DTD文件来约束这个xml -->
<!-- 文档类型 根标签名字 网络上的dtd dtd的名称 dtd的路径
<!DOCTYPE stus PUBLIC "//UNKNOW" "unknown.dtd"> -->
方法二:引入本地的DTD
<!-- 引入本地的DTD 根标签名字 本地的DTD DTD的位置
<! DOCTYPE stus SYSTEM "stus.dtd">-->
方法三:直接在XML里面嵌入DTD的约束规则
<!-- xml文档里面直接嵌入DTD的约束法则 -->
<!DOCTYPE stus[
<!ELEMENT stus (stu)>
<!ELEMENT stu (name,age,desc)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT desc (#PCDATA)>]>
<stus>
<stu >
<name>zhangweiwei</name>
<age>25</age>
<desc>我曾经喜欢过你</desc>
</stu>
要点:
<!ELEMENT stus (stu)> stus下面有一个元素stu,但是只有一个
<!ELEMENT stu (name,age,desc)> stu下面有三个元素:name,age,desc,顺序必须为name,age,desc
<!ELEMENT stu (name|age> stu下面有两个元素:name,age,两个中只能写一个元素
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ATTLIST stu id CDATA#IMPLIED> stu有一个属性:文本类型,该属性可有可无
元素的个数表达符号:
+:一个或多个
*零个或多个
?零个或一个
2.Schema:其实就是一个xml,使用xml的语法规则,xml解析器解析起来比较方便,是为了替代DTD,但是Schema约束文本内容比DTD的内容还要多,所以目前也没有真正意义上的替代DTD。
不同点:一个xml可以引用多个Schema约束,只能引用一个DTD约束。
七.Web服务器介绍
程序架构:
C/S(client/server)
> QQ 微信 LOL
优点:
有一部分代码写在客户端, 用户体验比较好。
缺点:
服务器更新,客户端也要随着更新。 占用资源大。
* B/S(browser/server)
> 网页游戏 , WebQQ ...
优点:
客户端只要有浏览器就可以了。 占用资源小, 不用更新。
缺点:
用户体验不佳。
服务器:
其实服务器就是一台电脑。 配置比一般的要好。
Web服务器软件:
> 客户端在浏览器的地址栏上输入地址 ,然后web服务器软件,接收请求,然后响应消息。
> 处理客户端的请求, 返回资源 | 信息
Web应用 需要服务器支撑。
主要有三种:
Tomcat apache
WebLogic BEA
Websphere IBM
IIS 微软
八:如何将一个项目发布到tomcat上
方法一:
1.拷贝这个文件到webapps/root文件夹里面,在浏览器里访问:
http://localhost:8080/stu.xml
或者在webapps里面建一个文件夹xml,将文件放置到xml文件夹里,在浏览器里访问:
http://localhost:8080/xml/stu.xml
方法二:
配置虚拟路径
使用localhost:8080打开tomcat首页,在左侧找到tomcat的文档入口,点击进去后,在左侧接这找到Cnotext入口,进入找到:
http://10.2.75.3:8080/docs/config/context.html
1. 在本地tomcat程序目录conf/server.xml 找到host元素节点。
2. 用记事本编辑打开,加入以下内容。
<Context docBase="" path=""></Context>
docBase的双引号内填写项目的路径地址 如: C:\xml
path的双引号内填写对应的虚拟路径:以/开头自己拟定,例如:/a
对应的访问方式为: http://localhost:8080/a/stus.xml
完整的格式如下:
<Context docBase="C:\xml" path="/a"></Context>
3. 在浏览器地址栏上输入: http://localhost:8080/a/stus.xml
方法三:
配置虚拟路径
1. 在tomcat/conf/catalina/localhost/ 文件夹下新建一个xml文件,名字可以自己定义。 如:person.xml
2. 在这个文件里面写入以下内容
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:\xml"></Context>
3. 在浏览器上面访问
http://localhost:8080/person/xml文件的名字即可
九:给Eclipse配置Tomcat
1. 在server里面 右键新建一个服务器, 选择到apache分类, 找到对应的tomcat版本, 接着一步一步配置即可。
2. 配置完毕后, 在server 里面, 右键刚才的服务器,然后open , 找到上面的Server Location , 选择中间的 Use Tomcat installation...
3. 创建web工程, 在WebContent下定义html文件, 右键工程, run as server
总结
XML:
1. 会定义xml
2. 会解析xml
1)会dom4j的基本解析
2)Xpath手法
tomcat:
1. 会安装 ,会启动 , 会访问。
2. 会设置虚拟路径
3. 会给eclipse配置tomcat