xml(瞭解) xml介紹 可擴展標記語言,相似html xml的標籤能夠自定義 宗旨:存儲數據 xml的做用: 1.交換數據--不一樣語言之間 2.配置文件--項目開發和框架最多見的☆ 書寫規範 xml必須有根元素(只有一個) xml標籤必須有關閉標籤 xml標籤對大小寫敏感 xml的屬性必須加引號 特殊字符必須轉義 > < & 空格/回車/製表符在xml中都是文本節點 xml必須正確地嵌套 咱們將符合上述書寫規則的XML叫格式良好的XML文檔 xml的組成 聲明: 做用:告訴計算機我是一個xml文件、 格式: <?xml version='1.0' encoding='utf-8'?> 注意: 必須是xml文檔第一行 必須頂格寫 元素: 格式: <xxx></xxx> <xxx/> 注意: xml元素必須遵循如下命名規則: 名稱能夠含字母、數字以及其餘的字符 名稱不能以數字或者標點符號開始 名稱不能以字符"xml"(或者XML、Xml)開始 名稱不能包含空格 可以使用任何名稱,沒有保留的字詞 屬性: 格式: <xxx key='value'/> 注意: 屬性值必須用引號 註釋: 和html同樣 <!-- --> CDATA: 在頁面原樣輸出 格式: <![CDATA[ 原樣輸出的內容 ]]> xml的約束: 約束的做用: 規定xml文檔中能夠出現哪些元素和屬性,且規定了他們出場順序了、 約束的分類: DTD約束:struts hibernate SCHEMA約束:spring DTD約束: DTD和xml的關聯: 三種: 內部關聯: 格式:<!DOCTYPE 根元素 [語法]> 外部關聯--系統關聯: 格式:在xml中寫法 <!DOCTYPE 根元素 SYSTEM "dtd的路徑"> 外部關聯--公共關聯 格式:在xml中寫法 <!DOCTYPE 根元素 PUBLIC "DTD名稱" "dtd的路徑"> 注意:dtd文件的後綴名爲.dtd dtd的組成: 元素: 格式1:<!ELEMENT 元素名稱 (內容)> 格式2:<!ELEMENT 元素名稱 類別> 類別: #PCDATA 元素的文本節點爲字符串,不能出現元素 用的時候通常用()引發來 符號: *:出現的次數>=0 +:出現的次數>=1 ?:出現的次數0|1 |:或者 ():分組 ,:順序 屬性: 格式: <!ATTLIST 元素名稱 屬性名稱 屬性類型 默認值> 屬性的類型: ID:惟一 CDATA:字符串 默認值: #RUQUIRED:屬性必須出現 #IMPLIED:屬性可選出現 SCHEMA約束: 一個xml能夠出現多個schema約束,可是一個一個xml只能出現一個dtd約束 後綴名.xsd a.xsd table width height b.xsd table row col 在一個xml文檔中若出現以上狀況,能夠 經過名稱空間解決。 名稱空間的寫法: xmlns='aaa' --指的是a.xsd xmlns:別名='bbb' --指的是b.xsd 例如: xmlns:b='bbb' <table> 表明來自a.xsd文件中 <b:table> 表明的是來自b.xsd文件 注意: 沒有別名的名稱空間只能出現一個。 做用:肯定元素的約束來自哪一個約束文檔 和xml文件的關聯: 1.編寫xsd文件。 xsd文件本質也是一個xml文件,只是後綴名爲.xsd targetNamespace="http://www.example.org/b1" --給本身的約束文件起個名稱,方便xml文件使用。 注意: 名稱能夠自定義 建議使用惟一的,域名/自定義的內容 targetNamespace="http://www.example.com/taotao" 再次肯定根元素是哪一個 2.根據xsd編寫xml 首先寫根元素 而後添加約束 xml的解析: 經常使用的解析方式: DOM:一次性將xml文檔加載到內存中,造成一棵樹,能夠對節點進行crud操做 SAX:逐行解析。只使用於R操做。查詢效率高 經常使用的解析技術: JAXP(SUN) JDOM DOM4J pull xstream 重點:dom4j的查詢操做 使用步驟: 1.導入jar包(解壓zip包 在項目中導入dom4j-1.6.1.jar) 2.xml讀取到內存 SAXReader reader=new SAXReader(); Dodument doc=reader.read(xml文件路徑); 3.先獲取根節點 Element rootEle=doc.getRootElement(); 4.經過根節點獲取其餘的節點 經常使用的方法: List<Element> bookList=rootEle.elements(); 遍歷list獲取到每個bookEle String value=bookEle.attributeValue("category"); String text=booEle.elementText("author"); 獲取子元素 Element title=bookEle.element("title"); 擴展方法(瞭解) Iterator<Element> i=rootEle.elementIterator(); --獲取的每個子節點 獲取其餘的節點: 屬性:String value=book.attribure("category").getValue(); 文本:String text=book.element("title").getText(); xpath查詢操做 使用步驟: 1.導入jar包 (dom4j的jar包和jaxme-api-0.3.jar) 2.獲取document Dodument doc=new SAXReader().read(xml路徑); 3.能夠經過匹配表達式獲取其餘節點 經常使用方法: list selectNodes(匹配表達式):返回多個 element selectSingleNode(匹配表達式):返回第一個 tomcat(☆) web的相關概念: web: 單詞:網絡資源 web資源分類: 靜態的web資源:內容不發生改變的資源 動態的web資源:內容可能發生改變的資源 資源的開發技術: 靜態的開發技術:html css 動態的開發技術:servlet jsp 軟件的架構: c/s:客戶端和服務器 例如:qq feiq b/s:瀏覽器和服務器 例如:網頁遊戲 網頁qq web通訊基於請求響應機制。 常見web服務器: 服務器:硬件服務器和軟件服務器 常見的web服務器: 服務器名稱 公司 特色 weblogic oracle 大型收費web服務器,支持javaee全部規範 websphere IBM 大型收費web服務器,支持javaee全部規範 tomcat apache 中小型免費web服務器,支持servlet和jsp規範 下載:apache 安裝:解壓zip文件 運行:D:\apache-tomcat-7.0.77\bin\startup.bat 雙擊 測試:localhost:8080 瀏覽器出現湯姆貓 常見問題: JAVA_HOME配置 端口衝突: a) 修改tomcat安裝目錄下conf文件夾中server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" IEncoding="utf-8" URIEncoding="UTF-8"/> 有時候,會把端口改爲80 b) 在cmd打開的窗口中輸入 netstat -aov 關閉: 方式1:關閉cmd窗口 方式2:執行命令 shutdown.bat 方式3:ctrl+c tomcat目錄結構: bin:存放可執行程序的目錄 conf:存放配置文件的目錄 lib:存放tomcat運行和項目運行所需的jar包 logs:存放日誌文件的目錄,主要查看catalina temp:臨時文件 webapps: ☆項目存放的目錄 work:☆jsp運行時產生的java文件和字節碼文件 web項目目錄結構: myweb(目錄) | |---WEB-INF(目錄:經過瀏覽器訪問不到,可是能夠經過java程序訪問到。) | | | |--lib(目錄:存放項目所用的jar包) | |--classes(目錄:存放java文件對應的class文件) | |--web.xml(文件,項目的核心配置文件) | |---html js css | web項目部署(發佈項目):也叫虛擬目錄映射 方式1.將項目放在tomcat/webapps下便可(最經常使用) 方式2.修改tomcat/conf/server.xml 在125行左右 host標籤下,添加以下代碼(不推薦) <Context path="/項目名" docBase="項目的路徑"/> 例如: <Context path="/my" docBase="d:/myweb"/> 訪問路徑: localhost:8080/項目名/資源 例如:localhost:8080/my/html/1.html 方式3.在tomcat/conf/catalina/localhost下新建一個xml文件,文件的名稱即爲項目名稱 先寫xml文件,添加下面的代碼 <Context docBase="項目的路徑"/> 例如: <Context docBase="d:/myweb"/> 文件名稱爲m.xml 訪問的路徑: localhost:8080/m/html/1.html tomcat和eclipse整合 war包: 特色:tomcat能夠自動解壓war包 後綴名:.war包 方式1:經過eclipse 方式2:進入項目目錄,選擇全部文件,添加到壓縮文件,選擇zip格式,將後綴名改爲.war包 方式3:在cmd中進入項目目錄,運行 jar -cvf 名稱 .war */ http(理解) 超文本傳輸協議。 http協議的默認端口:80 http是一個無狀態的協議。 請求: 瀏覽器發送到服務器 組成部分:請求行 請求頭 請求體 請求行:請求信息的第一行 格式:請求方式 請求的資源路徑 協議/版本 例如:GET/javaee_day08/1.html HTTP/1.1 請求頭: 格式:key:value 重點: Cookie Referer(防盜鏈) IF-Modified-Since Accept-Encoding 請求體:和請求頭以前有一個空行 只有post請求才有請求體 get:localhost/web?username=zhangsan&password=1234 post:localhost/web 請求體中就會出現:username=zhangsan&password=1234 響應: 服務器返回瀏覽器 組成部分:響應行 響應頭 響應體 響應行: 響應信息第一行 格式:協議/版本 狀態碼 狀態碼的說明 例如:HTTP/1.1 200 OK 狀態碼: 1xx:正在處理 2xx:響應成功 3xx:還需進一步處理 常見的3xx: 302:跳轉 304:沒有修改,讀緩存 4xx:客戶操做錯誤 常見的404: 5xx:服務器錯誤 常見的500(代碼錯誤) 響應頭: 格式:key:value 重點: Set-Cookie Location:跳轉方向 Content-Type Refresh:刷新 Content-Disposition:上傳下載 響應體:響應體和響應頭之間有一行空行 就是頁面要顯示的內容