动态网站开发讲课笔记02:JavaWeb概述

一、 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语法

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文档中有且仅有一个顶层元素,称为文档元素或根元素。元素一般是由开始标签、属性、元素内容和结束标签构成。

3、XML属性的定义

  • 在XML文档中,可以为元素定义属性。属性是对元素的进一步描述和说明。在一个元素中,可以自定义多个属性,属性是依附于元素存在的,并且每个属性都有自己的名称和取值。
  • 需要注意的是,在XML文档中,属性的命名规范与元素相同,属性值必须要用双引号(“”)或者单引号(‘’)引起来,否则被视为错误。

4、XML注释的定义

  • 注释是为了便于阅读和理解,如果想在XML文档中插入一些附加信息,比如作者姓名、地址或电话等,这些信息是对文档结构或文档内容的解释,不属于XML文档的内容,因此XML解析器不会处理注释内容。XML文档的注释以字符串“<!--”开始,以字符串“–>”结束。

(三)DTD约束

1、什么是XML约束

  • XML文档中的标签是可以随意定义的,同一本书出现了两种售价,如果仅根据标签名称区分哪个是原价,哪个是会员价,这是很难实现的。为此,在XML文档中,定义了一套规则对文档中的内容进行约束,这套规则称为XML约束。对XML文档进行约束时,同样需要遵守一定的语法规则,这种语法规则就形成了XML约束语言。

2、什么是DTD约束

  • DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。在一个DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义以及实体和符号的定义。

3、DTD约束文档的解释

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

4、DTD的引入

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

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

(四)Schema约束

1、什么是Schema约束

  • 同DTD一样,XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD 的局限性。

2、Schema约束的优点

(1)DTD采用的是非XML语法格式,缺乏对文档结构、元素、数据类型等全面的描述。XML Schema采用的是XML语法格式,而且它本身也是一种XML文档,因此,XML Schema语法格式比DTD更好理解。
(2)XML有非常高的合法性要求,XML DTD对XML的描述,往往也被用作验证XML合法性的一个基础,但是XML DTD本身的合法性却缺少较好的验证机制,必需独立处理。XML Schema则不同,它与XML有着同样的合法性验证机制。
(3)XML Schema对名称空间支持得非常好,而DTD几乎不支持名称空间。
(4)DTD支持的数据类型非常有限。
(5)DTD定义约束的能力非常有限,无法对XML实例文档作出更细致的语义限制。

3、Schema约束的文档

  • Schema的功能比DTD强大很多,但相应的语法也比DTD复杂很多。
  • 看一个简单的Schema文档
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <xs:element name="root"  type="xs:string"/>
</xs:schema>
  • Schema文档,以xsd作为后缀名,以xs:schema作为根元素,表示模式定义的开始。

4、名称空间

  • 一个XML文档可以引入多个约束文档,但是,由于约束文档中的元素或属性都是自定义的,所以在XML文档中,极有可能出现代表不同含义的同名元素或属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性。这就好比打车去小营,由于北京有两个地方叫小营,为了避免司机走错,我们就会说“去亚运村的小营”或者“去清河的小营”。这时的亚运村或者清河就相当于一个名称空间。

5、声明名称空间的格式

  • 名称空间的声明就是在XML文档中为某个模式文档的名称空间指定一个临时名称,它通过一系列的保留属性来声明,这种属性的名字必须是以“xmlns”或者以“xmlns:”作为前缀。它与其他任何XML属性一样,都可以通过直接或者使用默认的方式给出。
  • 名称空间声明的语法格式: <元素名 xmlns:prefixname="URI">
  • 注意:元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。xmlns:prefixname指的是该元素的属性名,它所对应的值是一个URI引用,用来标识该名称空间的名称。需要注意的是,如果有两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间。
  • 注意:在声明名称空间时,有两个前缀是不允许使用的,它们是xml和xmlns。xml前缀被定义为与名称空间名字http://www.w3.org/XML/1998/namespace绑定,只能用于XML 1.0规范中定义的xml:space和xml:lang属性。前缀xmlns仅用于声明名称空间的绑定,它被定义为与名称空间名字http://www.w3.org/2000/xmlns绑定。

6、引入Schema文档

引入方式说明
使用名称空间引入XML Schema文档在使用名称空间引入XML Schema文档时,需要通过属性xsi:schemaLocation来声明名称空间的文档,xsi:schemaLocation属性是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,在该属性中,包含了两个URI,这两个URI之间用空白符分隔。其中,第一个URI是名称空间的名称,第二个URI是文档的位置。
通过xsi:noNamespaceSchemaLocation属性直接指定通过xsi:noNamespaceSchemaLocation属性直接指定,noNamespaceSchemaLocation属性也是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,它用于定义指定文档的位置。

7、Schema语法

(1)元素定义
  • Schema和DTD一样,都可以定义XML文档中的元素。
  • Schema文档中,元素定义的语法格式:<xs:element name="名称" type="类型"/>
  • element用于声明一个元素,名称指的是元素的名称,类型指元素的数据类型。
  • 在XML Schema 中有很多内建的数据类型,最常用的类型如下表
类型说明
xs:string表示字符串类型
xs:decimal表示小数类型
xs:integer表示整数类型
xs:boolean表示布尔类型
xs:date表示日期类型
xs:time表示时间类型

(2)属性定义

  • 在Schema文档中,属性定义的语法格式:<xs:attribute name="xxx" type="yyy"/>
  • xxx 指的是属性名称,yyy指的是属性的数据类型。其中,属性的常用数据类型与元素相同,都使用的是XML Schema中内创建的数据类型。

(3)简单类型

  • 在XML Schema文档中,只包含字符数据的元素都是简单类型的。简单类型使用xs:simpleType元素来定义。如果想对现有元素内容的类型进行限制,则需要使用xs:restriction元素。接下来通过以下几种情况详细介绍如何对简单类型元素的内容进行限定。

(4)复杂类型

  • 在定义复杂类型时,需要使用xs:complexContent元素来定义。复杂类型的元素可以包含子元素和属性,这样的元素称为复合元素。在定义复合元素时,如果元素的开始标签和结束标签之间只包含字符数据内容,那么这样的内容是简易内容,需要使用xs:simpleContent元素来定义。反之,元素的内容都是复杂内容,需要使用xs:complexContent元素来定义。复合元素有4种基本类型,接下来针对这4种基本类型分别进行讲解。

二、程序开发体系架构

(一)C/S体系架构

  • C/S是Client/Server的缩写,即客户端/服务器架构。在开发的过程中,客户端需要安装相应的软件才能连接服务器,并且客户端软件承担所有的逻辑和运算,服务器只提供数据交互的一种体系架构。
    在这里插入图片描述

  • C/S架构的局限性
    在这里插入图片描述

(二)B/S体系架构

  • B/S是Browser/Server的缩写,即浏览器/服务器架构。在开发过程中,客户端只需要一个浏览器,即可以实现与服务器交互,服务器承担所有的逻辑和计算,浏览器只负责将结果显示在屏幕上的一种体系架构。B/S架构最大的优点是客户机上无需安装专门的客户端程序,程序中的业务逻辑处理都集中到了Web服务器上,客户机只要安装一个浏览器就能通过Web服务器与数据库进行交互,并将交互的结果以网页的形式展现在浏览器中。
    在这里插入图片描述
  • 浏览器并不是直接与数据库服务器建立连接,而是通过Web服务器与数据库服务器需要建立连接。由此可见,B/S架构可以有效地解决数据库并发数量有限的问题。
  • B/S架构的工作原理(Request / Response)
    在这里插入图片描述
  • 现在生活中二维码随处可见:QR - Quick Response (快速响应)

三、Tomcat服务器

(一)初识Tomcat

1、Tomcat概念

  • 是Apache组织的Jakarta项目中的一个重要子项目,它是Sun公司(已被Oracle收购)推荐的运行Servlet和JSP的容器(引擎),其源代码是完全公开的。Tomcat不仅具有Web服务器的基本功能,还提供了数据库连接池等许多通用组件功能。

2、Tomcat特点

  • Tomcat运行稳定、可靠、效率高,不仅可以和目前大部分主流的Web服务器(如Apache、IIS服务器)一起工作,还可以作为独立的Web服务器软件。

3、Tomcat官网

4、下载Tomcat压缩包

(二)Tomcat安装和启动

1、解压缩Tomcat压缩包

  • 可以将压缩包解压到任意位置,最后路径不要包含中文和空格,比如解压到D盘根目录,解压后会产生了一个apache-tomcat-8.5.86文件夹。
  • Tomcat安装目录中包含一系列的子目录,这些子目录分别用于存放不同功能的文件。
目录作用
bin用于存放Tomcat的可执行文件和脚本文件(扩展名为bat的文件)
conf用于存放Tomcat的各种配置文件,如web.xml、server.xml
lib用于存放Tomcat服务器和所有Web应用程序需要访问的JAR文件
logs用于存放Tomcat的日志文件
temp用于存放Tomcat运行时产生的临时文件
webappsWeb应用程序的主要发布目录,通常将要发布的应用程序放到这个目录下
workTomcat的工作目录,JSP编译生成的Servlet源文件和字节码文件放到这个目录下
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值