您的位置:首页 > 编程语言 > Java开发

Java Web之第2章Java Web概述

2019-04-08 17:47 211 查看

第2章 Java Web概述

  • 2.2HTTP协议
  • 2.3Tomacat简介
  • 2.1XML基础

    XML:数据交换标准,它是一种通用的数据交换格式,可以使数据在各程序之间轻松地实现数据的交换

    2.2.1XML概述

    XML:它是一种类似于HTML的标记语言,称为可扩展标记语言。所谓可扩展,指的是用户可以按照XML规则自定义标记
    XML与HTML的比较:
    (1)HTML被设计出是用来显示数据的,XML被设计出是为了传输和存储数据的
    (2)HTML是不区分大小写的,而XML是严格区分大小写的
    (3)HTML可以有多个根元素,而格式良好的XML有且只能有一个根元素
    (4)HTML中空格是自动过滤的,而XML中空格则不会自动删除
    (5)HTML中的标记是预定义的,而XML中的标记可以根据需要自己定义,并且可扩展

    2.1.2XML语法

    1.文档声明:在一个完整的XML文档中,必须包含一个XML文档的声明,并且该声明必须位于文档的第一行。这个声明表示该文档是一个XML文档,以及遵循哪个XML版本的规范。XML文档的格式如下:

    <?xml 版本信息[编码信息][文档独立性信息]?>

    注意:在"<“和”?“之间,”?“和”>“之间以及第一个”?"和xml之间不能有空格
    2.元素定义:在XML文档中,主体内容是由元素组成的。元素一般是由开始标记,属性,元素内容和结束标记构成。具体事例如下:

    <城市>北京<城市>

    根元素:一个元素没有嵌套在其他元素内。根元素是XML文档定义的第一个元素
    空元素:一个元素中没有嵌套子元素,也没有包含其他文本,空元素可以不使用结束标记,但必须在起始标记的">“前增加一个正斜杠”/"来说明该元素是空元素,例如:

    <img></img>
    可以简写成
    <img/>

    3.属性定义:在XML文档中,可以为元素定义属性。属性是对元素的进一步描述和说明,并且每个属性都有自己的名称和取值,具体例子如下:

    <售价 单位="元">68<售价>

    注意:在XML文档中,属性命名规范同元素相同,属性值必须要用双引号(" “)或者单引号(”)引起来,否者被视为错误
    4.注释:在XML文档中插入一些附加信息,比如作者姓名,地址或电话等信息,或者想暂时屏蔽某些XML语句,这时,可以通过注释的方式来实现,被注释的内容会被程序忽略而不被解析和处理。具体语法格式如下:

    <!--注解信息-->

    2.1.3DTD约束

    1.什么是约束:在现实生活中,如果一篇文章的语法正确,但内容包含违法言论或逻辑错误,这样的文章是不允许被发表的。同样,在书写XML文档时,其内容必须满足某些条件的限制,对XML文档进行约束时,同样需要遵守一定的语法规则,这种语法规则就形成了XML约束语言。目前,最常用的两种约束语言是DTD约束和Schema约束
    2.DTD约束:DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件,在一个DTD文件中,可以包含元素的定义,元素之间关系的定义,元素属性的定义以及实体和符号的定义。其语法具体如下:

    <!DOCTYPE 根元素 [元素声明]>

    3.DTD引入:在XML文档中引入外部DTD文件由两种方式,具体如下:

    <!DOCTYPE 根元素 SYSTEM "外部DTD文件的URI">           //引用本地DTD文件
    <!DOCTYPE 根元素 PUBLIC "DTD名称" “外部DTD文件的URL”>  //引用公共的DTD文件

    注意:外部DTD文件的URI指的是DTD文件存放的位置,对于第一种方式,它可以是相当于XML文档的相对路径,也可以是一个绝对路径;而对于第2中方式,它是Internet上的一个绝对URL地址
    内嵌的方式引入DTD文件:在XML中直接嵌入DTD定义语句的完整语法格式如下所示:

    <?xml version="1.0"  encoding="UTF-8"  standalone="yes"?>
    <!DOCTYPE  根元素名[
    DTD定义语句
    .........
    ]>

    4.DTD语法:在编写XML文档时,需要掌握XML语法。同理,在编写DTD文档时,也需要遵循一定的语法。DTD的结构一般由元素类型定义,属性定义,实体定义,记号定义等构成,一个典型的文档类型定义会把将来要创建的XML文档的元素结构,属性类型,实体引用等预先进行定义。
    (1)元素定义:元素时XML文档的基本组成部分,在DTD定义中,每一条<!ELEMENT…>语句用于定义一个元素,其基本格式如下:

    <!ELEMENT  元素名称 元素内容>

    元素名称:是自定义的名称,它用于定义被约束XML文档中的元素
    元素内容:是对元素包含内容的声明,包括数据类型和符号两部分,它共有5种内容形式,具体如下:
    1)#PCDATA:表示元素中嵌套的内容是普通文本字符串
    2)子元素:说明元素包含元素。通常用一对圆括号将元素将元素中要嵌套的一组子元素括起来
    3)混合内容:表示该元素既可以包含字符数据,也可以包含子元素,混合内容必须被定义零个或多个
    4)EMPTY:表示该元素既不包含字符数据,也不包含子元素,是一个空元素
    5)ANY:表示该元素可以包含任何的字符数据和子元素。在实际开发中,应当避免使用ANY,因为除了根元素外,其他使用ANY的元素都将失去DTD对XML文档的约束效果
    注意:在定义元素时,元素内容中可以包含一些符号,不同符号具有不同的作用。针对常见的符号进行介绍:
    1)问号[?]:表示该对象可以出现0次或者1次
    2)星号[*]:表示该对象可以出现0次或者多次
    3)加号[+]:表示该对象可以出现0次或者多次
    4)竖线[ | ]:表示列出对象中选择1个
    5)逗号[,]:表示对象必须按照指定的选项出现
    6)括号[()]:用于给元素进行分组
    (2)属性定义:在DTD文档中,定义元素的同时,还可以为元素定义属性。DTD属性定义的基本语法格式如下:

    <!	ATTLIST  元素名
    属性名1 属性类型 设置说明
    属性名2 属性类型 设置说明
    .......
    >

    1)设置说明:定义元素属性时,有4种设置说明可以选择,具体如下:

    设置说明 含义
    #REQUIRED 表示元素该属性是必须的
    #IMPLIED 表示元素可以包含该属性,也可以不包含该属性
    #FIXED 表示一个固定的属性默认值,在XML文档中不能将该属性设置为其他值
    默认值 和FIXED一样,如果元素不包含该属性,该属性将被自动设置为DTD中定义的默认值。不同的是,该属性的值是可以被改变的,如果XML文件中设置了该属性,新属性会覆盖DTD中定义的默认值

    2)属性类型:在DTD中定义元素的属性时,有10种属性类型可以选择,常见的几种属性类型如下:
    1.CDATA:这是最常用的一种属性类型,表面该属性类型是字符数据,与元素内容说明种的#PCDATA相同。当然,在属性设置值种出现的特殊字符,也需要使用其转义字符序列来表示,例如,用"&amp;"表示字符”&“等
    2.Enumerrated(枚举类型):在声明属性时,可以限制属性的取值只能从一个列表种选择,这类属性属于Enumerated。注意:在DTD定义中并不会出现关键字 Enumerated
    3.ID:一个ID类型的属性用于唯一标识XML文档中的一个元素。其属性值必须遵守XML名称定义的规则。一个元素只能有一个ID类型的属性,而且ID类型的属性必须设置为#IMPLIED或#REQUIRED。因为ID类型属性的每一个取值都是用来标识一个特定的元素,所以为ID类型的属性提供默认值,特别是固定的默认值是毫无意义的
    4.IDREF:用来建立一对一的关系
    5.IDREFS:建立一对多的关系

    2.1.4Schema约束

    1.什么是Schema约束:是一种用于定义和描述XML文档结构与内容的模式语法,它的出现克服了DTD的局限性
    优点:1)Schema语法格式比DTD更好理解
    2)Schema采用与XML文档相同的合法性验证机制
    3)Schema对名称空间支持的非常好,而DTD几乎不支持名称空间
    4)Schema比DTD支持更多的数据类型,包括用户自定义的数据类型
    5)Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制
    2.名称空间:它可以唯一标识一个元素或者属性。这就好比打车去小营,由于北京有两个地方叫小营,为了避免司机走错,我们就会说去亚运村小营或者去清河小营。这时的亚运村或者清河就相当于一个名称空间
    在使用名称空间时,首先必须声明名称空间。名称空间声明语法如下:

    <元素名 xmlns:prefixname="URI">

    在上述语法格式中,元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。xmlns:prefixname指的是该元素的属性名,它所对应的值是URI引用,用来标识该名称空间的名称。注意:如果两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间
    3.引入Schema文档:
    (1)使用名称空间引用XML Schema文档
    (2)不使用名称空间引入XML Schema文档
    4.Schema语法
    (1)元素定义
    元素定义语法格式如下:

    <xs:element  name="xxx"  type="yyy">

    在上述语法中,element用于声明一个元素,xxx指的是元素名称,yyy指元素的数据类型。在XML Schema中有很多内建的数据类型,其中最常用的有以下几种:

    • xs:string:字符串类型
    • xs:decimal:小数类型
    • xs:integer:整数类型
    • xs:boolean:布尔类型
    • xs:date:日期类型
    • xs:time:时间类型

    (2)属性定义
    属性定义语法格式如下:

    <xs:attribute name="name" type="xs:string" />

    (3)简单类型
    简单类型使用xs:simpleType元素来定义。如果想对现有元素内容的类型进行限制,则需要使用xs:restriction元素
    1)xs:minlnclusive和xs:maxlnclusive元素对值限定
    例如,当我们定义雇员的年龄时,雇员的年龄要求是18~58周岁之间,这时需要对年龄进行限制就可以用
    2)xs:enumeration元素对一组值的限定
    如果希望将XML元素内容限制为一组可接受的值,可以使用枚举约束,例如,要限定一个元素名为Car的元素,可接受的值只有Audi.Golf,BMW
    3)xs:pattern元素对一系列值的限定
    如果希望把XML元素内容限制定义为一系列可使用的数字或字母,可以使用模式约束
    4)xs:restriction元素对空白字符的限定
    在XML文档中,空白字符比较特殊,如果需要对空白字符进行处理,可以使用whiteSpace元素。whiteSpace元素有3个属性值可以设定,分别是preserve,replace和collapse。其中preserve表示不对元素中的任何空白字符进行处理,replace表示移除所有的空白字符,collapse表示将所有的空白字符缩减为一个单一字符
    (4)复杂类型
    除简单类型之外的其他类型都是复杂类型,在定义复杂类型时,需要使用xs:complex-Content元素来定义。复杂类型的元素可以包含子元素和属性,这样的元素称为复合元素。在定义复合元素时,如果元素的开始标记和结束标记之间只包含字符数据内容,那么这样的内容是简易内容,需要使用xs:simpleContent元素来定义,元素的内容都是复杂内容,需要使用xs:complexContent原属来定义。复合元素有四种类型:
    1)空元素:指不包含内容,只包含属性的元素
    2)包含其他元素的元素:在XML文档中存在包含其他元素的元素
    3)仅包含文本的元素:对于仅包含文本的复合元素,需要使用simpleContent元素来添加内容。在使用简易内容时,必须在simpleContent元素内定义扩展或者限定,这时,需要使用extension或restriction元素来扩展或限制元素的基本简易类型。
    4)包含元素和文本的元素

    2.2HTTP协议

    HTTP:专门用于定义浏览器与服务器之间交换数据的过程以及数据本身的格式

    2.2.1HTTP概述

    1.HTTP介绍:超文本传输协议。它是一种请求/响应式的协议,客户端与服务器建立链接后,就可以向服务器端发送请求,这种请求被称作HTTP请求,服务器收到请求后会做出响应,称为HTTP响应
    HTTP协议特点:
    (1)支持客户端(浏览器就是一种Web客户端)/服务器模式
    (2)简单快速:客户端向服务器请求时,只需传送请求方式和路径。常用的请求方式有GET,POST等,每种方式规定了客户端与服务器联系的类型不同。由于HTTP简单,使得HTTP服务器的程序规模小,因而通信速度很快
    (3)灵活:HTTP允许传输任意类型的数据,正在传输的数据类型由Content-Type加以标记
    (4)无状态:HTTP是无协议状态。无状态是指协议对于事务处理没有基于能力,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次链接传送的数据量增大
    2.HTTP1.0和HTTP1.1
    (1)HTTP1.0:客户端与服务器在交互过程中需要经过建立连接,发送请求信息,回送响应信息,关闭连接4个步骤.客户端与服务器建立连接后,每次只能处理一个HTTP请求。对于内容丰富的网页来说,明显是一个缺陷
    (2)HTTP1.1:它支持持久连接,也就是说在一个TCP连接上可以传送多个HTTP请求和响应,从而减少了建立和关闭连接的消耗和延时。当客户端与服务器端建立连接后,客户端可以向服务器端发送多个请求,并且在发送下一个请求时,无需等待上次请求的返回结果。但服务器必须按照接受客户端请求的先后顺序依次返回响应结果,以保证客户端能够区分出每次请求的响应内容
    (3)HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版
    HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
    HTTPS和HTTP的区别主要如下:
      1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
      2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
      3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
      4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
    3.HTTP消息:HTTP请求消息和HTTP响应消息的统称
    HTTP请求消息:当用户在浏览器中访问某个URL地址,单击页面的某个超链接或者提交网页上的form表单时,浏览器都会向服务器发送请求数据
    HTTP响应消息:服务器接收到请求数据后,会将处理后的数据回送给客户端
    HTTP和HTTPS的区别主要如下:
    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
    HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
    HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL
    HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性

    2.2.2HTTP请求消息

    在HTTP中,一个完整的请求消息是由请求行,请求头和实体内容三部分组成
    1.HTTP请求行:位于请求消息的第1行,它包括3个部分,分别是请求方式,资源路径以及所使用的HTTP版本,具体示例如下:

    GET /index.html  HTTP/1.1

    在上面示例中,GET是请求方式,index.html是请求资源路径,HTTP/1.1是通信使用的协议版本。注意:请求行中的每个部分需要用空格分隔,最后要以回车换行结束
    HTTP的请求方式:有8种方式,每种方式都指明了操作服务器中指定URI资源的方式,他们呢他们表示的含义如下:

    请求方式 含义
    GET 请求获取请求行的URI所表示的资源
    POST 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)
    HEAD 请求获取由URI所表示资源的响应消息头
    PUT 将网页放置到指定URL位置(上传/移动)
    DELETE 请求服务器删除URI所标识的资源
    TRACE 请求服务器回送收到的请求消息,主要拥有图测试或者诊断
    CONNECT 保留将来使用
    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和请求

    最常用的就是GET和POST方式:
    (1)GET方式
    当用户在浏览器中直接输入某个URL地址或者单击网页上的一个超链接时,浏览器将使用GET请求方式发送请求。如果将页面上的dorm表单的method属性设置为"GET"或者不设置method属性,当用户提交表单时,浏览器也将使用GRT方式发送请求
    如果浏览器请求的URL中由参数的部分,在浏览器生成的请求消息中,参数部分将附加在请求行中的资源路径后面。先来看一个URL地址,具体如下:

    http://www.itcast.cn/javaForum?name=lee&psd=hnxy

    在上述URL中,"?“后面的内容为参数消息。参数是由参数名和参数值组成的,并且中间使用等号进行连接。注意:如果URL地址有多个参数,参数之间需要用”&"分隔
    当浏览器向服务器发送请求消息时,上述URL中的参数部分会附加在要访问的URL资源后面。具体如下所示:

    GET  /javaForum?name=lee&psd=hnxy HTTP/1.1

    注意:使用GET方式传送的数据量有限,最多不能超过2KB
    (2)POST方式
    如果网页上form表单中的method属性设置为POST,当用户提交表单时,浏览器将使用POST方式提交表单内容,并把各个表单元素及数据作为HTTP消息的实体内容发送给服务器,而不是作为URI地址的参数传递。另外,在使用POST方式向服务器传递数据时,Content-Type消息头会自动设置为"application/x-www-foem-urlencoded",Content-Length消息头会自动设置为实体内容的长度,具体如下:

    POST /javaForum HTTP/1.1
    Host:www.itcast.cn
    Content-Type:application/x-www-foem-urlencoded
    Content-Length:17
    name=lee&psd=hnxy

    注意:在实际开发中,通常都会使用POST方式发送请求,主要原因如下:
    1)POST传输数据大小无限制
    2)POST比GET请求方式更安全
    2.HTTP请求消息头:在HTTP请求消息中,请求行之后便是若干请求消息头。请求消息头主要用于向服务器端传递附加消息,例如,客户端可以接收的数据类型,压缩方法,语言以及发送请求的超链接所属面的URL地址等信息。头字段名称不区分大小写,但习惯上将单词的第一个字母大写

    2.2.3HTTP响应消息

    当服务器收到浏览器的请求后,会回送响应消息个客户端。一个完整的响应消息主要包括响应状态行,响应消息头和实体内容。
    1.HTTP响应状态行:位于响应消息第1行,它包括3个状态部分,分别是HTTP版本,一个表示成功或错误的整数代码和对状态码进行描述的文本信息,具体如下:

    HTTP/1.1  200  OK

    在上面就是一个HTTP响应消息的状态行,其中,HTTP1.1是通信使用的协议版本,ok是状态描述,说明客户端请求成功。请求行中的每个部分需要用空格分隔,最后要以回车换行结束
    状态码由3位数字组成,表示请求是否被理解或被满足。HTTP响应状态码的第1个数字定义了响应类别,后面两位数没有具体的分类,第一个数字有五种可能取值,具体如下:

    • 1xx:表示请求已接收,需要成功处理
    • 2xx:表示请求已成功被服务器接收,理解并接收
    • 3xx:为完成请求,客户端需进一步细化请求
    • 4xx:客户端的请求有错误
    • 5xx:服务器端出现错误

    HTTP响应消息头:在HTTP响应消息中,第1行为响应状态行,紧接着的是若干响应消息头,服务器端通过响应消息头向客户端传递附加消息,包括服务程序名,被请求资源需要的认证方式,客户端请求资源的最后修改时间,重定向地址等信息

    2.3Tomacat简介

    Tomcat服务器是一个免费的开放源代码的Web应用服务器

    2.3.1Tomcat简介

    Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
    Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。

    Tomcat的安装和启动

    可以百度一下菜鸟教程Tomcat的安装里面有教程,这里不详细介绍如何安装

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐