XML&tomcat

2019-04-20  本文已影响0人  hgzzz

XML

  1. XML:eXtendsible markup language 可扩展的标记语言。
  2. 用途:
    • 保存数据
    • 用来做配置文件
    • 数据传输载体
  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" ?>
  1. 编码问题:文档声明中的字符编码意为解析xml中的文字的时候,使用什么编码来翻译,所以要正常显示中文,存文件和解析文件的编码应该一致。比如,电脑默认编码是GBK存储,所以encoding也要是GBK 或 gb2312。建议使用utf-8
  2. 书写规范
    • 元素定义(标签):其实就是里面的标签, <> 括起来的都叫元素 。 成对出现
    • 文档声明下来的第一个元素叫做根元素 (根标签)
    • 标签里面可以嵌套标签
    • 可以写空标签
    • 标签可以自定义
    • 注释 与html的注释一样。
    • 非法字符 < &使用实体 &lt; &amp;
<?xml version="1.0" encoding="utf-8" ?>
<stus>
    <stu id="1">
        <name>zhangsan</name>
        <age>24</age>
    </stu>
    <stu id="2">
        <name>lisi</name>
        <age>25</age>
    </stu>
</stus>
  1. 解析 XML:获取元素里面的字符数据或者属性数据。
    • 如果某段字符串里面有过多的字符, 并且里面包含了类似标签或者关键字的这种文字,不想让xml的解析器去解析。 那么可以使用CDATA来包装。 不过这个CDATA 一般比较少看到。 通常在服务器给客户端返回数据的时候。
      <des><![CDATA[<a href="http://www.baidu.com">我爱黑马训练营</a>]]></des>
    • 解析方式
      a. DOM
      b. SAX


      parse_type.png

      针对以上两种解析方式, 给出的解决方案有哪些?

jaxp  sun公司。 比较繁琐
jdom
dom4j  使用比较广泛
  1. dom4j的使用
    • 导入 jar 包
    • 创建SaxReader对象
    • 指定解析的xml
    • 获取根元素。
    • 根据根元素获取子元素或者下面的子孙元素
public class MainTest {
    public static void main(String[] args) {
        try{
            // 1. 创建sax读取对象
            SAXReader saxReader = new SAXReader();
            // 2. 指定解析的xml源
            Document document = saxReader.read(new File("src/com/xml/stus.xml"));
            //3. 得到元素
            Element rootElement = document.getRootElement();
            List<Element> elements = rootElement.elements();
            //遍历所有的stu元素
            for (Element element:elements) {
                String name = element.element("name").getText();
                String age = element.element("age").getText();
                System.out.println(name + age);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  1. Xpath的使用:xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。
    • 引入 jar 包
    • 在查找指定节点的时候,根据XPath语法规则来查找
    • 后续的代码与以前的解析代码一样。
  2. XML约束
    • DTD:语法自成一派, 早就出现的。 可读性比较差。
1. 引入网络上的DTD

   <!-- 引入dtd 来约束这个xml -->

    <!--    文档类型  根标签名字 网络上的dtd   dtd的名称   dtd的路径

    <!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd"> -->

1. 引入本地的DTD

   <!-- 引入本地的DTD  : 根标签名字 引入本地的DTD  dtd的位置 -->
   <!-- <!DOCTYPE stus SYSTEM "stus.dtd"> -->

2. 直接在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 : 属性的值必须唯一
    约束文档:
    <!-- 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>
                 <!-- maxOccurs:出现次数 -->
                <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>
<name>张三</name>
<!-- aa 和 bb 表示两种不同的Schema约束规则-->
<aa:name></aa:name>
<bb:name></bb:name>

tomcat

  1. 程序架构
  1. 常见服务器
    Tomcat apache
    WebLogic BEA
    Websphere IBM
    IIS 微软
  2. 安装Tomcat
    a. 直接解压 ,然后找到bin/startup.bat,启动之后,如果能够正常看到黑窗口,表明已经成功安装,在浏览器的地址栏上输入 : http://localhost:8080 , 如果有看到内容 就表明成功了。
    b. 如果双击了startup.bat, 看到一闪而过的情形,一般都是 JDK的环境变量没有配置。
bin: 包含了一些jar ,  bat文件 。  startup.bat
conf:tomcat的配置  server.xml  web.xml
lib :tomcat运行所需的jar文件
logs:运行的日志文件
temp:临时文件
webapps:发布到tomcat服务器上的项目,就存放在这个目录。  
work:jsp翻译成class文件存放地
  1. 如何把一个项目发布到tomcat中
    a. 拷贝这个文件到webapps/ROOT底下, 在浏览器里面访问
    b. 通过配置文件配置虚拟路径
    在server.xml这个文件里面的Host节点中写入下内容<Context docBase="D:\xml02"></Context>
    
上一篇 下一篇

猜你喜欢

热点阅读