动态网页开发;Java Web概述

了解XML的概念
掌握XML语法
掌握DTD约束
掌握Schema约束
了解C/S体系架构与B/S体系架构
熟悉Tomcat的安装与启动
掌握在IntelliJ IDEA中配置Tomcat服务器的方法
Java Web是使用Java技术解决相关Web互联网领域的技术栈,开发一个完整的Java Web项目涉及到静态Web资源、动态Web资源的编写以及项目的部署。在Java Web中,静态Web资源开发技术包括HTML、CSS、JavaScript、XML等;动态Web资源开发技术包括JSP/Servlet等。本节将针对Java Web开发所用到的XML技术以及项目部署服务器Tomcat进行详细地讲解。

一、 XML基础
(一)XML概述
目标:了解XML的概念,能够知道HTML用于做什么
1、XML
XML是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言。XML用于提供数据描述格式,适用于不同应用程序之间的数据交换,而且这种交换不以预先定义的一组数据结构为前提,增强了可扩展性。
在现实生活中,很多事物之间都存在着一定的层次关系,例如中国有很多省份,每个省份下又有很多城市,这些中国与所辖省、市之间的层次关系可以通过一张树状结构图描述。

在XML文档中,通过元素的嵌套关系可以很准确地描述具有树状层次结构的复杂信息,因此,越来越多的应用程序都采用XML格式存放相关的配置信息,以便于读取和修改配置信息。
2、XML与HTML的比较
(1)HTML用于显示数据,XML用于传输和存储数据。
(2)HTML标签不区分大小写,而XML标记严格区分大小写。
(3)HTML可以有多个根元素,而格式良好的XML有且只能有一个根元素。
(4)在HTML中,空格是自动过滤的,而在XML中,空格不会自动过滤。
(5)HTML中的标签是预定义的标签,而XML中的标记可以根据需要自己定义,并且可扩展。

(二)XML语法
目标:掌握XML的语法,包括文档声明、元素声明、属性定义和注释
1、XML文档的声明
从XML 1.1开始,在一个完整的XML文档中,必须包含一个XML文档的声明,并且该声明必须位于文档的第一行。
XML文档声明的语法格式:<?xml version="version" encoding="value" standalone="value"?>
属性    说明
version    用于指定遵循XML规范的版本号。在XML声明中必须包含version属性,且该属性必须放在XML声明中其他属性之前。
encoding    用来指定XML文档所使用的编码集。
standalone    用来指定该XML文档是否和一个外部文档嵌套使用,取值为yes或no。如果设置属性值为yes,说明是一个独立的XML文档,与外部文件无关联;如果设置属性值为no,说明XML文档不独立。
2、XML元素的定义
XML文档中的主体内容都是由元素(Element)组成的,元素是以树形分层结构排列的,一个元素可以嵌套在另一个元素中。XML文档中有且仅有一个顶层元素,称为文档元素或根元素。元素一般是由开始标签、属性、元素内容和结束标签构成。
<售价 单位="元">100</售价>
1
3、XML属性的定义
在XML文档中,可以为元素定义属性。属性是对元素的进一步描述和说明。在一个元素中,可以自定义多个属性,属性是依附于元素存在的,并且每个属性都有自己的名称和取值。
<售价 单位="元">100</售价>
1
需要注意的是,在XML文档中,属性的命名规范与元素相同,属性值必须要用双引号(“”)或者单引号(‘’)引起来,否则被视为错误。
4、XML注释的定义
注释是为了便于阅读和理解,如果想在XML文档中插入一些附加信息,比如作者姓名、地址或电话等,这些信息是对文档结构或文档内容的解释,不属于XML文档的内容,因此XML解析器不会处理注释内容。XML文档的注释以字符串“<!--”开始,以字符串“-->”结束。
<!--注释信息-->
1
5、XML文件示例
早餐菜单
<?xml version="1.0" encoding="UTF-8"?>
<breakfast>
     <food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
        <description>two of our famous Belgian Waffles with plenty of real maple syrup</description>
        <calories>800</calories>
    </food>
    <food>
        <name>Strawberry Belgian Waffles</name>
        <price>$4.50</price>
        <description>light Belgian waffles covered with strawberries and whipped cream</description>
        <calories>300</calories>
    </food>
     <food>
        <name>Berry-Berry Belgian Waffles</name>
        <price>$8.95</price>
        <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
        <calories>900</calories>
    </food>
   <food>
        <name>French Toast</name>
        <price>$4.50</price>
        <description>thick slices made from our homemade sourdough bread</description>
        <calories>550</calories>
    </food>
     <food>
        <name>Homestyle Breakfast</name>
        <price>$6.95</price>
        <description>two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
        <calories>950</calories>
    </food>
</breakfast>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Spring项目的pom.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.huawei.spring</groupId>
    <artifactId>SpringDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.25</version>
        </dependency>       
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(三)DTD约束
目标:掌握DTD约束的引入和DTD约束的语法
1、什么是XML约束
XML文档中的标签是可以随意定义的,同一本书出现了两种售价,如果仅根据标签名称区分哪个是原价,哪个是会员价,这是很难实现的。为此,在XML文档中,定义了一套规则对文档中的内容进行约束,这套规则称为XML约束。对XML文档进行约束时,同样需要遵守一定的语法规则,这种语法规则就形成了XML约束语言。
2、什么是DTD约束
DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。在一个DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义以及实体和符号的定义。
通过一个案例简单认识一下DTD约束,创建book.xml文件

<?xml version="1.1" encoding="UTF-8"?>
<书架>
     <书>
         <书名>徒然草</书名>
         <作者>吉田兼好</作者>
         <售价>34.00元</售价>
     </书>
     <书>
         <书名>精通Spring框架</书名>
         <作者>魏赫布</作者>
         <售价>49.00元</售价>
     </书>
</书架>
1
2
3
4
5
6
7
8
9
10
11
12
13
课堂练习:将XML文件转换成MySQL表


课堂练习:将MySQL表转化成XML文件

课堂练习:将XML文件转成JSON


用JsonView工具软件来查看


创建book.dtd文件


<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
1
2
3
4
5
book.dtd是一个简单的DTD约束文档。每个元素都是按照book.dtd文档所规定的约束进行编写的。
3、DTD约束文档的解释
(1)<!ELEMENT …>语句定义了一个元素,其中“书架”是元素的名称,“(书+)”表示书架元素中有一个或者多个名称为“书”的元素,其中字符“+”表示它所修饰的元素必须出现一次或者多次。
(2)“书”是元素名称,“(书名,作者,售价)”表示元素书包含书名、作者、售价这三个子元素,并且这些子元素要按照顺序依次出现。
(3)“书名”、“作者”和“售价”都是元素名称,“(#PCDATA)”表示元素中嵌套的内容是普通的文本字符串。

4、DTD的引入
在XML文档中引入外部DTD文件有两种方式
第1种方式: <!DOCTYPE 根元素名称 SYSTEM  "外部DTD文件的URI">
第2种方式: <!DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD文件的URI">
1
2
第1种方式用来引用本地的DTD文件;第2种方式用来引用公共的DTD文件,其中“外部DTD文件的URI”指的是DTD文件在本地存放的位置,对于第1种方式,它可以是XML文档的相对路径,也可以是一个绝对路径,对于第2种方式,它是Internet上的一个绝对URL地址。
(1)引入本地DTD文件
对文件book.xml进行修改,在XML文档中引入本地的DTD文件book.dtd

<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
     <书>
         <书名>徒然草</书名>
         <作者>吉田兼好</作者>
         <售价>34.00元</售价>
     </书>
     <书>
         <书名>精通Spring框架</书名>
         <作者>魏赫布</作者>
         <售价>49.00元</售价>
     </书>
</书架>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(2)引入公共的DTD文件
引入一个公共的DTD文件,则需要在DOCTYPE声明语句中使用PUBLIC属性
<!DOCTYPE web-app PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd">
1
2
3
其中"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"是DTD名称,它用于说明DTD符合的标准、所有者的名称以及对DTD描述的文件进行说明,虽然DTD名称看上去比较复杂,但这完全是由DTD文件发布者去考虑的事情,XML文件的编写者只要把DTD文件发布者事先定义好的DTD标识名称进行复制就可以了。
(3)采用内嵌方式实现DTD对XML的约束
DTD对XML文档的约束,除了通过外部引入方式实现外,还可以采用内嵌的方式。
在XML中直接嵌入DTD定义语句的完整语法格式
<?xml version="1.1"  encoding="UTF-8"  standalone="yes"?>
<!DOCTYPE 根元素名 [
       DTD定义语句
       ……
]>
1
2
3
4
5
对book.xml进行修改,在book.xml文档中直接嵌入book.dtd文件

<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE 书架 [
    <!ELEMENT 书架 (书+)>
    <!ELEMENT 书 (书名,作者,售价)>
    <!ELEMENT 书名 (#PCDATA)>
    <!ELEMENT 作者 (#PCDATA)>
    <!ELEMENT 售价 (#PCDATA)>
]>
<书架>
     <书>
         <书名>徒然草</书名>
         <作者>吉田兼好</作者>
         <售价>34.00元</售价>
     </书>
     <书>
         <书名>精通Spring框架</书名>
         <作者>魏赫布</作者>
         <售价>49.00元</售价>
     </书>
</书架>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
5、DTD约束的语法
在编写XML文档时,需要掌握XML语法。同理,在编写DTD文档时,也需要遵循DTD的语法。DTD的结构一般由元素类型定义、属性定义、实体定义、记号定义等构成,一个典型的DTD文档类型定义会把将来要创建的XML文档的元素结构、属性类型、实体引用等预先进行定义。
(1)元素定义
元素是XML文档的基本组成部分,在DTD定义中,每一条<!ELEMENT…>语句用于定义一个元素
基本语法格式:<!ELEMENT 元素名称 元素内容>
在上面元素的定义语法格式中,包含了“元素名称”和“元素内容”。其中,“元素名称”是被约束的XML文档中的元素,“元素内容”是对元素包含内容的声明,其内容包括数据类型和符号两部分。
(2)元素内容
元素    说明
#PCDATA    表示元素中嵌套的内容是普通文本字符串,其中关键字PCDATA是Parsed Character Data的简写。
子元素    说明元素包含其他元素。通常用一对小括号()将元素中要嵌套的一组子元素括起来。
混合内容    表示元素既可以包含字符数据,也可以包含子元素。混合内容必须被定义零个或多个。
EMPTY    表示该元素既不包含字符数据,也不包含子元素,是一个空元素。如果在文档中元素本身已经表明了明确的含义,就可以在DTD中用关键字EMPTY表明空元素。
ANY    表示该元素可以包含任何字符数据和子元素。
(3)元素内容包含的符号
在定义元素时,元素内容可以包含一些符号,不同的符号具有不同的作用
符号    作用
问号[?]    表示该对象可以出现0次或1次
星号[*]    表示该对象可以出现0次或多次
加号[+]    表示该对象可以出现1次或多次
竖线[|]    表示列出的对象中选择1个
逗号[,]    表示对象必须按照指定的顺序出现
括号[()]    用于给元素进行分组
(4)属性定义
在DTD文档中,定义元素的同时,还可以为元素定义属性。
DTD属性定义的基本语法格式
<!ATTLIST 元素名
      属性名1 属性类型 设置说明
      属性名2 属性类型 设置说明
     ......

1
2
3
4
5
在上面属性定义的语法格式中,“元素名”是属性所属元素的名字,“属性名”是属性的名称,“属性类型”则是用来指定该属性是属于哪种类型,“设置说明”用来说明该属性是否必须出现。
(5)属性设置说明
设置说明    含义
#REQUIRED    表示元素的该属性是必须的,例如,当定义联系人信息的DTD时,我们希望每一个联系人都有一个联系电话属性,这时,可以在属性声明时,使用REQUIRED
#IMPLIED    表示元素可以包含该属性,也可以不包含该属性。例如,当定义一本书的信息时,发现书的页数属性对读者无关紧要,这时,在属性声明时,可以使用IMPLIED
#FIXED    表示一个固定的属性默认值,在XML文档中不能将该属性设置为其他值。使用#FIXED关键字时,还需要为该属性提供一个默认值。当XML文档中没有定义该属性时,其值将被自动设置为DTD中定义的默认值
默认值    和FIXED一样,如果元素不包含该属性,该属性将被自动设置为DTD中定义的默认值。不同的是,该属性的值是可以改变的,如果XML文件中设置了该属性,新的属性值会覆盖DTD中定义的默认值
(6)属性类型
CDATA是最常用的一种属性类型,表明属性类型是字符数据,与元素内容说明中的#PCDATA相同。当然,在属性设置值中出现的特殊字符,也需要使用其转义字符序列表示,例如,用“&amp;”表示字符“&”,用“&lt;”表示字符“<”等。
Enumerated(枚举类型),在声明属性时,可以限制属性的取值只能从一个列表中选择,这类属性属于Enumerated(枚举类型)
一个ID类型的属性用于唯一标识XML文档中的某个元素。ID类型的属性值必须遵守XML名称定义的规则。一个元素只能有一个ID类型的属性,而且ID类型的属性必须设置为#IMPLIED或#REQUIRED。因为ID类型属性的每一个取值都是用来标识一个特定的元素,所以为ID类型的属性提供默认值,特别是固定的默认值是毫无意义的。
除了讲述的几种属性类型外,DTD约束中还有IDREF、IDREFS、NMTOKEN、NMTOKENS、NOTATION、ENTITY和ENTITYS几种属性类型,由于篇幅有限,此处就不一一列举。
(四)Schema约束
目标:掌握Schema约束的名称空间,如何引入Schema文档,以及Schema语法
1、什么是Schema约束
同DTD一样,XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD 的局限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值