zoukankan      html  css  js  c++  java
  • XML&Tomcat

    1. XML

    英文:extendsible markup language:可扩展的标记语言

    用途:

    1. 可以用来保存数据

    2. 可以用来做配置文件

    3. 数据传输载体

    结构:倒状树形结构

    定义xml:后缀:.xml

    1. 文档申明

      简单申明: version :解析这个xml的时候,使用什么版本来解析

      <? xml version = "1.0" ?>

      encoding:解析xml中的文字时,使用什么编码来翻译

      <? xml version = "1.0" encoding = "gbk" ?>

      standalone:no:该文档依赖关联其他文档,yes:这是一个独立的文档

      <? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>

    2. encoding 详解

      在解析这个xml的时候,使用什么编码来解析

      使用notepad++保存文件的编码格式是utf-8,为了通用,建议使用Utf-8

      windows默认的是gbk

    3. 元素定义:标签

      里面的标签,<>括起来就是元素,成对出现

      文档声明的第一个元素叫做根元素

      标签里面可以嵌套标签

      标签可以自定义,尽可能的简单,见名知义

    4. 简单元素&复杂元素

      简单元素:元素里面包含了普通的文字

      复杂元素:元素里面还可以嵌套其他的元素

    5. 属性的定义

      定义在元素的里面,<元素名称  属性名称=“属性的值”>

    <?xml version="1.0" encoding="UTF-8"?>
    <stus>
        <stu id = 1>
            <name>wangjing</name>
            <password>2015141452156</password>
        </stu>
        <stu id = 2>
            <name>wj</name>
            <password>2015141452153</password>
        </stu>
    </stus>

    6. xml的注释

      <!--  -->:xml的注释,不能够放在文档的第一行,必须要放在声明的下面

    7. CDATA区

    严格来说,在XML中仅有<和&是非法的,省略号,引号,大于号是合法的,但是换成实体引用是一个好习惯

    >:&gt;

    <:&lt;

    &:&amp;

    如果某段字符串中有过多的字符,并且包含了类似的标签或者关键字这种文字,不想让xml的解析器去解析,那么可以用CDATA来包装,不过很少看到,通常在服务器返回数据时候。

    <des><![CDATA[<a href = "http://www.baidu.com">黑马</a>]]></des>

    8. XML解析

    有很多种,但是常用只有两种

    DOM:document objet model 解析将所有的文档读入到内存中,形成树状结构,整个文档称为document对象,属性对应Attribute对象,所有的元素节点对应Element对象,文档也可以称之为Text对象,以上所有的对象都可以称之为Node节点。如果xml特点大,那么会造成内存溢出。可以对文档进行增删操作。

    SAX:Simple API for Xml基于事件驱动。读取一行,解析一行,不会造成内存溢出。不可以进行增删,只能查询。

    一些组织或者公司,针对以上两种解析方式,给出的解决方案有哪些

    jaxp:sun公司,比较繁琐

    jdom:

    dom4j:使用比较广泛

    9. Dom4j基本用法

    a. 创建Sax读取对象

    b. 指定解析的xml

    c. 获取根元素

    d. 根据根元素获取子元素或者下面的子孙元素

    element():返回该元素下的第一个子元素

    elements():返回该元素下的所有子元素

    public class MainTestSAX {
        public static void main(String[] args){
            try{
                // 1. 创建sax对象
                SAXReader reader = new SAXReader();
                // 2. 指定解析的xml源
                Document document = reader.read(new File("src/xml/demo.xml"));
                // 3. 得到元素
                Element rootElement = document.getRootElement();
                // 4. 获取根元素下面所有的子元素,stu元素
                List<Element> elements = rootElement.elements();
                // 5. 遍历所有的stu元素
                for(Element element : elements){
                    String name = element.element("name").getText();
                    String password = element.element("password").getText();
                    System.out.println("name:" + name + ",password:" + password);
                }
            } catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    10. dom4j的Xpath的使用

    1. dom4j里面支持Xpath的写法,xpath其实是xml

    2. 步骤

      a. 添加jar包依赖 jaxen-1.1-beta-6.jar

      b. 在查找指定的节点时,根据xpath语法规则来查找

      c. 后续的代码与前面的代码一致

    public class XpathTest {
        public static void main(String[] args) {
            try {
                // 1。 创建sax对象
                SAXReader reader = new SAXReader();
                // 2. 指定解析的xml源
                Document document = reader.read(new File("src/xml/demo.xml"));
                // 3. 得到元素
                Element rootElement = document.getRootElement();
                // 4. 如果使用xpath,必须引入相应的jar包 jaxen-1.1-beta-6.jar
                Element nameElement = (Element)rootElement.selectSingleNode("//name");
                System.out.println(nameElement.getText());
                // 5. 获取文档中所有的元素
                List<Element> list = rootElement.selectNodes("//name");
                for(Element element : list){
                    System.out.println(element.getText());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    11. XML约束

     DTD:语法自成一派,早期出现,可读性比较差

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 引入dtd来约束这个xml -->
    
    <!-- 文档类型    跟标签名字    网络上的dtd    dtd的名称    dtd的路径 
    <!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd"> -->
    
    <!-- 引入本地的DTD
    <!DOCTYPE stus SYSTEM "stus.dtd"> -->
    
    <!-- 直接在xml中加入DTD文档约束 -->
    <!DOCTYPE stus [
        <!ELEMENT stus (stu)>
        <!ELEMENT stu (name,password)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT password (#PCDATA)>
    ]>
    
    <stus>
    <!-- 这里是两个学生的基本信息 -->
        <stu>
            <name>wangjing</name>
            <password>2015141452156</password>
        </stu>
    <!--     <stu>
            <name>wagnjian</name>
            <password>2015141452153</password>
        </stu> -->
    <!--     <des><![CDATA[<a href = "http://www.baidu.com">黑马</a>]]></des> -->
    </stus>
    <!ELEMENT stus (stu)+>:stus下面有一个或者多个元素
    <!ELEMENT stu (name, password)>:stu下面有两个元素
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT password (#PCDATA)>
    <!ATTLIST stu id CDATA #IMPLIED>stu有一个属性,文本类型,可有可无
    元素的个数
    +:一个或者多个
    *:零个或者多个
    ?:两个或者一个
    属性的类型定义
    CDATA:属性必须是普通文字
    ID:属性的值必须唯一
    name | password:两个中只能包含一个子元素

    Schema:其实就是一个xml,使用xml的语法规则,xml解析起来比较方便,为了替代DTD,但是Schema约束文本内容比DTD的内容还要多,所以目前也没有真正的替代DTD

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 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>
                <sequence maxOccurs = "2">    <!-- "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"?>
    <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>wangjing</name>
            <age>20</age>
        </teacher>
        <teacher>
            <name>wangjjun</name>
            <age>20</age>
        </teacher>
    </teachers>

    名称空间的作用:一个xml指定它的约束规则,假設使用的是DTD,那么只能指定一个DTD,不能指定两个,但是如果一个xml的约束在schema里面,那么可以指定多个shema约束。多个时候需要指定元素使用的是那个约束规则。

    有点类似java代码中的包名:函数名

    名称空间的作用在于写元素时候,可以指定该元素使用的是哪一套约束规则。

    <aa:name></aa:name>
    <bb:name></bb:name>

    2. 程序架构

    1. c/s(client/server):有一部分的代码卸载客户端,用户的体验比较好

    缺点:服务器更新,客户端也需要更新,占用的资源比较大

    2. B/S(browser/server):客户端只需要有浏览器就好,不需要更新

    缺点:用户的体验不佳。

    3. web服务器

    客户端在浏览器的地址栏上输入地址,然后web服务器软件,接收请求,处理客户端的请求,返回资源,信息

    web应用需要服务器支撑:index.html

    WebLogic:BEA

    Websphere:IBM

    IIS:微软

    Tomcat:apache:

    直接解压,找到startup.bat,双击即可安装,如果一闪而过,则jdk的环境变量出现了问题。

    bin:包含了一些jar,bat文件,startup.bat

    conf:tomcat配置,server.xml web.xml

    lib:tomcat运行时所需的jar文件

    logs:运行时的日志文件

    temp:临时文件

    webapps:发布到tomcat服务器上的项目,存放在这个目录

    work:jsp翻译成java文件存放地

    访问另一个电脑文件的方法:

    1. 将文件放到webapps目录下新建一个文件夹,重启tomcat,localhost:8080/文件夹名称/文件名

    或者直接放到root目录下,localhost:8080/文件名

    使用IP地址;访问:IP地址名:8080/文件夹名/文件名

    2. 虚拟路径:使用localhost:8080打开tomcat首页,在左侧找到tomcat文档入口,点击进去以后,在左侧的configuration,再点击context,找到server.xml,用记事本打开,在host下面添加

    <Context docBase = "D:Development_Toolapache-tomcat-7.0.52webappsxml" path = "/myxml"></Context>
    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
                <Context docBase = "D:Development_Toolapache-tomcat-7.0.52webappsxml" path = "/myxml"></Context>
            <!-- SingleSignOn valve, share authentication between web applications
                 Documentation at: /docs/config/valve.html -->
            <!--
            <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
            -->
    
            <!-- Access log processes all example.
                 Documentation at: /docs/config/valve.html
                 Note: The pattern used is equivalent to using pattern="common" -->
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    
          </Host>

    docBase:项目的路径地址

    path:对应的虚拟路径,一定要以/开头

    采用http://localhost:8081/myxml/person.xml的方式访问

    3. 在D:Development_Toolapache-tomcat-7.0.52confCatalinalocalhost目录下新建person.xml文件

    <?xml version='1.0' encoding='utf-8'?>
    <Context docBase = "D:Wet_Downloadxml"></Context>

    采用http://localhost:8081/people/person.xml的方式访问

    MyEclipse如何配置tomcat

    开启MyEcliipse Tomcat v8.5,点击工程名,选择run as Myeclipse Server Application,再利用http://localhost:8082/JAVA/wang.html即可访问

  • 相关阅读:
    jdk动态代理
    mysql-索引方案
    闭包的有点以及出现的内存泄露2016/4/12
    表单2016/4/8
    cursor
    同一个事件绑定不同的函数
    a:link visited hover active
    对于属性操作,加入属性,移除属性
    offset获取位置
    清除浮动6中方法
  • 原文地址:https://www.cnblogs.com/feng-ying/p/9787558.html
Copyright © 2011-2022 走看看