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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,785评论 0 11
  • 坚持摄入原汁原味的英文的话,总是会听到、读到非常地道的英文表达方式,然而提笔忘字,到了自己要用的时候,又回到那套中...
    hades_hy阅读 608评论 0 1
  • 第一,一旦你说了一句话,因为人类最本质的自恋需求,你会把事情朝这句话预言的方向去推动,以此来证明,你是对的。这就是...
    张小米_2580阅读 345评论 0 0
  • 越来越觉得累了,小粟米是一环扣一环,不给我的心停歇啊,先是黄疸,接着体重下降厉害,现在又鹅口疮,而我又发现乳头有硬...
    Roselyn楚英阅读 141评论 0 0