A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangxuchang 初级黑马   /  2018-5-21 15:16  /  542 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-5-23 14:35 编辑

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:DocumentObject Model.
* SAX解析:SimpleApi 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
    /**
     * 获得元素的内容:查询的操作.
     */
    publicvoid 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:
    * Listdocument.selectNodes(String xPath);
    * Nodedocument.selectSingleNode(String xPath);
* 代码:
    @Test
    /**
     * DOM4J的XPath的写法:
     */
    publicvoid 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) {
            Elementelement = (Element) node;
            System.out.println(element.getText());
        }*/
        
        List<Node> list =document.selectNodes("//person['@id']");
        for (Node node : list) {
            Elementelement = (Element) node;
            System.out.println(element.attributeValue("id"));
        }
    }
1.1.1    代码实现:
【步骤一】:将基础班的Socket编写的代码复制到工程中.
【步骤二】:新建xml.在conf/server.xml
【步骤三】:使用DOM4J解析XML
public class MyServer {
   
    publicstatic 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 = newServerSocket(Integer.parseInt(port));
        while(true) {
            Socketsocket = serversocket.accept();  // 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象
            //System.out.println(socket.getInetAddress());
            // 一旦有客户来访问, 就另开一个新线程去提供服务, main线程继续等待下一个客户的连接
            newThread(new MyService(socket)).start();
        }
    }
}
1.1.2    总结:1.1.2.1  XML的约束:
Ø  XML的约束的额概述:
* 什么是XML的约束    :就是用来约束XML的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数.
* XML的约束         :用来规范XML的写法.
***** XML的约束的种类及区别?
     *DTD Schema :
         * 区别:
             1.DTD语法是自成一体的.Schema语法就是XML的语法.
             2.Schema的语法就是XML的语法所以更容易被解析器所解析.
             3.Schema支持名称空间.
             4.Schema有比DTD更加强大的语义和语法的约束.
Ø  DTD的语法   :(了解)
* DTD的引入方式:
     * 内部的DTD:
    <!DOCTYPEpersons [
   
    ]>
     * 外部的DTD:
         * 一种本地DTD:
         <!DOCTYPEpersons SYSTEM "unknown.dtd">
         * 一种网络DTD:
         <!DOCTYPEpersons PUBLIC "//UNKNOWN/" "unknown.dtd">
* DTD的语法:
     * 元素:
         *<!ELEMENT 元素名 元素类型>
            * 元素类型:
                 * EMPTY
                * ANY
                * 子元素
                    * 是否有序: 使用 逗号(,)或者竖线(|)表示.
                    * 出现的次数:?:零次或一次 +:一次或多次 *:零次或多次
                * PCDATA
    * 属性:
        *<!ATTLIST 元素名称 属性名称属性的类型 属性的约束>
            * 属性的类型:
               * ID类型:表示属性值需要是唯一的.
               * CDATA类型:普通的字符串.
               * 枚举:
            *属性的约束:
Ø  Schema的语法:(了解)
<?xml version="1.0"encoding="UTF-8"?>
<!--
    名称空间:一个XML只能引入一个DTD约束文档.使用了Schema约束XML文档,一个XML可以引入多个Schame的约束!!!
                      如果再多个Schema文档中定义了相同的属性名称 该怎么办?
      * 名称空间类似于java中的package.通过名称空间区分 标签或属性来自于哪个文档的!!!通常名称空间唯一的不重复的即可.一般情况下使用一个URL地址表示一个名称空间.
      
    xmlns               :xmlname sapace .代表当前的文档应用的名称空间.
    targetNameSpace     :目标名称空间.
    elementFormDefault  :
-->
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itheima.com/ee25"
elementFormDefault="qualified">
    <!-- 复杂标签 -->
    <elementname="persons">
        <!-- 复杂类型 -->
        <complexType>
            <sequencemaxOccurs="unbounded" minOccurs="1">
                <element name="person">
                    <complexType>
                        <sequence>
                            <!--简单标签 -->
                            <elementname="name" type="string"></element>
                            <elementname="age" type="int"></element>
                            <elementname="sex" type="string"></element>
                        </sequence>
                        <attribute name="id"type="string" use="required"/>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
1.2      案例二:使用Tomcat发布一个WEB项目.1.2.1    需求:
有一个web项目,需要通过tomcat服务器被其他人访问到.
1.2.2    分析:1.2.2.1  技术分析:
【软件的架构】
Ø  C/S架构的软件:
* Client / Server 客户端和服务器端的软件. 都是需要在PC端安装的软件. 比如 QQ,迅雷,暴风...
* 优点:效果炫,一部分代码写到客户端(速度快).
* 缺点:服务器端更新,客户端都需要更新.
Ø  B/S架构的软件:
* Browser / Server 浏览器端和服务器端的软件. 不需要安装到PC端,只需要有一个浏览器即可. 比如 京东,网银,WEBQQ,WEB迅雷...
* 优点:服务器端更新,客户端浏览器不需要进行更新.
* 缺点:效果不炫,所有的代码运行都在服务器端,导致服务器压力过大.
    * 效果:使用HTML5,CSS3可以做出很炫效果.
    * 服务器端压力:搭建服务器的集群.而且还有AJAX技术.
【WEB的资源】
Ø  静态资源:
* HTML,CSS,JS,图片...
Ø  动态资源:
* PHP           :
* ASP           :
* Servlet/JSP   :
【服务器】
Ø  硬件:其实就是一台配置很高的电脑.
Ø  软件:必须在一台电脑上安装服务器软件.这台电脑称为是WEB服务器.
【常见WEB服务器】
Ø  Apache      :发布PHP的.LAMP:Linux Apache MySQL PHP.
Ø  IIS         :发布ASP的.
Ø  WebSphere   :IBM公司研发,收费的大型服务器软件,支持EE的所有的开发规范.
Ø  WebLogic    :BEA公司研发,收发的大型服务器软件,支持EE的所有的开发规范.
Ø  Tomcat      :Apache组织研发,免费的小型的服务器软件,支持Servlet/JSP的开发规范.
Ø  JBoss       :
【WEB动态资源目录结构】
website
    |-----静态资源
   |-----WEB-INF
               |-----web.xml :必须的
                |-----classes :可选的
               |-----lib     :可选的
1.2.3    案例实现:1.2.3.1  Tomcat的安装:
【下载Tomcat】
【安装Tomcat】
解压即可.
【了解Tomcat的目录结构】

* bin       :tomcat的执行的文件.
* conf      :tomcat的配置文件.
* lib       :tomcat运行的需要的jar包.
* logs      :tomcat的运行的日志文件.
* temp      :tomcat产生临时文件存放的路径.
* webapps   :tomcat发布的web项目的路径.
* work      :tomcat运行JSP的时候,JSP翻译成Servlet的代码存放的路径.
1.2.3.2  发布一个WEB项目到Tomcat中.
Ø  发布一个WEB工程到Tomcat中共有三种方式:
* 1.直接将工程copy到tomcat/webapps下.
* 2.配置tomcat虚拟路径:
* 3.配置tomcat虚拟路径:
【方式一:直接将项目copy到webapps下】
* 将工程复制到webapps即可.
【方式二:配置tomcat的虚拟路径-不推荐】
* 在tomcat/conf/server.xml文件中进行配置:
* 在<Host>标签下配置:
    *<Context path="/itheima" docBase="C:/website"/>
【方式三:配置tomcat的虚拟路径-推荐】
* 在tomcat/conf/Catalina/localhost/xxx.xml
* 配置<ContextdocBase="C:/website"/>
* xxx作为虚拟路径的名称.
1.2.4    总结:1.2.4.1  使用STS工具发布一个WEB工程.
1.2.4.2  Tomcat常见问题:
【没有配置JAVA_HOME引发tomcat一闪消失】
* 一定要配置JAVA_HOME环境变量.
【端口号冲突的问题】
* 一种:将占用端口的应用结束.
    * netstat-ano
    * 打开任务管理器结束:
* 二种:修改自身应用的端口号.
    *tomcat/conf/server.xml

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马