JavaWEB開發06——XML&tomcat

1.Xml概念

  • eXtendsible markup language 可擴展的標記語言

2.XML 有什麼用?

  • 1.能夠用來保存數據
  • 2.能夠用來作配置文件
  • 3.數據傳輸載體

3. 文檔聲明

  • 簡單聲明, 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" ?>

4.元素定義(標籤)

  • 1.其實就是裏面的標籤, <> 括起來的都叫元素 。 成對出現。 以下:html

    <stu> </stu>
  • 2.文檔聲明下來的第一個元素叫作根元素 (根標籤)
  • 3.標籤裏面能夠嵌套標籤
  • 4.空標籤
    <age/>既是開始也是結束。 通常配合屬性來用。
<stu>
    <name>張三</name>
    <age/>
</stu>
  • 5.標籤能夠自定義。
  • 6.XML 命名規則(必須)web

    • 名稱能夠含字母、數字以及其餘的字符
    • 名稱不能以數字或者標點符號開始
    • 名稱不能以字符 「xml」(或者 XML、Xml)開始
    • 名稱不能包含空格
    • 命名儘可能簡單,作到見名知義

5.簡單元素 & 複雜元素

  • 簡單元素-元素裏面包含了普通的文字
  • 複雜元素-元素裏面還能夠嵌套其餘的元素

6.屬性的定義

  • 定義在元素裏面, <元素名稱 屬性名稱="屬性的值"></元素名稱>
<stus>
    <stu id="10086">
        <name>張三</name>
        <age>18</age>
    </stu>
    <stu id="10087">
        <name>李四</name>
        <age>28</age>
    </stu>
</stus>

7.xml註釋:

  • 與html的註釋同樣。 <!-- -->
  • xml的註釋,不容許放置在文檔的第一行。 必須在文檔聲明的下面。

8.CDATA區

  • 非法字符
    嚴格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號、引號和大於號是合法的,可是把它們替換爲實體引用是個好的習慣。
    < <
    & &

若是某段字符串裏面有過多的字符, 而且裏面包含了相似標籤或者關鍵字的這種文字,不想讓xml的解析器去解析。 那麼可使用CDATA來!包裝。 不過這個CDATA 通常比較少看到。 一般在服務器給客戶端返回數據的時候。apache

<des><![CDATA[<a href="http://www.baidu.com">我愛編程</a>]]></des>

9.XML 解析

  • 其實就是獲取元素裏面的字符數據或者屬性數據。

10.XML解析方式

  • 有不少種,可是經常使用的有兩種。編程

    • DOM
    • SAX

11.針對這兩種解析方式的API

  • 一些組織或者公司, 針對以上兩種解析方式, 給出的解決方案有哪些?
    jaxp sun公司。 比較繁
    jdom
    dom4j 使用比較普遍

12.Dom4j 基本用法

element.element("stu") : 返回該元素下的第一個stu元素
    element.elements(); 返回該元素下的全部子元素。
  1. 建立SaxReader對象
  2. 指定解析的xml
  3. 獲取根元素。
  4. 根據根元素獲取子元素或者下面的子孫元素
try{

    // 1.建立sax讀取對象
    SAXReader reader = new SAXReader(); // jdbc -- classloader
    // 2.指定解析的xml源
    Document document = reader.read(new File("src/xml/stus.xml"));
    // 3.獲得元素、
    // 獲得根元素
    Element rootElement = document.getRootElement();
    // 獲取根元素下面的子元素 age
    // rootElement.element("age")
    // System.out.println(rootElement.element("stu").element("age").getText());
    // 獲取根元素下面的全部子元素 。 stu元素
    List<Element> elements = rootElement.elements();
    // 遍歷全部的stu元素
    for(
    Element element:elements)
    {
        // 獲取stu元素下面的name元素
        String name = element.element("name").getText();
        String age = element.element("age").getText();
        String address = element.element("address").getText();
        System.out.println("name=" + name + "==age+" + age + "==address=" + address);
    }

    }catch(Exception e)
    {
    e.printStackTrace();
    }

SaxReader 建立好對象 。
Document
Element
1.看文檔
2.記住關鍵字 。
3.有對象先點一下。
4.看一下方法的返回值。
5.根據平時的積累。 getXXX setXXX瀏覽器

13.Dom4j 的 Xpath使用

  • dom4j裏面支持Xpath的寫法。 xpath實際上是xml的路徑語言,支持咱們在解析xml的時候,可以快速的定位到具體的某一個元素。
  • 1.添加jar包依賴 jaxen-1.1-beta-6.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());
    }

14.XML 約束【瞭解】

以下的文檔, 屬性的ID值是同樣的。 這在生活中是不可能出現的。 而且第二個學生的姓名有好幾個。 通常也不多。那麼怎麼規定ID的值惟一, 或者是元素只能出現一次,不能出現屢次? 甚至是規定裏面只能出現具體的元素名字。tomcat

<stus>
        <stu id="10086">
            <name>張三</name>
            <age>18</age>
            <address>深圳</address>
        </stu>
        <stu id="10086">
            <name>李四</name>
            <name>李五</name>
            <name>李六</name>
            <age>28</age>
            <address>北京</address>
        </stu>
    </stus>

15.DTD

  • 語法自成一派, 早起就出現的。 可讀性比較差。
  • 1.引入網絡上的DTD
    <!-- 引入dtd 來約束這個xml -->
    <!-- 文檔類型 根標籤名字 網絡上的dtd dtd的名稱 dtd的路徑
    <!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd"> -->
  • 2.引入本地的DTD
    <!-- 引入本地的DTD : 根標籤名字 引入本地的DTD dtd的位置 -->
    <!-- <!DOCTYPE stus SYSTEM "stus.dtd"> -->
  • 3.直接在XML裏面嵌入DTD的約束規則
<!-- xml文檔裏面直接嵌入DTD的約束法則 -->
    <!DOCTYPE stus [
    <!ELEMENT stus (stu)>
    <!ELEMENT stu (name,age)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    ]>
    <stus>
    <stu>
    <name>張三</name>
    <age>18</age>
    </stu>
    </stus>
    <!ELEMENT stus (stu)> : stus 下面有一個元素 stu  , 可是隻有一個
    <!ELEMENT stu (name , age)>  stu下面有兩個元素 name  ,age  順序必須name-age
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!ATTLIST stu id CDATA #IMPLIED> stu有一個屬性 文本類型, 該屬性無關緊要

    元素的個數:
    + 一個或多個
    *  零個或多個
    ?  零個或一個

    屬性的類型定義
    CDATA :屬性是普通文字
    ID :屬性的值必須惟一

    <!ELEMENT stu (name , age)>  按照順序來
    <!ELEMENT stu (name | age)>  兩個中只能包含一個子元素

16.Schema

其實就是一個xml , 使用xml的語法規則, xml解析器解析起來比較方便 , 是爲了替代DTD 。
可是Schema 約束文本內容比DTD的內容還要多。 因此目前也沒有真正意義上的替代DTD

約束文檔:
    <!-- xmlns  :  xml namespace : 名稱空間 /  命名空間
    targetNamespace :  目標名稱空間 。 下面定義的那些元素都與這個名稱空間綁定上。 
    elementFormDefault : 元素的格式化狀況。  -->
    <schema xmlns="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://www.itheima.com/teacher" 
        elementFormDefault="qualified">
        
        <element name="teachers">
            <complexType>
                <sequence maxOccurs="unbounded">
                    <!-- 這是一個複雜元素 -->
                    <element name="teacher">
                        <complexType>
                            <sequence>
                                <!-- 如下兩個是簡單元素 -->
                                <element name="name" type="string"></element>
                                <element name="age" type="int"></element>
                            </sequence>
                        </complexType>
                    </element>
                </sequence>
            </complexType>
        </element>
    </schema>

實例文檔:
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- xmlns:xsi : 這裏必須是這樣的寫法,也就是這個值已經固定了。
    xmlns : 這裏是名稱空間,也固定了,寫的是schema裏面的頂部目標名稱空間
    xsi:schemaLocation : 有兩段: 前半段是名稱空間,也是目標空間的值 , 後面是約束文檔的路徑。
     -->
    <teachers
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.itheima.com/teacher"
        xsi:schemaLocation="http://www.itheima.com/teacher teacher.xsd"
    >
        <teacher>
            <name>zhangsan</name>
            <age>19</age>
        </teacher>
        <teacher>
            <name>lisi</name>
            <age>29</age>
        </teacher>
        <teacher>
            <name>lisi</name>
            <age>29</age>
        </teacher>
    </teachers>

17.名稱空間的做用

一個xml若是想指定它的約束規則, 假設使用的是DTD ,那麼這個xml只能指定一個DTD , 不能指定多個DTD 。 可是若是一個xml的約束是定義在schema裏面,而且是多個schema,那麼是能夠的。簡單的說: 一個xml 能夠引用多個schema約束。 可是隻能引用一個DTD約束。服務器

名稱空間的做用就是在 寫元素的時候,能夠指定該元素使用的是哪一套約束規則。 默認狀況下 ,若是隻有一套規則,那麼均可以這麼寫微信

<name>張三</name>
<aa:name></aa:name>
<bb:name></bb:name>

18.程序架構

網頁遊戲網絡

  • C/S(client/server)
  • QQ 微信 LOL
    優勢:有一部分代碼寫在客戶端, 用戶體驗比較好。
    缺點:服務器更新,客戶端也要隨着更新。 佔用資源大。
  • B/S(browser/server)
  • 網頁遊戲 , WebQQ ...
    優勢:客戶端只要有瀏覽器就能夠了。 佔用資源小, 不用更新。
    缺點:用戶體驗不佳。

19.服務器

  • 其實服務器就是一臺電腦。 配置比通常的要好。

20.Web服務器軟件

  • 客戶端在瀏覽器的地址欄上輸入地址 ,而後web服務器軟件,接收請求,而後響應消息。
  • 處理客戶端的請求, 返回資源 | 信息
  • Web應用 須要服務器支撐。 index.html
    Tomcat apache
    WebLogic BEA
    Websphere IBM
    IIS 微軟

21.Tomcat安裝

  • 1.直接解壓 ,而後找到bin/startup.bat
  • 2.能夠安裝

啓動以後,若是可以正常看到黑窗口,代表已經成功安裝。 爲了確保萬無一失, 最好在瀏覽器的地址欄上輸入 : http://localhost:8080 , 若是有看到內容 就代表成功了。架構

  • 3.若是雙擊了startup.bat, 看到一閃而過的情形,通常都是 JDK的環境變量沒有配置。

21.Tomcat目錄介紹

  • bin:包含了一些jar , bat文件 。 startup.bat
  • conf:tomcat的配置 server.xml web.xml
  • lib :tomcat運行所需的jar文件
  • logs:運行的日誌文件
  • temp:臨時文件
  • webapps:發佈到tomcat服務器上的項目,就存放在這個目錄。
  • work:jsp翻譯成class文件存放地

22.如何把一個項目發佈到tomcat中

  • 需求:如何能讓其餘的電腦訪問我這臺電腦上的資源 。 stu.xml
    localhost : 本機地址

1.拷貝這個文件到webapps/ROOT底下, 在瀏覽器裏面訪問:

http://localhost:8080/stu.xml
* 在webaps下面新建一個文件夾xml  , 而後拷貝文件放置到這個文件夾中
    http://localhost:8080/xml/stu.xml
    http://localhost:8080 : 其實對應的是到webapps/root
    http://localhost:8080/xml/ : 對應是 webapps/xml    
    使用IP地址訪問:
    http://192.168.37.48:8080/xml/stu.xml

2. 配置虛擬路徑

使用localhost:8080 打開tomcat首頁, 在左側找到tomcat的文檔入口, 點擊進去後, 在左側接着找到 Context入口,點擊進入。

http://localhost:8080/docs/config/context.html
  • 1.在conf/server.xml 找到host元素節點。
  • 2.加入如下內容。
    <!-- docBase : 項目的路徑地址 如: D:xml02person.xml
    path : 對應的虛擬路徑 必定要以/打頭。
    對應的訪問方式爲: http://localhost:8080/a/person.xml -->
    <Context docBase="D:xml02" path="/a"></Context>
  • 3.在瀏覽器地址欄上輸入: http://localhost:8080/a/person.xml

3. 配置虛擬路徑

  • 1.在tomcat/conf/catalina/localhost/ 文件夾下新建一個xml文件,名字能夠本身定義。 person.xml
  • 2.在這個文件裏面寫入如下內容
    <?xml version='1.0' encoding='utf-8'?>

    <Context docBase="D:\xml02"></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

23.總結:

  • xml

    • 1.會定義xml
    • 2.會解析xml
      dom4j 基本解析
      Xpath手法
  • tomcat

    • 1.會安裝 ,會啓動 , 會訪問。
    • 2.會設置虛擬路徑
    • 3.給eclipse配置tomcat
相關文章
相關標籤/搜索