第8章WEB08-XML&Tomcat篇
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第8章WEB08-XML&Tomcat篇相关的知识,希望对你有一定的参考价值。
今日任务
? 通过XML作为配置文件完成模拟Tomcat的案例
? 安装Tomcat服务器发布一个WEB项目
教学导航
教学目标
了解XML的基本语法,并能够编写正确格式的XML.
了解XML的约束.
掌握XML的解析.
熟练掌握并使用tomcat发布一个web应用
了解HTTP协议及掌握HTTP协议中的常用的头信息.
教学方法
案例驱动法
1.1 上次课内容回顾:
JDBC :
- JDBC的概述:
- JDBC:Java Database Connectivity
- JDBC的API:
- Connection:连接.
- 获得连接.
- 执行事务的管理.
- Statement:
- 执行SQL语句.
- int executeUpdate(String sql);
- ResultSet executeQuery(String sql);
- boolean execute(String sql);
- 执行SQL语句.
- ResultSet:
- getXXX(int idx),getXXX(String name);
- Connection:连接.
- 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的属性 - 属性的名称规范与元素一致.
***** 属性需要使用引号!
? 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
/**
* 获得元素的内容:查询的操作.
*/
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:
* dom4j支持XPath的jar包.
* jaxen-1.1-beta-6.jar
* dom4j的XPath支持的API:
* List document.selectNodes(String xPath);
* Node document.selectSingleNode(String xPath);
* 代码:
@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的约束 :就是用来约束XML的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数.
- XML的约束 :用来规范XML的写法.
***** XML的约束的种类及区别?- DTD 和 Schema :
- 区别:
1.DTD语法是自成一体的.Schema语法就是XML的语法.
2.Schema的语法就是XML的语法所以更容易被解析器所解析.
3.Schema支持名称空间.
4.Schema有比DTD更加强大的语义和语法的约束.
? DTD的语法 :(了解)
- 区别:
- DTD 和 Schema :
-
DTD的引入方式:
- 内部的DTD:
<!DOCTYPE persons [
]>
- 外部的DTD:
- 一种本地DTD:
<!DOCTYPE persons SYSTEM "unknown.dtd"> - 一种网络DTD:
<!DOCTYPE persons PUBLIC "//UNKNOWN/" "unknown.dtd">
- 一种本地DTD:
- 内部的DTD:
- DTD的语法:
- 元素:
- <!ELEMENT 元素名 元素类型>
- 元素类型:
- EMPTY
- ANY
- 子元素
- 是否有序: 使用 逗号(,)或者竖线(|)表示.
- 出现的次数:?:零次或一次 +:一次或多次 *:零次或多次
- PCDATA
- 属性:
- <!ATTLIST 元素名称 属性名称 属性的类型 属性的约束>
- 属性的类型:
- ID类型:表示属性值需要是唯一的.
- CDATA类型:普通的字符串.
- 枚举:
- 属性的约束:
- 元素类型:
- <!ELEMENT 元素名 元素类型>
- 元素:
? Schema的语法:(了解)
<?xml version="1.0" encoding="UTF-8"?>
以上是关于第8章WEB08-XML&Tomcat篇的主要内容,如果未能解决你的问题,请参考以下文章