《Java Web程序設(shè)計(jì)任務(wù)教程》Java Web概述 課件_第1頁
《Java Web程序設(shè)計(jì)任務(wù)教程》Java Web概述 課件_第2頁
《Java Web程序設(shè)計(jì)任務(wù)教程》Java Web概述 課件_第3頁
《Java Web程序設(shè)計(jì)任務(wù)教程》Java Web概述 課件_第4頁
《Java Web程序設(shè)計(jì)任務(wù)教程》Java Web概述 課件_第5頁
已閱讀5頁,還剩99頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第2章JavaWeb概述《Java

Web程序設(shè)計(jì)任務(wù)教程(第2版)》學(xué)習(xí)目標(biāo)/Target了解XML的概念

掌握XML語法

掌握DTD約束

掌握Schema約束學(xué)習(xí)目標(biāo)/Target

了解C/S體系架構(gòu)與B/S體系架構(gòu)熟悉Tomcat的安裝與啟動(dòng)

掌握在IntelliJIDEA中配置Tomcat服務(wù)器的方法章節(jié)概述/

SummaryJava

Web是使用Java技術(shù)解決相關(guān)Web互聯(lián)網(wǎng)領(lǐng)域的技術(shù)棧,開發(fā)一個(gè)完整的Java

Web項(xiàng)目涉及到靜態(tài)Web資源、動(dòng)態(tài)Web資源的編寫以及項(xiàng)目的部署。在Java

Web中,靜態(tài)Web資源開發(fā)技術(shù)包括HTML、CSS、JavaScript、XML等;動(dòng)態(tài)Web資源開發(fā)技術(shù)包括JSP/Servlet等。本章將針對Java

Web開發(fā)所用到的XML技術(shù)以及項(xiàng)目部署服務(wù)器Tomcat進(jìn)行詳細(xì)地講解。目錄/Contents010203XML基礎(chǔ)程序開發(fā)體系架構(gòu)TomcatXML基礎(chǔ)2.12.1.1XML概述先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解XML的概念,能夠知道HTML用于做什么2.1.1XML概述XML是EXtensibleMarkupLanguage的縮寫,它是一種類似于HTML的標(biāo)記語言,稱為可擴(kuò)展標(biāo)記語言。XML用于提供數(shù)據(jù)描述格式,適用于不同應(yīng)用程序之間的數(shù)據(jù)交換,而且這種交換不以預(yù)先定義的一組數(shù)據(jù)結(jié)構(gòu)為前提,增強(qiáng)了可擴(kuò)展性。XML2.1.1XML概述在現(xiàn)實(shí)生活中,很多事物之間都存在著一定的層次關(guān)系,例如中國有很多省份,每個(gè)省份下又有很多城市,這些中國與所轄省、市之間的層次關(guān)系可以通過一張樹狀結(jié)構(gòu)圖描述。XML在XML文檔中,通過元素的嵌套關(guān)系可以很準(zhǔn)確地描述具有樹狀層次結(jié)構(gòu)的復(fù)雜信息,因此,越來越多的應(yīng)用程序都采用XML格式存放相關(guān)的配置信息,以便于讀取和修改配置信息。2.1.1XML概述XML與HTML的比較(1)HTML用于顯示數(shù)據(jù),XML用于傳輸和存儲(chǔ)數(shù)據(jù)。(2)HTML標(biāo)簽不區(qū)分大小寫,而XML標(biāo)記嚴(yán)格區(qū)分大小寫。(3)HTML可以有多個(gè)根元素,而格式良好的XML有且只能有一個(gè)根元素。(4)在HTML中,空格是自動(dòng)過濾的,而在XML中,空格不會(huì)自動(dòng)過濾。(5)HTML中的標(biāo)簽是預(yù)定義的標(biāo)簽,而XML中的標(biāo)記可以根據(jù)需要自己定義,并且可擴(kuò)展。2.1.2XML語法先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握XML的語法,包括文檔聲明、元素聲明、屬性定義和注釋2.1.2XML語法從XML1.1開始,在一個(gè)完整的XML文檔中,必須包含一個(gè)XML文檔的聲明,并且該聲明必須位于文檔的第一行。XML文檔聲明的語法格式如下所示:XML的文檔聲明<?xmlversion="version"encoding="value"standalone="value"?>version:用于指定遵循XML規(guī)范的版本號。在XML聲明中必須包含version屬性,且該屬性必須放在XML聲明中其他屬性之前。encoding:用來指定XML文檔所使用的編碼集。standalone:用來指定該XML文檔是否和一個(gè)外部文檔嵌套使用,取值為yes或no。如果設(shè)置屬性值為yes,說明是一個(gè)獨(dú)立的XML文檔,與外部文件無關(guān)聯(lián);如果設(shè)置屬性值為no,說明XML文檔不獨(dú)立。2.1.2XML語法XML文檔中的主體內(nèi)容都是由元素(Element)組成的,元素是以樹形分層結(jié)構(gòu)排列的,一個(gè)元素可以嵌套在另一個(gè)元素中。XML文檔中有且僅有一個(gè)頂層元素,稱為文檔元素或根元素。元素一般是由開始標(biāo)簽、屬性、元素內(nèi)容和結(jié)束標(biāo)簽構(gòu)成,具體示例如下:XML的元素定義<?xmlversion="version"encoding="value"standalone="value"?>2.1.2XML語法在XML文檔中,可以為元素定義屬性。屬性是對元素的進(jìn)一步描述和說明。在一個(gè)元素中,可以自定義多個(gè)屬性,屬性是依附于元素存在的,并且每個(gè)屬性都有自己的名稱和取值,具體示例如下:XML的屬性定義<售價(jià)單位="元">68</售價(jià)>需要注意的是,在XML文檔中,屬性的命名規(guī)范與元素相同,屬性值必須要用雙引號("")或者單引號('')引起來,否則被視為錯(cuò)誤。2.1.2XML語法注釋是為了便于閱讀和理解,如果想在XML文檔中插入一些附加信息,比如作者姓名、地址或電話等,這些信息是對文檔結(jié)構(gòu)或文檔內(nèi)容的解釋,不屬于XML文檔的內(nèi)容,因此XML解析器不會(huì)處理注釋內(nèi)容。XML文檔的注釋以字符串“<!--”開始,以字符串“-->”結(jié)束。具體語法格式如下所示:XML的注釋<!--注釋信息-->2.1.3DTD約束先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握DTD約束的引入和DTD約束的語法2.1.3DTD約束XML文檔中的標(biāo)簽是可以隨意定義的,同一本書出現(xiàn)了兩種售價(jià),如果僅根據(jù)標(biāo)簽名稱區(qū)分哪個(gè)是原價(jià),哪個(gè)是會(huì)員價(jià),這是很難實(shí)現(xiàn)的。為此,在XML文檔中,定義了一套規(guī)則對文檔中的內(nèi)容進(jìn)行約束,這套規(guī)則稱為XML約束。對XML文檔進(jìn)行約束時(shí),同樣需要遵守一定的語法規(guī)則,這種語法規(guī)則就形成了XML約束語言。什么是XML約束2.1.3DTD約束DTD約束是早期出現(xiàn)的一種XML約束模式語言,根據(jù)它的語法創(chuàng)建的文件稱為DTD文件。在一個(gè)DTD文件中,可以包含元素的定義、元素之間關(guān)系的定義、元素屬性的定義以及實(shí)體和符號的定義。什么是DTD約束2.1.3DTD約束STEP01通過一個(gè)案例簡單認(rèn)識一下DTD約束,創(chuàng)建book.xml文件。<?xmlversion="1.1"encoding="UTF-8"?><書架> <書> <書名>Java基礎(chǔ)案例教程</書名> <作者>黑馬程序員</作者> <售價(jià)>54.00元</售價(jià)> </書> <書> <書名>Java基礎(chǔ)入門</書名> <作者>黑馬程序員</作者> <售價(jià)>59.00元</售價(jià)> </書></書架>2.1.3DTD約束STEP02創(chuàng)建book.dtd文件。<!ELEMENT書架(書+)><!ELEMENT書(書名,作者,售價(jià))><!ELEMENT書名(#PCDATA)><!ELEMENT作者(#PCDATA)><!ELEMENT售價(jià)(#PCDATA)>book.dtd是一個(gè)簡單的DTD約束文檔。每個(gè)元素都是按照book.dtd文檔所規(guī)定的約束進(jìn)行編寫的。2.1.3DTD約束(1)<!ELEMENT…>語句定義了一個(gè)元素,其中“書架”是元素的名稱,“(書+)”表示書架元素中有一個(gè)或者多個(gè)名稱為“書”的元素,其中字符“+”表示它所修飾的元素必須出現(xiàn)一次或者多次。(2)“書”是元素名稱,“(書名,作者,售價(jià))”表示元素書包含書名、作者、售價(jià)這三個(gè)子元素,并且這些子元素要按照順序依次出現(xiàn)。(3)“書名”、“作者”和“售價(jià)”都是元素名稱,“(#PCDATA)”表示元素中嵌套的內(nèi)容是普通的文本字符串。DTD約束文檔的解釋2.1.3DTD約束在XML文檔中引入外部DTD文件有兩種方式,具體如下DTD的引入第1種方式:<!DOCTYPE根元素名稱SYSTEM"外部DTD文件的URI">第2種方式:<!DOCTYPE根元素名稱PUBLIC"DTD名稱""外部DTD文件的URI">第1種方式用來引用本地的DTD文件;第2種方式用來引用公共的DTD文件,其中“外部DTD文件的URI”指的是DTD文件在本地存放的位置,對于第1種方式,它可以是XML文檔的相對路徑,也可以是一個(gè)絕對路徑,對于第2種方式,它是Internet上的一個(gè)絕對URL地址。2.1.3DTD約束對文件book.xml進(jìn)行修改,在XML文檔中引入本地的DTD文件book.dtd<?xmlversion="1.1"encoding="UTF-8"?><!DOCTYPE書架SYSTEM"book.dtd"><書架> <書> <書名>Java基礎(chǔ)案例教程</書名> <作者>黑馬程序員</作者> <售價(jià)>54.00元</售價(jià)> </書> <書> <書名>Java基礎(chǔ)入門</書名> <作者>黑馬程序員</作者> <售價(jià)>59.00元</售價(jià)> </書></書架>2.1.3DTD約束引入一個(gè)公共的DTD文件,則需要在DOCTYPE聲明語句中使用PUBLIC屬性,具體示例如下:<!DOCTYPEweb-appPUBLIC "-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN" "/dtd/web-app_2_3.dtd">其中"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"是DTD名稱,它用于說明DTD符合的標(biāo)準(zhǔn)、所有者的名稱以及對DTD描述的文件進(jìn)行說明,雖然DTD名稱看上去比較復(fù)雜,但這完全是由DTD文件發(fā)布者去考慮的事情,XML文件的編寫者只要把DTD文件發(fā)布者事先定義好的DTD標(biāo)識名稱進(jìn)行復(fù)制就可以了。2.1.3DTD約束DTD對XML文檔的約束,除了通過外部引入方式實(shí)現(xiàn)外,還可以采用內(nèi)嵌的方式。在XML中直接嵌入DTD定義語句的完整語法格式如下所示:<?xmlversion="1.1"encoding="UTF-8"standalone="yes"?><!DOCTYPE根元素名[ DTD定義語句 ……]>2.1.3DTD約束對book.xml進(jìn)行修改,在book.xml文檔中直接嵌入book.dtd文件。<?xmlversion="1.1"encoding="UTF-8"standalone="yes"?><!DOCTYPE書架[ <!ELEMENT書架(書+)> <!ELEMENT書(書名,作者,售價(jià))> <!ELEMENT書名(#PCDATA)> <!ELEMENT作者(#PCDATA)> <!ELEMENT售價(jià)(#PCDATA)>]><書架> <書> <書名>Java基礎(chǔ)案例教程</書名> <作者>黑馬程序員</作者> <售價(jià)>54.00元</售價(jià)> </書> <書> <書名>Java基礎(chǔ)入門</書名> <作者>黑馬程序員</作者> <售價(jià)>59.00元</售價(jià)> </書></書架>2.1.3DTD約束在編寫XML文檔時(shí),需要掌握XML語法。同理,在編寫DTD文檔時(shí),也需要遵循DTD的語法。DTD的結(jié)構(gòu)一般由元素類型定義、屬性定義、實(shí)體定義、記號定義等構(gòu)成,一個(gè)典型的DTD文檔類型定義會(huì)把將來要?jiǎng)?chuàng)建的XML文檔的元素結(jié)構(gòu)、屬性類型、實(shí)體引用等預(yù)先進(jìn)行定義。DTD約束的語法2.1.3DTD約束元素是XML文檔的基本組成部分,在DTD定義中,每一條<!ELEMENT…>語句用于定義一個(gè)元素,基本語法格式如下所示:DTD約束的語法—元素定義<!ELEMENT元素名稱元素內(nèi)容>在上面元素的定義語法格式中,包含了“元素名稱”和“元素內(nèi)容”。其中,“元素名稱”是被約束的XML文檔中的元素,“元素內(nèi)容”是對元素包含內(nèi)容的聲明,其內(nèi)容包括數(shù)據(jù)類型和符號兩部分。2.1.3DTD約束1)#PCDATA:表示元素中嵌套的內(nèi)容是普通文本字符串,其中關(guān)鍵字PCDATA是ParsedCharacterData的簡寫。2)子元素:說明元素包含其他元素。通常用一對小括號()將元素中要嵌套的一組子元素括起來。3)混合內(nèi)容:表示元素既可以包含字符數(shù)據(jù),也可以包含子元素?;旌蟽?nèi)容必須被定義零個(gè)或多個(gè)。4)EMPTY:表示該元素既不包含字符數(shù)據(jù),也不包含子元素,是一個(gè)空元素。如果在文檔中元素本身已經(jīng)表明了明確的含義,就可以在DTD中用關(guān)鍵字EMPTY表明空元素。5)ANY:表示該元素可以包含任何字符數(shù)據(jù)和子元素。元素內(nèi)容2.1.3DTD約束在定義元素時(shí),元素內(nèi)容可以包含一些符號,不同的符號具有不同的作用,下面介紹一些常見的符號。問號[?]:表示該對象可以出現(xiàn)0次或1次。星號[*]:表示該對象可以出現(xiàn)0次或多次。加號[+]:表示該對象可以出現(xiàn)1次或多次。豎線[|]:表示列出的對象中選擇1個(gè)。逗號[,]:表示對象必須按照指定的順序出現(xiàn)。括號[()]:用于給元素進(jìn)行分組。元素內(nèi)容中需要注意的2.1.3DTD約束在DTD文檔中,定義元素的同時(shí),還可以為元素定義屬性。DTD屬性定義的基本語法格式如下所示:屬性定義<!ATTLIST元素名屬性名1屬性類型設(shè)置說明屬性名2屬性類型設(shè)置說明......>

在上面屬性定義的語法格式中,“元素名”是屬性所屬元素的名字,“屬性名”是屬性的名稱,“屬性類型”則是用來指定該屬性是屬于哪種類型,“設(shè)置說明”用來說明該屬性是否必須出現(xiàn)。2.1.3DTD約束設(shè)置說明

設(shè)置說明含義#REQUIRED表示元素的該屬性是必須的,例如,當(dāng)定義聯(lián)系人信息的DTD時(shí),我們希望每一個(gè)聯(lián)系人都有一個(gè)聯(lián)系電話屬性,這時(shí),可以在屬性聲明時(shí),使用REQUIRED#IMPLIED表示元素可以包含該屬性,也可以不包含該屬性。例如,當(dāng)定義一本書的信息時(shí),發(fā)現(xiàn)書的頁數(shù)屬性對讀者無關(guān)緊要,這時(shí),在屬性聲明時(shí),可以使用IMPLIED#FIXED表示一個(gè)固定的屬性默認(rèn)值,在XML文檔中不能將該屬性設(shè)置為其他值。使用#FIXED關(guān)鍵字時(shí),還需要為該屬性提供一個(gè)默認(rèn)值。當(dāng)XML文檔中沒有定義該屬性時(shí),其值將被自動(dòng)設(shè)置為DTD中定義的默認(rèn)值默認(rèn)值和FIXED一樣,如果元素不包含該屬性,該屬性將被自動(dòng)設(shè)置為DTD中定義的默認(rèn)值。不同的是,該屬性的值是可以改變的,如果XML文件中設(shè)置了該屬性,新的屬性值會(huì)覆蓋DTD中定義的默認(rèn)值2.1.3DTD約束屬性類型—CDATACDATA是最常用的一種屬性類型,表明屬性類型是字符數(shù)據(jù),與元素內(nèi)容說明中的#PCDATA相同。當(dāng)然,在屬性設(shè)置值中出現(xiàn)的特殊字符,也需要使用其轉(zhuǎn)義字符序列表示,例如,用“&”表示字符“&”,用“<”表示字符“<”等。2.1.3DTD約束屬性類型—Enumerated(枚舉類型)在聲明屬性時(shí),可以限制屬性的取值只能從一個(gè)列表中選擇,這類屬性屬于Enumerated(枚舉類型)2.1.3DTD約束屬性類型—ID一個(gè)ID類型的屬性用于唯一標(biāo)識XML文檔中的某個(gè)元素。ID類型的屬性值必須遵守XML名稱定義的規(guī)則。一個(gè)元素只能有一個(gè)ID類型的屬性,而且ID類型的屬性必須設(shè)置為#IMPLIED或#REQUIRED。因?yàn)镮D類型屬性的每一個(gè)取值都是用來標(biāo)識一個(gè)特定的元素,所以為ID類型的屬性提供默認(rèn)值,特別是固定的默認(rèn)值是毫無意義的。2.1.3DTD約束屬性類型除了講述的幾種屬性類型外,DTD約束中還有IDREF、IDREFS、NMTOKEN、NMTOKENS、NOTATION、ENTITY和ENTITYS幾種屬性類型,由于篇幅有限,此處就不一一列舉。2.1.4Schema約束先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握Schema約束的名稱空間,如何引入Schema文檔,以及Schema語法2.1.4Schema約束什么是Schema約束同DTD一樣,XMLSchema也是一種用于定義和描述XML文檔結(jié)構(gòu)與內(nèi)容的模式語言,它的出現(xiàn)克服了DTD的局限性。2.1.4Schema約束Schema約束的優(yōu)點(diǎn)(1)DTD采用的是非XML語法格式,缺乏對文檔結(jié)構(gòu)、元素、數(shù)據(jù)類型等全面的描述。XMLSchema采用的是XML語法格式,而且它本身也是一種XML文檔,因此,XMLSchema語法格式比DTD更好理解。(2)XML有非常高的合法性要求,XMLDTD對XML的描述,往往也被用作驗(yàn)證XML合法性的一個(gè)基礎(chǔ),但是XMLDTD本身的合法性卻缺少較好的驗(yàn)證機(jī)制,必需獨(dú)立處理。XMLSchema則不同,它與XML有著同樣的合法性驗(yàn)證機(jī)制。(3)XMLSchema對名稱空間支持得非常好,而DTD幾乎不支持名稱空間。(4)DTD支持的數(shù)據(jù)類型非常有限。(5)DTD定義約束的能力非常有限,無法對XML實(shí)例文檔作出更細(xì)致的語義限制。2.1.4Schema約束Schema約束的文檔XMLSchema的功能比DTD強(qiáng)大很多,但相應(yīng)的語法也比DTD復(fù)雜很多。接下來看一個(gè)簡單的Schema文檔,<?xmlversion="1.0"?><xs:schemaxmlns:xs="/2001/XMLSchema"><xs:elementname="root"type="xs:string"/></xs:schema>Schema文檔,以xsd作為后綴名,以xs:schema作為根元素,表示模式定義的開始。2.1.4Schema約束名稱空間一個(gè)XML文檔可以引入多個(gè)約束文檔,但是,由于約束文檔中的元素或?qū)傩远际亲远x的,所以在XML文檔中,極有可能出現(xiàn)代表不同含義的同名元素或?qū)傩?,?dǎo)致名稱發(fā)生沖突。為此,在XML文檔中,提供了名稱空間,它可以唯一標(biāo)識一個(gè)元素或者屬性。這就好比打車去小營,由于北京有兩個(gè)地方叫小營,為了避免司機(jī)走錯(cuò),我們就會(huì)說“去亞運(yùn)村的小營”或者“去清河的小營”。這時(shí)的亞運(yùn)村或者清河就相當(dāng)于一個(gè)名稱空間。2.1.4Schema約束聲明名稱空間的格式名稱空間的聲明就是在XML文檔中為某個(gè)模式文檔的名稱空間指定一個(gè)臨時(shí)名稱,它通過一系列的保留屬性來聲明,這種屬性的名字必須是以“xmlns”或者以“xmlns:”作為前綴。它與其他任何XML屬性一樣,都可以通過直接或者使用默認(rèn)的方式給出。名稱空間聲明的語法格式如下所示:

<元素名xmlns:prefixname="URI">注意:元素名指的是在哪一個(gè)元素上聲明名稱空間,在這個(gè)元素上聲明的名稱空間適用于聲明它的元素和屬性,以及該元素中嵌套的所有元素及其屬性。xmlns:prefixname指的是該元素的屬性名,它所對應(yīng)的值是一個(gè)URI引用,用來標(biāo)識該名稱空間的名稱。需要注意的是,如果有兩個(gè)URI并且其組成的字符完全相同,就可以認(rèn)為它們標(biāo)識的是同一個(gè)名稱空間。2.1.4Schema約束對book.xml進(jìn)行修改,在book.xml文檔中學(xué)習(xí)名稱空間的使用。<?xmlversion="1.1"encoding="UTF-8"?><it315:書架xmlns:it315="/xmlbook/schema"> <it315:書> <it315:書名>Java基礎(chǔ)案例教程</it315:書名> <it315:作者>黑馬程序員</it315:作者> <it315:售價(jià)>54.00元</it315:售價(jià)> </it315:書></it315:書架>注意:在聲明名稱空間時(shí),有兩個(gè)前綴是不允許使用的,它們是xml和xmlns。xml前綴被定義為與名稱空間名字/XML/1998/namespace綁定,只能用于XML1.0規(guī)范中定義的xml:space和xml:lang屬性。前綴xmlns僅用于聲明名稱空間的綁定,它被定義為與名稱空間名字/2000/xmlns綁定。2.1.4Schema約束引入Schema文檔將XML文檔與Schema文件進(jìn)行關(guān)聯(lián)有兩種方式:(1)使用名稱空間引入XMLSchema文檔在使用名稱空間引入XMLSchema文檔時(shí),需要通過屬性xsi:schemaLocation來聲明名稱空間的文檔,xsi:schemaLocation屬性是在標(biāo)準(zhǔn)名稱空間“/2001/XMLSchema-instance”中定義的,在該屬性中,包含了兩個(gè)URI,這兩個(gè)URI之間用空白符分隔。其中,第一個(gè)URI是名稱空間的名稱,第二個(gè)URI是文檔的位置。(2)通過xsi:noNamespaceSchemaLocation屬性直接指定通過xsi:noNamespaceSchemaLocation屬性直接指定,noNamespaceSchemaLocation屬性也是在標(biāo)準(zhǔn)名稱空間“/2001/XMLSchema-instance”中定義的,它用于定義指定文檔的位置。2.1.4Schema約束Schema語法-元素定義Schema和DTD一樣,都可以定義XML文檔中的元素。在Schema文檔中,元素定義的語法格式如下所示:<xs:elementname="名稱"type="類型"/>element用于聲明一個(gè)元素,名稱指的是元素的名稱,類型指元素的數(shù)據(jù)類型。在XMLSchema中有很多內(nèi)建的數(shù)據(jù)類型,其中最常用的有以下幾種:

xs:string:表示字符串類型xs:decimal:表示小數(shù)類型xs:integer:表示整數(shù)類型xs:boolean:表示布爾類型xs:date:表示日期類型xs:time:表示時(shí)間類型2.1.4Schema約束Schema語法-元素定義使用元素的定義的XML示例代碼<lastname>Smith</lastname><age>28</age><dateborn>1980-03-27</dateborn>這三個(gè)元素對應(yīng)的Schema定義如下所示:<xs:elementname="lastname"type="xs:string"/><xs:elementname="age"type="xs:integer"/><xs:elementname="dateborn"type="xs:date"/>2.1.4Schema約束Schema語法-屬性的定義在Schema文檔中,屬性定義的語法格式如下所示:<xs:attributename="xxx"type="yyy"/>xxx指的是屬性名稱,yyy指的是屬性的數(shù)據(jù)類型。其中,屬性的常用數(shù)據(jù)類型與元素相同,都使用的是XMLSchema中內(nèi)創(chuàng)建的數(shù)據(jù)類型。2.1.4Schema約束Schema語法-簡單類型在XMLSchema文檔中,只包含字符數(shù)據(jù)的元素都是簡單類型的。簡單類型使用

xs:simpleType元素來定義。如果想對現(xiàn)有元素內(nèi)容的類型進(jìn)行限制,則需要使用xs:restriction元素。接下來通過以下幾種情況詳細(xì)介紹如何對簡單類型元素的內(nèi)容進(jìn)行限定。2.1.4Schema約束Schema語法-簡單類型xs:minInclusive和xs:maxInclusive元素對值的限定例如,當(dāng)我們定義一個(gè)雇員的年齡時(shí),雇員的年齡要求是18~58周歲之間,這時(shí),需要對年齡“age”這個(gè)元素進(jìn)行限定,具體示例代碼如下所示:<xs:elementname="age"><xs:simpleType><xs:restrictionbase="xs:integer"><xs:minInclusivevalue="18"/><xs:maxInclusivevalue="58"/></xs:restriction></xs:simpleType></xs:element>2.1.4Schema約束Schema語法-簡單類型xs:enumeration元素對一組值的限定如果希望將XML元素的內(nèi)容限制為一組可接受的值,可以使用枚舉約束(enumerationconstraint),例如,要限定一個(gè)元素名為Car的元素,可接受的值只有:Audi、Golf、BMW,具體示例如下:<xs:elementname="car"><xs:simpleType><xs:restrictionbase="xs:string"><xs:enumerationvalue="Audi"/><xs:enumerationvalue="Golf"/><xs:enumerationvalue="BMW"/></xs:restriction></xs:simpleType></xs:element>2.1.4Schema約束Schema語法-簡單類型xs:pattern元素對一系列值的限定如果希望把XML元素的內(nèi)容限制定義為一系列可使用的數(shù)字或字母,可以使用模式約束(patternconstraint)。例如,要定義一個(gè)帶有限定的元素“l(fā)etter”,要求可接受的值只能是字母a-z其中一個(gè),具體示例如下:<xs:elementname="letter"><xs:simpleType><xs:restrictionbase="xs:string"><xs:patternvalue="[a-z]"/></xs:restriction></xs:simpleType></xs:element>2.1.4Schema約束Schema語法-簡單類型xs:restriction元素對空白字符的限定在XML文檔中,空白字符比較特殊,如果需要對空白字符(whitespacecharacters)進(jìn)行處理,可以使用whiteSpace元素。whiteSpace元素有三個(gè)屬性值可以設(shè)定,分別是preserve、replace和collapse。其中,preserve表示不對元素中的任何空白字符進(jìn)行處理,replace表示移除所有的空白字符,collapse表示將所有的空白字符縮減為一個(gè)單一字符。接下來以preserve為例,學(xué)習(xí)如何對空白字符進(jìn)行限定,具體示例如下:<xs:elementname="address"><xs:simpleType><xs:restrictionbase="xs:string"><xs:whiteSpacevalue="preserve"/></xs:restriction></xs:simpleType></xs:element>2.1.4Schema約束Schema語法-復(fù)雜類型在定義復(fù)雜類型時(shí),需要使用xs:complexContent元素來定義。復(fù)雜類型的元素可以包含子元素和屬性,這樣的元素稱為復(fù)合元素。在定義復(fù)合元素時(shí),如果元素的開始標(biāo)簽和結(jié)束標(biāo)簽之間只包含字符數(shù)據(jù)內(nèi)容,那么這樣的內(nèi)容是簡易內(nèi)容,需要使用xs:simpleContent元素來定義。反之,元素的內(nèi)容都是復(fù)雜內(nèi)容,需要使用xs:complexContent元素來定義。復(fù)合元素有4種基本類型,接下來針對這4種基本類型分別進(jìn)行講解。2.1.4Schema約束Schema語法-復(fù)雜類型空元素這里的空元素指不包含內(nèi)容,只包含屬性的元素,具體示例如下:<productprodid="1345"/>在上面的元素定義中,沒有定義元素“product”的內(nèi)容,這時(shí),空元素在XMLSchema文檔中對應(yīng)的定義方式如下所示:<xs:elementname="product"><xs:complexType><xs:attributename="prodid"type="xs:positiveInteger"/></xs:complexType></xs:element>2.1.4Schema約束Schema語法-復(fù)雜類型包含其他元素的元素對于XML文檔中包含其他元素的元素,例如下面的示例代碼:<person><firstname>John</firstname><lastname>Smith</lastname></person>2.1.4Schema約束Schema語法-復(fù)雜類型元素person嵌套了兩個(gè)元素,分別是“firstname”和“l(fā)astname”。這時(shí),在Schema文檔中對應(yīng)的定義方式如下所示:<xs:elementname="person"><xs:complexType><xs:sequence><xs:elementname="firstname"type="xs:string"/><xs:elementname="lastname"type="xs:string"/></xs:sequence></xs:complexType></xs:element>2.1.4Schema約束Schema語法-復(fù)雜類型僅包含文本的元素對于僅含文本的復(fù)合元素,需要使用“simpleContent”元素添加內(nèi)容。在使用簡易內(nèi)容時(shí),必須在“simpleContent”元素內(nèi)定義擴(kuò)展或限定,這時(shí),需要使用“extension”或“restriction”元素來擴(kuò)展或限制元素的基本簡易類型。請看一個(gè)XML的簡易例子,其中,“shoesize”僅包含文本,具體示例如下:<shoesizecountry="france">35</shoesize>2.1.4Schema約束Schema語法-復(fù)雜類型元素“shoesize”包含了屬性以及元素內(nèi)容,針對這種僅包含文本的元素,需要使用extension來對元素的類型進(jìn)行擴(kuò)展,在Schema文檔中對應(yīng)的定義方式如下所示:<xs:elementname="shoesize"><xs:complexType><xs:simpleContent><xs:extensionbase="xs:integer"><xs:attributename="country"type="xs:string"/></xs:extension></xs:simpleContent></xs:complexType></xs:element>2.1.4Schema約束Schema語法-復(fù)雜類型包含元素和文本的元素在XML文檔中,某些元素經(jīng)常需要包含文本以及其他元素,例如,下面的這段XML文檔:<letter>DearMr.<name>JohnSmith</name>.Yourorder<orderid>1032</orderid>willbeshippedon<shipdate>2001-07-13</shipdate>.</letter>2.1.4Schema約束Schema語法-復(fù)雜類型包含元素和文本的元素在Schema文檔中對應(yīng)的定義方式如下所示:<xs:elementname="letter"><xs:complexTypemixed="true"><xs:sequence><xs:elementname="name"type="xs:string"/><xs:elementname="orderid"type="xs:positiveInteger"/><xs:elementname="shipdate"type="xs:date"/></xs:sequence></xs:complexType></xs:element>需要注意的是,為了使字符數(shù)據(jù)可以出現(xiàn)在“l(fā)etter”元素的子元素之間,使用了mixed屬性,該屬性用來規(guī)定是否允許字符數(shù)據(jù)出現(xiàn)在復(fù)雜類型的子元素之間,默認(rèn)情況下mixed的值為false。程序開發(fā)體系架構(gòu)2.22.2程序開發(fā)體系架構(gòu)先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解C/S體系架構(gòu)和B/S體系架構(gòu)2.2.1C/S體系架構(gòu)C/S是Client/Server的縮寫,即客戶端/服務(wù)器架構(gòu)。在開發(fā)的過程中,客戶端需要安裝相應(yīng)的軟件才能連接服務(wù)器,并且客戶端軟件承擔(dān)所有的邏輯和運(yùn)算,服務(wù)器只提供數(shù)據(jù)交互的一種體系架構(gòu)。2.2.1C/S體系架構(gòu)C/S架構(gòu)的致命缺點(diǎn)(1)C/S架構(gòu)的客戶端程序安裝在客戶機(jī)上,如果有很多人使用,則安裝的工作量非常巨大。(2)C/S架構(gòu)的客戶端程序負(fù)責(zé)整個(gè)業(yè)務(wù)邏輯和界面顯示,一旦對其進(jìn)行修改,則必須對整個(gè)客戶端程序進(jìn)行修改,不利于軟件的升級與維護(hù)。(3)C/S架構(gòu)的客戶端程序直接與數(shù)據(jù)庫服務(wù)器端建立連接,而數(shù)據(jù)庫服務(wù)器支持的并發(fā)連接數(shù)量有限,這樣就限制了客戶端程序可以同時(shí)運(yùn)行的數(shù)量。2.2.2B/S體系架構(gòu)什么是B/S體系架構(gòu)B/S是Browser/Server的縮寫,即瀏覽器/服務(wù)器架構(gòu)。在開發(fā)過程中,客戶端只需要一個(gè)瀏覽器,即可以實(shí)現(xiàn)與服務(wù)器交互,服務(wù)器承擔(dān)所有的邏輯和計(jì)算,瀏覽器只負(fù)責(zé)將結(jié)果顯示在屏幕上的一種體系架構(gòu)。B/S架構(gòu)最大的優(yōu)點(diǎn)是客戶機(jī)上無需安裝專門的客戶端程序,程序中的業(yè)務(wù)邏輯處理都集中到了Web服務(wù)器上,客戶機(jī)只要安裝一個(gè)瀏覽器就能通過Web服務(wù)器與數(shù)據(jù)庫進(jìn)行交互,并將交互的結(jié)果以網(wǎng)頁的形式展現(xiàn)在瀏覽器中。2.2.2B/S體系架構(gòu)什么是B/S體系架構(gòu)瀏覽器并不是直接與數(shù)據(jù)庫服務(wù)器建立連接,而是通過Web服務(wù)器與數(shù)據(jù)庫服務(wù)器需要建立連接。由此可見,B/S架構(gòu)可以有效地解決數(shù)據(jù)庫并發(fā)數(shù)量有限的問題。2.2.2B/S體系架構(gòu)B/S體系架構(gòu)的優(yōu)點(diǎn)與C/S架構(gòu)相比,B/S架構(gòu)中用戶操作的界面是由Web服務(wù)器創(chuàng)建的,當(dāng)要修改系統(tǒng)提供的用戶操作界面時(shí),只需要在Web服務(wù)器端修改相應(yīng)的網(wǎng)頁文檔即可。由于B/S架構(gòu)有諸多優(yōu)點(diǎn),所以B/S架構(gòu)是目前各類信息管理系統(tǒng)的首選體系架構(gòu),它基本上全面取代了C/S架構(gòu)。Tomcat2.32.3.1Tomcat簡介先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!了解Tomcat的作用2.3.1Tomcat簡介什么是TomcatTomcat是Apache組織的Jakarta項(xiàng)目中的一個(gè)重要子項(xiàng)目,它是Sun公司(已被Oracle收購)推薦的運(yùn)行Servlet和JSP的容器(引擎),其源代碼是完全公開的。Tomcat不僅具有Web服務(wù)器的基本功能,還提供了數(shù)據(jù)庫連接池等許多通用組件功能。Tomcat運(yùn)行穩(wěn)定、可靠、效率高,不僅可以和目前大部分主流的Web服務(wù)器(如Apache、IIS服務(wù)器)一起工作,還可以作為獨(dú)立的Web服務(wù)器軟件。2.3.2Tomcat的安裝和啟動(dòng)先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!熟悉Tomcat的安裝和啟動(dòng)2.3.2Tomcat的安裝和啟動(dòng)Tomcat的目錄下載好Tomcat壓縮文件之后,直接解壓到指定的目錄便可完成Tomcat的安裝。這里將Tomcat壓縮文件直接解壓到D盤的Tomcat文件夾下,解壓后會(huì)產(chǎn)生了一個(gè)apache-tomcat-8.5.16文件夾,打開這個(gè)文件夾可以看到Tomcat的目錄結(jié)構(gòu)。2.3.2Tomcat的安裝和啟動(dòng)Tomcat的目錄Tomcat安裝目錄中包含一系列的子目錄,這些子目錄分別用于存放不同功能的文件。(1)bin:用于存放Tomcat的可執(zhí)行文件和腳本文件(擴(kuò)展名為bat的文件。(2)conf:用于存放Tomcat的各種配置文件,如web.xml、server.xml。(3)lib:用于存放Tomcat服務(wù)器和所有Web應(yīng)用程序需要訪問的JAR文件。(4)logs:用于存放Tomcat的日志文件。(5)temp:用于存放Tomcat運(yùn)行時(shí)產(chǎn)生的臨時(shí)文件。(6)webapps:Web應(yīng)用程序的主要發(fā)布目錄,通常將要發(fā)布的應(yīng)用程序放到這個(gè)目錄下。(7)work:Tomcat的工作目錄,JSP編譯生成的Servlet源文件和字節(jié)碼文件放到這個(gè)目錄下。

2.3.2Tomcat的安裝和啟動(dòng)啟動(dòng)步驟步驟1步驟2步驟3在Tomcat安裝目錄的bin目錄下存放了許多腳本文件,其中,startup.bat就是啟動(dòng)Tomcat的腳本文件。2.3.2Tomcat的安裝和啟動(dòng)步驟2步驟1步驟3啟動(dòng)步驟雙擊bin目標(biāo)中的startup.bat文件,便會(huì)啟動(dòng)Tomcat服務(wù)器,此時(shí),可以在彈出的命令行看到一些啟動(dòng)信息。Tomcat啟動(dòng)成功2.3.2Tomcat的安裝和啟動(dòng)步驟1啟動(dòng)步驟步驟3步驟2Tomcat服務(wù)器啟動(dòng)后,在瀏覽器的地址欄中輸入http://localhost:8080或者:8080(localhost和都表示本地計(jì)算機(jī))訪問Tomcat服務(wù)器。2.3.3Tomcat診斷先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握Tomcat診斷,如何解決Tomcat啟動(dòng)后命令行窗口一閃而過的錯(cuò)誤2.3.3Tomcat診斷Tomcat啟動(dòng)的問題雙擊bin目錄中的startup.bat腳本文件時(shí),命令行窗口一閃而過。在這種情況下,由于無法查看到錯(cuò)誤信息,所以無法對Tomcat進(jìn)行診斷,分析出錯(cuò)原因。這時(shí),可以先啟動(dòng)一個(gè)命令行窗口,在這個(gè)命令行窗口中,將目錄切換到Tomcat安裝目錄中的bin目錄,然后在該窗口中執(zhí)行startup.bat命令,就會(huì)看到錯(cuò)誤信息。Tomcat啟動(dòng)時(shí)的錯(cuò)誤信息2.3.3Tomcat診斷Tomcat啟動(dòng)的問題看到錯(cuò)誤提示為“JRE_HOME環(huán)境變量配置不正確,運(yùn)行該程序需要此環(huán)境變量”。這是因?yàn)門omcat服務(wù)器是由Java語言開發(fā)的,它在運(yùn)行時(shí)需要根據(jù)JAVA_HOME或JRE_HOME環(huán)境變量來獲得JRE的安裝位置,從而利用Java虛擬機(jī)來運(yùn)行Tomcat。要解決這個(gè)問題,只需要將JAVA_HOME環(huán)境變量配置成JDK的安裝目錄。2.3.3Tomcat診斷配置JAVA_HOME環(huán)境變量的步驟步驟1右擊桌面圖標(biāo)【計(jì)算機(jī)】→【屬性】→【系統(tǒng)】→【高級系統(tǒng)設(shè)置】,在彈出窗口中單擊“環(huán)境變量”按鈕,此時(shí)會(huì)顯示一個(gè)環(huán)境變量對話框。步驟22.3.3Tomcat診斷配置JAVA_HOME環(huán)境變量的步驟單擊“系統(tǒng)變量”區(qū)域的“新建”按鈕,彈出編輯系統(tǒng)變量對話框,將變量名的文本區(qū)域值設(shè)置為“JAVA_HOME”,變量的文本區(qū)域值設(shè)置為JDK的安裝目錄“D:\Java\jdk1.8.0_201”。步驟2步驟12.3.3Tomcat診斷Tomcat啟動(dòng)的問題需要注意的是,配置完JAVA_HOME后,可將原來配置在Path環(huán)境變量中的JDK安裝路徑替換為“%JAVA_HOME%\bin;”,其中%JAVA_HOME%代表環(huán)境變量JAVA_HOME的當(dāng)前值。路徑末尾用英文半角分號(;)結(jié)束,與其他Path變量值路徑隔開。這樣做的好處是,當(dāng)JDK的版本或安裝路徑發(fā)生變化時(shí),只需修改JAVA_HOME的變量值,而Path環(huán)境變量和其他引用“JAVA_HOME”的位置不需要改變。腳下留心Tomcat端口號被占用Tomcat在啟動(dòng)時(shí)可能會(huì)出現(xiàn)啟動(dòng)失敗的情況,這種情況還可能是因?yàn)門omcat服務(wù)器所使用的網(wǎng)絡(luò)監(jiān)聽端口被其他服務(wù)程序占用所導(dǎo)致?,F(xiàn)在很多安全工具都提供查看網(wǎng)絡(luò)監(jiān)聽端口的功能,如360安全衛(wèi)士、QQ管家等。此外,也可以通過在命令行窗口中輸入“netstat-na”命令,查看本機(jī)運(yùn)行的程序都占用了哪些端口,如果有程序占用了8080端口,則可以在任務(wù)管理器的“進(jìn)程”選項(xiàng)卡中結(jié)束它的進(jìn)程,之后重新啟動(dòng)Tomcat服務(wù)器,在瀏覽器中輸入http://localhost:8080就能看到Tomcat的首頁。腳下留心Tomcat端口號被占用如果在“進(jìn)程”選項(xiàng)卡中無法結(jié)束占用8080端口的程序,就需要在Tomcat的server.xml的配置文件中修改Tomcat監(jiān)聽的端口號。使用記事本打開server.xml文件,在server.xml文件中有一個(gè)<Connector>元素,該元素中有一個(gè)port屬性,這個(gè)屬性就是用于配置Tomcat服務(wù)器監(jiān)聽的端口號。Tomcat監(jiān)聽的端口號可以是0~65535之間的任意一個(gè)整數(shù),如果出現(xiàn)端口號被占用的情況,就可以修改這個(gè)port屬性的值來修改端口號。腳下留心Tomcat端口號被占用如果將Tomcat服務(wù)器的端口號修改為80,那么在瀏覽器地址欄中輸入http://localhost:80訪問Tomcat服務(wù)器,此時(shí)會(huì)發(fā)現(xiàn)80端口號自動(dòng)消失了,這是因?yàn)镠TTP規(guī)定Web服務(wù)器使用的默認(rèn)端口為80,訪問監(jiān)聽80端口的Web應(yīng)用時(shí),端口號可以省略不寫,即輸入http://localhost就可訪問Tomcat服務(wù)器。2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置Tomcat先定一個(gè)小目標(biāo)!

先定一個(gè)小目標(biāo)!掌握如何在IDEA中配置Tomcat2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置TomcatSTEP01啟動(dòng)IntelliJ

IDEA開發(fā)工具,單擊工具欄中的【File】→【new】→【Project】選項(xiàng),此時(shí)會(huì)彈出一個(gè)NewProject界面。2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置TomcatSTEP02在NewProject界面中,單擊左邊菜單中的“Java”選項(xiàng),在展開的菜單中選擇“WebApplication”,單擊“Next”按鈕,進(jìn)入Web項(xiàng)目命名界面。2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置TomcatSTEP03在Projectname文本框中對Web項(xiàng)目命名,單擊“Finish”,項(xiàng)目創(chuàng)建完成。項(xiàng)目創(chuàng)建成功之后,接下來開始配置項(xiàng)目。在IDEA的工具欄中,單擊【File】→【ProjectStructrue】選項(xiàng),進(jìn)入ProjectStructrue界面。2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置TomcatSTEP04在ProjectStructrue界面中單擊左側(cè)菜單中的“Modules”選項(xiàng),單擊“Source”配置項(xiàng),在項(xiàng)目web文件夾下的WEB-INF文件夾下創(chuàng)建classes和lib文件夾。2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置TomcatSTEP05單擊ProjectStructrue界面的“Paths”配置項(xiàng),將outputpath與Testoutputpath的地址修改為ProjectStructrue界面中創(chuàng)建的classes的地址,該操作的作用是配置所有編譯為.class的文件都編譯輸出在此文件夾下。2.3.4動(dòng)手實(shí)踐:在IntelliJIDEA中配置TomcatS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論