JavaWeb08-HTML篇筆記(一)
JDBC : * JDBC的概述: * JDBC:Java Database Connectivity * JDBC的API: * Connection:連接. * 獲得連接. * 執行事務的管理. * Statement: * 執行SQL語句. * int executeUpdate(String sql); * ResultSet executeQuery(String sql); * boolean execute(String sql); * ResultSet: * getXXX(int idx),getXXX(String name); * JDBC完成CRUD的操作: 連接池: * 自定義連接池:(了解) * 增強一個類中的某個方法有幾種方式: * 繼承: * 控制控制這個類的構造. * 裝飾者模式: * 增強的類和被增強類實現相同的接口. * 在增強類中獲得被增強的類引用. * 接口中方法過多,增強其中一個方法,其他方法都要重寫. * 動態代理: * 被增強的類實現了接口即可. * 編寫代碼的時候麻煩. * DBCP: * C3P0: DbUtils:工具類: * 使用DBUtils完成CRUD的操作
1.2 案例一:使用XML作為配置文件的方式完成模擬Tomcat.1.2.1 需求:
現在有一套頁面,這套頁面想被其他人訪問到.端口號可以進行修改的-(不修改源碼的基礎上).
1.2.2 分析:1.2.2.1 技術分析:
【Java基礎的網絡編程】
【XML的概述】
? 什麽是XML:
**** 允許用戶自定義標簽的!!! ? XML的作用: * 傳輸 和 存取數據. * 軟件的配置文件. ? XML的使用: * XML的語法. 【XML的語法】 ? XML的基本語法: * XML必須有關閉標簽 * 區分大小寫 * 屬性需要有引號 * 標簽必須正確嵌套. ? XML的文檔聲明 * 文檔聲明:通常出現在XML的第一行第一列的位置!!! * 寫法: * <?xml 屬性名=”屬性值” 屬性名=”屬性值” ...?> * version :必須的. 使用”1.0” * encoding :字符集. 是使用瀏覽器打開的時候采用的默認的字符集的編碼. * standalone :描述XML文檔是否需要依賴其他的文件. ? XML的註釋 * <!-- XML的註釋 --> ? XML的元素
- 元素(標簽)的命名規範:
***** 名稱中不能包含冒號(:)
? XML的屬性 - 屬性的名稱規範與元素一致.
***** 屬性需要使用引號!
? XML的特殊字符和CDATA區 - XML的特殊字符:
- XML的CDATA區:(CDATA:Character Data)
- <![CDATA[ 內容 ]]>
【XML的解析】
? XML的解析:從XML文檔中獲得想要的數據(通過代碼完成的.)
? XML的解析的方式(*****): - DOM解析:DOM:Document Object Model.
- SAX解析:Simple Api for XML.
- DOM和SAX的區別:
? 針對這兩種解析的方式,不同的公司提供了不同的API的實現. - JAXP :SUN公司提供的一套XML的解析的API.
- JDOM :開源組織提供了一套XML的解析的API-jdom.
- DOM4J :開源組織提供了一套XML的解析的API-dom4j.
- pull :主要應用在Android手機端解析XML.
? DOM4J的入門案例步驟: - 【步驟一】導入jar包.dom4j-1.6.1.jar
- 【步驟二】創建解析器
- 【步驟三】解析文檔獲得代表文檔的Document對象.
- 【步驟四】獲得跟節點.
- 【步驟五】從跟節點下查找其他的節點.
- 代碼實現:@Test
br/>@Test
- 獲得元素的內容:查詢的操作.
*/
public void demo1() throws Exception{
// 創建解析器
SAXReader reader = new SAXReader();
// 解析XML的文檔
Document document = reader.read("xml/demo1.xml");
// 獲得跟節點
Element root = document.getRootElement();
System.out.println(root.getName());
// 查找跟節點下的子節點. element() elements();
Element pElement = root.element("person"); // 查找的是第一個person元素
// root.elements("person").get(1); // 查找的是第二個person元素
Element nElement = pElement.element("name");
Element aElement = pElement.element("age");
Element sElement = pElement.element("sex");
System.out.println(nElement.getText());
System.out.println(aElement.getText());
System.out.println(sElement.getText());
}
? XPath:
- jaxen-1.1-beta-6.jar
- List document.selectNodes(String xPath);
- Node document.selectSingleNode(String xPath);
代碼:@Test
br/>@Test
-
DOM4J的XPath的寫法:
/
public void demo2() throws Exception{
// 創建解析器:
SAXReader reader = new SAXReader();
// 解析XML返回Document對象.
Document document = reader.read("xml/demo1.xml");
/List<Node> list = document.selectNodes("//name");
for (Node node : list) {
Element element = (Element) node;
System.out.println(element.getText());
}*/List<Node> list = document.selectNodes("//person[‘@id‘]"); for (Node node : list) { Element element = (Element) node; System.out.println(element.attributeValue("id")); }
}
1.2.3 代碼實現:
【步驟一】:將基礎班的Socket編寫的代碼復制到工程中.
【步驟二】:新建xml.在conf/server.xml
【步驟三】:使用DOM4J解析XML
public class MyServer {public static void main(String[] args) throws Exception {
// 解析XML:
// 創建解析器
SAXReader reader = new SAXReader();
// 解析XML文檔:
Document document = reader.read("conf/server.xml");
Element element = (Element)document.selectSingleNode("//Connector[‘@port‘]");
String port = element.attributeValue("port");
// ServerSocket 對象可以監聽端口
ServerSocket serversocket = new ServerSocket(Integer.parseInt(port));
while(true) {
Socket socket = serversocket.accept(); // 等待客戶端的連接請求,一旦有請求過來,就結束阻塞,返回客戶端對象
//System.out.println(socket.getInetAddress());
// 一旦有客戶來訪問, 就另開一個新線程去提供服務, main線程繼續等待下一個客戶的連接
new Thread(new MyService(socket)).start();
}
}
}
1.2.4 總結:1.2.4.1 XML的約束:
? XML的約束的額概述:
***** XML的約束的種類及區別?
- DTD 和 Schema :
- 區別:
1.DTD語法是自成一體的.Schema語法就是XML的語法.
2.Schema的語法就是XML的語法所以更容易被解析器所解析.
3.Schema支持名稱空間.
4.Schema有比DTD更加強大的語義和語法的約束.
? DTD的語法 :(了解)
- 區別:
DTD的引入方式:
- 內部的DTD:
<!DOCTYPE persons [
]>
- 外部的DTD:
- 一種本地DTD:
<!DOCTYPE persons SYSTEM "unknown.dtd"> - 一種網絡DTD:
<!DOCTYPE persons PUBLIC "//UNKNOWN/" "unknown.dtd">
- 一種本地DTD:
DTD的語法:
-
元素:
- <!ELEMENT 元素名 元素類型>
- 元素類型:
- EMPTY
- ANY
- 子元素
- 是否有序: 使用 逗號(,)或者豎線(|)表示.
- 出現的次數:?:零次或一次 +:一次或多次 *:零次或多次
- PCDATA
- 屬性:
- <!ATTLIST 元素名稱 屬性名稱 屬性的類型 屬性的約束>
- 屬性的類型:
- ID類型:表示屬性值需要是唯一的.
- CDATA類型:普通的字符串.
- 枚舉:
- 屬性的約束:
? Schema的語法:(了解)
<?xml version="1.0" encoding="UTF-8"?>
JavaWeb08-HTML篇筆記(一)
- 元素類型:
- <!ELEMENT 元素名 元素類型>