JavaWeb day5

表单提交方式

        使用 submit 提交

            <form>

                ......

                <input type="submit"/>

            </form>

           使用button提交

                function form1{

                var form1=document.getElementById("form1");

                form1.action="hello.html";

                form1.submit;

}

            使用超链接提交

                    <a href="hello.html?username=123456">使用超链接提交</a>

            onclick :鼠标点击事件

            onchange:改变内容(一般和select一起使用)

            onfocus:得到焦点( ie5、某些版本的ie6)

            onblur:失去焦点

xml 简介

eXtensible  Markup Language:可扩展标记型语言

标记型语言:html 是标记型语言

                      也是使用标签来操作

可扩展:

       html 里面的标签是固定,每个标签都有特定的含义

       标签可以自己定义,可以写中文的标签 <person></person>、<猫></猫>

xml用途

            html 是用于显示数据,xml 也可以显示数据(不是主要功能)

            xml 主要功能,为了存储数据

xml 是 w3c 组织发布的技术    

xml 有两个版本 1.0  1.1

    

xml应用

不同的系统之间传输数据

            qq之间数据的传输

            画图分析过程

用来表示生活中有关系的数据

 经常用在配置文件

             比如现在连接数据库 肯定知道数据库的用户名和密码,数据名称

            如果要修改数据库信息,不需要修改源代码,只需要修改配置文件就可以了。

xml的语法

1.xml 的文档声明

创建一个文件 后缀名为 .xml

如果写 xml ,第一步 必须要有一个文档声明(写了文档声明之后,表示写xml文件的内容)

            <?xml verson="1.0"?>

属性

      verson:xml的版本 1.0   1.1

       encoding:xml编码 gbk utf-8 iso8859-1

        standalone:是否需要依赖其他文件  yes/no

xml中文乱码问题


2.定义元素

3.定义属性

4.注释

5.特殊字符

6.CDATA

7.PI指令

xml的元素定义

标签定义

        标签定义有开始必须要有结束:  <person></person>

        标签没有内容,可以在标签内结束; </a>

        标签可以嵌套,必须要合理嵌套

                        合理嵌套<aa><bb></bb></aa>

                        不合理嵌套<aa><bb></aa></bb>

         一个 xml中只有一个根标签,其他标签都是都是这个标签下面的标签

          xml 中把空格和换行都当成内容来解析

                          下面两段代码的含义是不相同的

                          <aa>11111</aa>

                           <aa>

                                111111

                            </aa>

            xml标签可以是中文

            xml中标签的名称规则

                    1.xml代码区分大小写

                    2.xml的标签不能以数字,下划线开头

                    3. xml的标签不能以 xml XML Xml  开头

                                <xmla>,<XMLb><XMLC> 这些都不正确

                     4. xml的标签不能包含空格和冒号

                                <a b><b:c>  这些都是不正确的

xml中属性的定义

            html是标记型文档,可以有属性

            xml也是标记型文档,可以有属性

属性定义的要求

                1.一个标签上可以有多个属性

                2.属性名称不能相同

                3.属性名称和属性值之间使用=,属性值使用引号包起来(可以是单引号,也可以是双引号)

                4.xml属性的名称规范和元素的名称规范一致

xml中的注释

      写法<!---xml的注释----->

            注意的地方

                        注释不能嵌套

             注释也不能放到第一行,第一行第一列必须放文档声明

xml中的特殊字符

                如果想要在xml中体现a<b,不能正常显示,因为把<当作标签

                如果就想要显示,需要对特殊字符 < 进行转译


CDATA区    

          可以解决多个字符都需要转译的操作

           把这些内容放到CDATA区里面,不需要转译了

            写法

                    <![CDATA[内容  ]  ]>

            把特殊字符,当做文本内容,不是标签

PI指令

            可以在xml中设置样式

            写法<?xml-stylesheet  type="text/css" href="css的路径"?>

            设置样式,只能对英文标签名起作用,对于中文的标签名称不起作用的

            xml的语法总结

                    所有的XML元素都须有关闭标签

                    xml标签对大小写敏感

                    xml必须正确的嵌套顺序

                    xml文档必须有根元素(只有一个)

                    xml的属性值需加引号

                    xml中的空格,回车换行会解析时被保留

xml的约束

    xml的约束技术    :dtd约束和  schema约束

dtd的快速入门

                创建一个文件  后缀名 .dtd

                步骤

                        (1)看 xml 中有多少个元素,有几个元素就在 dtd 里面写几个 <!ELEMENT>

                        (2)判断元素是简单元素还是复杂元素

                                        简单元素:没有子元素

                                               <!ELEMENT 元素名称 (#PCDATA)>

                                        复杂元素:有子元素的元素

                                            <!ELEMENT 元素名称 (子元素)>

                         (3)需要在 xml 文件中引入 dtd 文件

                                        <!DOCTAPE 根元素名称  SYSTEM  “dtd 文件的路径”>

                打开 xml 文件只要用浏览器打开,浏览器只是校检 xml 的语法,不负责校检约束

                如果要校检 xml 的约束,需要使用工具

dtd的三种引入方式

          1.引入外部的dtd文件

                    <!DOCTYPE 根元素名称  SYSTEM "dtd路径">

           2.使用内部的dtd文件

                    <!DOCTYPE 根元素名称 [

                            <! ELEMENT person (name,age)>

                            <! ELEMENT name (#PCDATA)>

                            <! ELEMENT name (#PCDATA)>

                    ]>

                          

              3.使用外部的dtd文件 (网络上的dtd文件)

                      <! DOCTYPE 根元素 PUBLIC "DTD名称" "DTD 文档的 URL">

使用dtd定义元素

          语法:   <!ELEMENT   元素名   约束>

           简单元素:没有子元素的元素

                    <!ELEMENT name (#PCDATA)>

                                (#PCDATA) :约束 name 是字符串类型

                                EMPTY:元素为空(没有内容)

                                ANY :任意

            复杂元素:

                        <! ELEMENT 元素名称(子元素)>

                            表示元素出现的次数

                                             + : 表示一次或者多次

                                            ?:表示零次或者一次

                                             * :表示零次或者多次

                        子元素直接用逗号进行隔开

                                表示元素出现的顺序

                        子元素直接使用|隔开

                                表示元素只能出现其中的任何一个

使用dtd定义属性

语法: <!ATTLIST   元素名称

                            属性名称   属性类型   属性的约束

            >

属性类型:

            CDATA:字符串

            枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个

                            <!ATTLIST age

                                    ID2  (AA|BB|CC)  #REQUIRED

                               >

              ID:值只能是字母或者下划线开头

                            <!ATTLIST name

                                    ID3 ID    #REQUIRED

                               >

属性的约束

                1. #REQUIRED :属性必须存在

                2.# IMPLIED:属性可有可无

                3.#FIXED:表示一个固定值    #FIXE “AAA”

                               属性的值必须是设置的这个固定值

                4.直接值

                            不写属性,使用直接值

                            写了属性,使用设置那个值

                            <!ATTLIST school

                                           ID5  CDATA  "WWW"

                            >

定义实体

    语法:<!ENTITY 实体名称 “实体的值”>

                        <ENTITY TEST "HAHAHEHE">

                使用实体  &实体名称;比如:&TEST;

注意:

                定义实体需要写在内部 dtd 里面

                如果写在外部 dtd 里面,某些浏览器下,内容得不到

xml的解析的简介

        xml是标记型文档

        js 使用 dom 解析标记型文档?

                    根据 html 的层级结构,在内存中分配一个树形结构,把 html 的标签,属性和文本都封装成对象

                    document 对象、element对象、属性对象、文本对象、Node 节点对象

xml 的解析方式(技术):dom 和 sax


                         dom 方式解析

                                     根据xml 层级结构在内存中分配一个树形结构,把 xml 的标签 ,属性和文本都封装成对象

                                    缺点:如果文件过大,造成内存溢出

                                    优点:很方便实现增删改操作

                        sax方式解析

                                    采用事件驱动,边读边解析

                                            从上到下,一行一行的解析,解析到某一个对象,返回对象名称

                                     缺点:不能实现增删改操作

                                    优点:如果文件过大,不会造成内存溢出,方便实现查询操作

          想要解析xml,首先需要解析器

                不同的公司和组织提供了 针对dom和sax方式的解析器

                sun公司提供了针对dom和sax解析器  jaxp

                dom4j组织,针对dom和sax解析器   dom4j

                jdom组织,针对dom和sax解析器    jdom

jaxp的api查看

        jaxp 是 javase 的一部分

        jaxp 解析器在 jdk 的javax.xml.parsers 包里面

                    四个类:分别是针对 dom和 sax 解析使用的类    

                           dom:

                                DocumentBuilder:解析器类

                                        这个类是一个抽象类,不能 new

                                        此类的实例可以从 DocumentBuilderFactory.newDocumentBuilder() 方法获取

                                        一个方法,可以解析xml parse("xml路径")  返回是 Document整个文件

                                        返回的document是一个接口,父节点是Node,如果在document里面找不到想要的方法,到Node里面去找

                                        在document里面方法

                                                     getElementsByTagName(String     tagname)

                                                                    这个方法可以得到标签

                                                                    返回集合  NodeList

                                                        createElement(String tagName)

                                                                    创建标签

                                                        createTextNode(String     data)

                                                                      创建文本

                                                        appendChild(Node newChild)

                                                                        把文本添加到标签下面

                                                        removeChild(Node oldChild)

                                                                            删除节点

                                                        getParentNode()

                                                                            获取父节点

                                                        NodeList

                                                                getLength()  得到集合的长度

                                                                item(int     index)下标取到具体的值

                                                                                     

                                DocumentBuilderFactory:解析器工厂

                                        这个类也是一个抽象类,不能new

                                        newInstance() 获取DocumentBuilderFactory的实例

                        sax:

                                SAXParser:解析器类

                                SAXParserFactory:解析器工程

使用jasp实现查询操作

                    查询xml中所有name元素的值

                    步骤

                    1.创建解析器工厂

                        DocumentBuildertory .newInstance ();

                    2.根据解析器工厂创建简析器

                        BuilderFactory.newDocumentBuilder();

                    3.解析 xml 返回 document

                        Document document=builder.parse("src/person.xml);

                    4.得到所有的 name 元素

                        document.getElementsTagName("name");

                    5.返回集合,遍历集合,得到每一个 name 元素

                            遍历 getLength()  item()

                             得到元素里面值使用  getTextContent

                查询 xml 中所有 name 元素的值

                步骤:

                1.创建解析器工厂

                2.根据解析器工厂创建解析器

                3.解析 xml ,返回 document

                4.得到所有的 name 元素

                5.使用返回集合,里面方法 item,下标获取具体的元素

                            NodeList.item(下标):集合下标从零开始

                 6.得到具体的值,使用 getTextContent 方法

使用jasp添加节点

            在第一个p1下面(末尾)添加<sex>nv</sex>

            步骤

                  1.创建解析器工厂    

                   2.根据解析器工厂创建解析器

                   3.解析 xml ,返回 document

                    4.得到第一个 p1

                            ——得到所有 p1 ,使用 item 方法下标得到

                    5.创建 sex 标签 createTextNode

                    6.创建文本 createTextNode

                    7.把文本添加到 sex 下面 appendChild

                    8.把 sex 添加到第一个 p1 下面 appendChild

                    9.回写 xml

使用jasp修改节点

                        修改第一个p1下面的sex内容是nan    

                        步骤

                        1.创建解析器工厂

                        2.根据解析器工厂创建解析器

                        3.解析xml,返回document

                        4.得到sex item方法

                        5.修改sex里面的值

                        6.回写xml

使用jasp删除节点

                    删除<sex>nan</sex>节点

                    步骤

                    1.创建解析器工厂

                    2.根据解析器工厂创建解析器

                    3.解析 xml ,返回 document

                    4.获取 sex 元素

                    5.获取 sex 的父节点 使用 getParentNode 方法

                    6.删除使用父节点  removechild 方法

                    7.回写 xml

使用jasp遍历节点

                        步骤:

                        1.创建解析器工厂

                        2.根据解析器工厂创建解析器

                        3.解析 xml ,返回 document

                        4.得到根节点

                        5.得到根节点子节点

                        6.得到根节点子节点的子节点

                        遍历的方法:

                    private  static  void  list1(Node node){

                        


                }

                        

            

            

                

                

            

                        

                

        

    

推荐阅读更多精彩内容

  • 1.表单提交方式 使用 submit 提交 使用 button 提交表单 使用超链接提交 onclick :鼠标点...
    定格r阅读 155评论 0 0
  • React中没有类似Angular那样的双向数据绑定,在做一些表单复杂的后台类页面时,监听、赋值、传递、校验时编码...
    tedyuen777阅读 8,826评论 1 23
  • 一、表单基础知识 在 JavaScript 中,表单对应的是 HTMLFormElement 类型。 HTMLFo...
    LemonnYan阅读 374评论 0 2
  • HTML表单HTML表单用于搜集用户输入HTML表单常用属性及说明:属性描述accept-charset规定在被提...
    Lv_0阅读 146评论 0 1
  • 1、在HTML中,表单是由 元素来表示的,而在JavaScript中,表单对应的则是HTMLFormElement...
    Wonder233阅读 196评论 0 0