JavaWeb開發(fā)任務(wù)教程_第1頁
JavaWeb開發(fā)任務(wù)教程_第2頁
JavaWeb開發(fā)任務(wù)教程_第3頁
JavaWeb開發(fā)任務(wù)教程_第4頁
JavaWeb開發(fā)任務(wù)教程_第5頁
已閱讀5頁,還剩238頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)閱讀全文

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

文檔簡介

高等職業(yè)教育“十四五”規(guī)劃教材

JavaWeb開發(fā)任務(wù)教程

嚴(yán)梅吳道君何受倩◎主編

黃龍泉◎副主編

內(nèi)容簡介

本書從JavaWeb應(yīng)用開發(fā)技術(shù)的原理出發(fā),結(jié)合網(wǎng)站應(yīng)用開發(fā)實(shí)例對(duì)各知識(shí)點(diǎn)進(jìn)行

詳細(xì)講解,并將知識(shí)點(diǎn)融入實(shí)際項(xiàng)目的開發(fā)中,項(xiàng)目中的每個(gè)任務(wù)解決一個(gè)實(shí)際開發(fā)中

的技術(shù)要點(diǎn)。全書共分8個(gè)單元,包括搭建JavaWeb開發(fā)環(huán)境、Servlet編程基礎(chǔ)、JSP

編程技術(shù)、文件上傳和下載、過濾器和監(jiān)聽器、JDBC數(shù)據(jù)庫技術(shù)、EL表達(dá)式和JSTL

標(biāo)簽、綜合項(xiàng)目實(shí)戰(zhàn)—在線購物商城。完成本書的學(xué)習(xí)后,讀者即可使用JavaWeb

相關(guān)技術(shù)搭建一個(gè)動(dòng)態(tài)網(wǎng)站。

本書適合作為高等職業(yè)院校計(jì)算機(jī)相關(guān)專業(yè)的教材,也可作為各類Java技術(shù)培訓(xùn)班

的教材,以及具有一定Java語言基礎(chǔ)的人員的參考用書。

圖書在版編目(CIP)數(shù)據(jù)

JavaWeb開發(fā)任務(wù)教程/嚴(yán)梅,吳道君,何受倩主編.—2版.—北京:

中國鐵道出版社有限公司,2022.1

高等職業(yè)教育“十四五”規(guī)劃教材

ISBN978-7-113-27945-5

Ⅰ.①J…Ⅱ.①嚴(yán)…②吳…③何…Ⅲ.①JAVA語言-程序設(shè)計(jì)-

高等職業(yè)教育-教材Ⅳ.①TP312.8

中國版本圖書館CIP數(shù)據(jù)核字(2021)第086198號(hào)

書名:JavaWeb開發(fā)任務(wù)教程

作者:嚴(yán)梅吳道君何受倩

策劃:韓從付編輯部電話:(010)63549508

責(zé)任編輯:陸慧萍彭立輝

封面設(shè)計(jì):劉穎

責(zé)任校對(duì):苗丹

責(zé)任印制:樊啟鵬

出版發(fā)行:中國鐵道出版社有限公司(100054,北京市西城區(qū)右安門西街8號(hào))

網(wǎng)址:/51eds/

印刷:三河市興博印務(wù)有限公司

版次:2017年8月第1版2022年1月第2版2022年1月第1次印刷

開本:787mm×1092mm1/16印張:15字?jǐn)?shù):353千

書號(hào):ISBN978-7-113-27945-5

定價(jià):41.00元

版權(quán)所有侵權(quán)必究

凡購買鐵道版圖書,如有印制質(zhì)量問題,請(qǐng)與本社教材圖書營銷部聯(lián)系調(diào)換。電話:(010)63550836

打擊盜版舉報(bào)電話:(010)63549461

前言

Java是一種簡單的、跨平臺(tái)的、面向?qū)ο蟮摹⒎植际降?、解釋性的、健壯的、?/p>

全的、可移植的、性能優(yōu)異的語言,自1995年Sun公司推出Java語言之后,已有

二十多年的發(fā)展歷史,出現(xiàn)了許多與之相關(guān)的技術(shù)和應(yīng)用。JavaWeb開發(fā)是用Java

技術(shù)進(jìn)行互聯(lián)網(wǎng)領(lǐng)域的應(yīng)用開發(fā),目前,JavaWeb技術(shù)已經(jīng)成為企業(yè)進(jìn)行Web開發(fā)

所采用的主流解決方案之一。JavaWeb技術(shù)包括Servlet技術(shù)、JSP技術(shù)、JDBC技術(shù),

以及Struts、Spring和Hibernate開源框架等一系列應(yīng)用技術(shù)。本書作為JavaWeb開發(fā)

入門級(jí)教程,以Servlet技術(shù)、JSP技術(shù)為重點(diǎn),詳細(xì)介紹了應(yīng)用Java技術(shù)開發(fā)Web

應(yīng)用的相關(guān)技術(shù)及編程方法。

本書致力于將知識(shí)點(diǎn)融入實(shí)際項(xiàng)目的開發(fā)中,從JavaWeb應(yīng)用開發(fā)技術(shù)的原理

出發(fā),結(jié)合網(wǎng)站應(yīng)用開發(fā)實(shí)例對(duì)各知識(shí)點(diǎn)進(jìn)行詳細(xì)講解,每個(gè)任務(wù)解決一個(gè)實(shí)際開發(fā)

中的技術(shù)要點(diǎn)。完成本書學(xué)習(xí)后,讀者能使用JavaWeb相關(guān)技術(shù)搭建一個(gè)動(dòng)態(tài)網(wǎng)站。

本書在第一版的基礎(chǔ)上,將IDE開發(fā)工具更新到行業(yè)內(nèi)更加通用的Eclipse10,將HTML

版本由4.0升級(jí)到了HMTL5,Tomcat由版本7.x升級(jí)到9.x,并為任務(wù)透析部分配備

了微視頻講解,方便讀者掃描學(xué)習(xí)。本書將整個(gè)知識(shí)結(jié)構(gòu)分為8個(gè)單元,每個(gè)單元的

主要內(nèi)容如下:

單元一主要介紹了Web開發(fā)中的常用技術(shù),包括請(qǐng)求響應(yīng)的過程、原理及HTTP

請(qǐng)求響應(yīng)模型相關(guān)的基本知識(shí),以及如何搭建JavaWeb開發(fā)環(huán)境。

單元二主要介紹了Servlet技術(shù),包括Servlet的創(chuàng)建、配置,Servlet的生命周期,

Servlet讀取表單數(shù)據(jù)、處理頁面的跳轉(zhuǎn)、處理頭信息,Servlet數(shù)據(jù)共享域、Cookie的

應(yīng)用等內(nèi)容。

單元三介紹了JSP編程技術(shù),包括JSP的各種語法元素,包括JSP腳本元素、JSP

的指令元素、內(nèi)建對(duì)象、JavaBean等內(nèi)容。

單元四介紹了文件上傳和下載的原理,以及一些常見問題的解決方法。

單元五介紹了過濾器和監(jiān)聽器,包括過濾器的原理、作用、開發(fā)步驟;監(jiān)聽器的

原理、開發(fā)步驟,列舉了常用的監(jiān)聽器的作用和使用方法。

單元六介紹了JDBC數(shù)據(jù)庫技術(shù),使用JDBC中相關(guān)的接口和類實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的

增刪查改,以及事務(wù)、數(shù)據(jù)庫連接池等內(nèi)容。

單元七介紹了EL表達(dá)式和JSTL標(biāo)簽的使用,包括EL運(yùn)算符、如何使用EL將

各數(shù)據(jù)域中的內(nèi)容顯示到頁面上,常見JSTL標(biāo)簽在頁面上的使用等。

I

JavaWeb開發(fā)任務(wù)教程

單元八展示了一個(gè)綜合的網(wǎng)站項(xiàng)目,將前面所學(xué)的知識(shí)進(jìn)行綜合應(yīng)用,介紹了

MVC設(shè)計(jì)模式和DAO設(shè)計(jì)模式,并將設(shè)計(jì)模式運(yùn)用到實(shí)際案例中;介紹了該實(shí)際案

例的總體功能架構(gòu)及數(shù)據(jù)庫的設(shè)計(jì);將網(wǎng)站開發(fā)關(guān)鍵難點(diǎn)技術(shù)做出詳細(xì)的講解,包括

分頁、文本編輯器的使用、購物車、訂單提交、后臺(tái)管理等內(nèi)容。

本書各單元中的任務(wù)按照“任務(wù)描述”→“必備知識(shí)”→“任務(wù)透析”→“課堂

提問”等幾個(gè)環(huán)節(jié)來組織和編排,以任務(wù)為導(dǎo)向,貫穿案例教學(xué)的思想,符合認(rèn)知規(guī)

律,能提高學(xué)習(xí)的質(zhì)量和學(xué)習(xí)效果。本書所有程序全部上機(jī)調(diào)試通過,另外,本書還

提供了多媒體課件和所有的案例程序源碼,可到/51eds/下載。

本書由嚴(yán)梅、吳道君、何受倩任主編,黃龍泉任副主編。其中:單元二、單元三、

單元四、單元八由嚴(yán)梅編寫,單元五、單元六由吳道君編寫,單元七由何受倩編寫,

單元一由黃龍泉編寫。本書由張怡芳、王耀軍審稿。

由于時(shí)間倉促,編者水平有限,書中難免存在疏漏和不足之處,敬請(qǐng)廣大讀者批

評(píng)指正。如果有任何意見和建議,歡迎與我們聯(lián)系,聯(lián)系郵箱:yanmei200801@126.com。

編者

2021年5月

II

目錄

目錄

單元一搭建JavaWeb開發(fā)環(huán)境·······································································1

任務(wù)一理解HTTP請(qǐng)求響應(yīng)模型······················································1

任務(wù)二了解Web應(yīng)用開發(fā)常用技術(shù)··················································9

任務(wù)三搭建JavaWeb開發(fā)環(huán)境·······················································12

單元小結(jié)·····················································································22

思考練習(xí)·····················································································22

單元二Servlet編程基礎(chǔ)·················································································23

任務(wù)一開發(fā)第一個(gè)Servlet程序·······················································23

任務(wù)二測(cè)試Servlet生命周期··························································30

任務(wù)三使用Servlet讀取表單數(shù)據(jù)····················································33

任務(wù)四使用Servlet處理頁面跳轉(zhuǎn)····················································38

任務(wù)五使用Servlet處理頭信息·······················································42

任務(wù)六使用Servlet數(shù)據(jù)共享域·······················································49

任務(wù)七使用Servlet處理Cookie······················································54

單元小結(jié)·····················································································60

思考練習(xí)·····················································································60

單元三JSP編程技術(shù)·······················································································62

任務(wù)一了解JSP··········································································62

任務(wù)二應(yīng)用JSP腳本元素······························································68

任務(wù)三應(yīng)用JSP指令元素······························································72

任務(wù)四應(yīng)用JSP動(dòng)作元素······························································79

任務(wù)五應(yīng)用JSP內(nèi)建對(duì)象······························································88

單元小結(jié)···················································································102

思考練習(xí)···················································································102

單元四文件上傳和下載················································································104

任務(wù)一上傳文件·······································································104

任務(wù)二下載文件·······································································112

單元小結(jié)···················································································116

思考練習(xí)···················································································116

單元五過濾器和監(jiān)聽器·················································································117

任務(wù)一使用過濾器····································································117

任務(wù)二使用監(jiān)聽器····································································128

I

JavaWeb開發(fā)任務(wù)教程

單元小結(jié)···················································································138

思考練習(xí)···················································································138

單元六JDBC數(shù)據(jù)庫技術(shù)··············································································139

任務(wù)一JDBC入門·····································································139

任務(wù)二用Statement實(shí)現(xiàn)CRUD····················································145

任務(wù)三用PreparedStatement實(shí)現(xiàn)CRUD··········································155

任務(wù)四JDBC中處理事務(wù)·····························································161

任務(wù)五應(yīng)用數(shù)據(jù)庫連接池····························································165

單元小結(jié)···················································································170

思考練習(xí)···················································································170

單元七EL表達(dá)式和JSTL標(biāo)簽····································································173

任務(wù)一使用EL表達(dá)式·······························································173

任務(wù)二使用JSTL標(biāo)簽·······························································181

單元小結(jié)···················································································191

思考練習(xí)···················································································191

單元八綜合項(xiàng)目實(shí)戰(zhàn)—在線購物商城·······················································193

任務(wù)一掌握MVC設(shè)計(jì)模式和DAO設(shè)計(jì)模式····································193

任務(wù)二項(xiàng)目設(shè)計(jì)·······································································200

任務(wù)三關(guān)鍵技術(shù)實(shí)現(xiàn)·································································203

思考練習(xí)答案···································································································232

參考文獻(xiàn)···········································································································234

II

單元一搭建JavaWeb開發(fā)環(huán)境

單元一

搭建JavaWeb開發(fā)環(huán)境

理解HTTP請(qǐng)求響應(yīng)模型,了解Web應(yīng)用開發(fā)的技術(shù)及發(fā)展過程,了解常用的

JSP/Servlet容器,掌握搭建Eclipse+Tomcat+MySQL工作環(huán)境的方法,學(xué)會(huì)開發(fā)一個(gè)

基本的JavaWeb項(xiàng)目。

本單元包括以下幾個(gè)任務(wù):

●理解HTTP請(qǐng)求響應(yīng)模型

●了解Web應(yīng)用開發(fā)常用技術(shù)

●搭建JavaWeb開發(fā)環(huán)境

任務(wù)一理解HTTP請(qǐng)求響應(yīng)模型

了解訪問網(wǎng)站的數(shù)據(jù)流轉(zhuǎn)過程,了解HTTP協(xié)議,理解HTTP請(qǐng)求響應(yīng)模型。

1.訪問網(wǎng)站的完整流程

在瀏覽器的地址欄中輸入百度網(wǎng)址,得到百度網(wǎng)站首頁,可以將整個(gè)過程分為7

步。網(wǎng)站請(qǐng)求響應(yīng)示意圖如圖1-1所示。

①客戶機(jī)向DNS服務(wù)器請(qǐng)求解析域名所對(duì)應(yīng)的IP地址。

②DNS系統(tǒng)解析出百度的地址是7:443。

③客戶機(jī)與服務(wù)器建立連接。

④客戶機(jī)發(fā)出讀取文件的請(qǐng)求命令。

⑤服務(wù)器對(duì)客戶機(jī)的請(qǐng)求做出響應(yīng),把百度首頁HTML文本內(nèi)容返回給客戶機(jī)。

⑥釋放連接。

⑦客戶機(jī)解析HTML文本,并顯示百度網(wǎng)站首頁中的內(nèi)容。

1

JavaWeb開發(fā)任務(wù)教程

2.HTTP協(xié)議

超文本傳輸協(xié)議(HyperTextTransferProtocol,HTTP)是互聯(lián)網(wǎng)上應(yīng)用最廣泛的

一種網(wǎng)絡(luò)協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn),HTTP協(xié)議定義Web客戶端

如何從Web服務(wù)器請(qǐng)求Web頁面,以及服務(wù)器如何把Web頁面?zhèn)魉徒o客戶端。設(shè)計(jì)

HTTP的目的是提供一種發(fā)布和接收HTML頁面的方法,它可以使瀏覽器更加高效,

使網(wǎng)絡(luò)傳輸減少,不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的

哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。瀏覽器通過HTTP傳輸

協(xié)議將Web服務(wù)器上站點(diǎn)的網(wǎng)頁代碼提取出來,并翻譯成網(wǎng)頁。

HTTP協(xié)議在發(fā)展過程中,經(jīng)歷了HTTP1.0和HTTP1.1兩個(gè)階段。

HTTP1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接,瀏覽器的每次請(qǐng)求都需要與服

務(wù)器建立一個(gè)TCP連接,服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接,服務(wù)器不跟蹤

每個(gè)客戶也不記錄過去的請(qǐng)求。但是,這也造成了一些性能上的缺陷,例如,一個(gè)包

含有許多圖像的網(wǎng)頁文件中并沒有包含真正的圖像數(shù)據(jù)內(nèi)容,而只是指明了這些圖像

的URL地址。當(dāng)Web瀏覽器訪問這個(gè)網(wǎng)頁文件時(shí),瀏覽器首先要發(fā)出針對(duì)該網(wǎng)頁文

件的請(qǐng)求,當(dāng)瀏覽器解析Web服務(wù)器返回的該網(wǎng)頁文檔中的HTML內(nèi)容時(shí),發(fā)現(xiàn)其

中的<img>圖像標(biāo)簽后,瀏覽器將根據(jù)<img>標(biāo)簽中的src屬性所指定的URL地址再次

向服務(wù)器發(fā)出下載圖像數(shù)據(jù)的請(qǐng)求,如圖1-2所示。

圖1-1網(wǎng)站請(qǐng)求響應(yīng)示意圖圖1-2HTTP1.0訪問圖解

顯然,訪問一個(gè)包含有許多圖像的網(wǎng)頁文件的整個(gè)過程包含了多次請(qǐng)求和響應(yīng),

每次請(qǐng)求和響應(yīng)都需要建立一個(gè)單獨(dú)的連接,每次連接只是傳輸一個(gè)文檔和圖像,

上一次和下一次請(qǐng)求完全分離。即使圖像文件都很小,客戶端和服務(wù)器端每次建立

和關(guān)閉連接也是一個(gè)相對(duì)比較費(fèi)時(shí)的過程,并且會(huì)嚴(yán)重影響客戶機(jī)和服務(wù)器的性能。

當(dāng)一個(gè)網(wǎng)頁文件中同時(shí)包含JavaScript文件、CSS文件等內(nèi)容時(shí),也會(huì)出現(xiàn)類似上述

情況。

為了克服HTTP1.0的這個(gè)缺陷,HTTP1.1支持持久連接,在一個(gè)TCP連接上可以

傳送多個(gè)HTTP請(qǐng)求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲。一個(gè)包含有許多

圖像的網(wǎng)頁文件的多個(gè)請(qǐng)求和應(yīng)答可以在一個(gè)連接中傳輸,但每個(gè)單獨(dú)的網(wǎng)頁文件的

請(qǐng)求和應(yīng)答仍然需要使用各自的連接。HTTP1.1還允許客戶端不用等待上一次請(qǐng)求結(jié)

果返回,就可以發(fā)出下一次請(qǐng)求,但服務(wù)器端必須按照接收到客戶端請(qǐng)求的先后順序

2

單元一搭建JavaWeb開發(fā)環(huán)境

依次回送響應(yīng)結(jié)果,以保證客戶端能夠區(qū)分出每次請(qǐng)求的響應(yīng)內(nèi)容,這樣顯著地減少

了整個(gè)下載過程所需要的時(shí)間?;贖TTP1.1協(xié)議的客戶機(jī)與服務(wù)器的信息交換過程

如圖1-3所示。

圖1-3HTTP1.1訪問圖解

可見,HTTP1.1在繼承了HTTP1.0優(yōu)點(diǎn)的基礎(chǔ)上,也克服了HTTP1.0的性能問題。不

僅如此,HTTP1.1還通過增加更多的請(qǐng)求頭和響應(yīng)頭來改進(jìn)和擴(kuò)充HTTP1.0的功能。例如,

由于HTTP1.0不支持Host請(qǐng)求頭字段,Web瀏覽器無法使用主機(jī)頭名來明確表示要訪問

服務(wù)器上的哪個(gè)Web站點(diǎn),這樣就無法使用Web服務(wù)器在同一個(gè)IP地址和端口號(hào)上配置

多個(gè)虛擬Web站點(diǎn)。在HTTP1.1中增加Host請(qǐng)求頭字段后,Web瀏覽器可以使用主機(jī)頭

名來明確表示要訪問服務(wù)器上的哪個(gè)Web站點(diǎn),這就實(shí)現(xiàn)了在一臺(tái)Web服務(wù)器上可以在

同一個(gè)IP地址和端口號(hào)上使用不同的主機(jī)名來創(chuàng)建多個(gè)虛擬Web站點(diǎn)。HTTP1.1的持續(xù)

連接,也需要增加新的請(qǐng)求頭來幫助實(shí)現(xiàn),例如,Connection請(qǐng)求頭的值為Keep-Alive時(shí),

客戶端通知服務(wù)器返回本次請(qǐng)求結(jié)果后保持連接;Connection請(qǐng)求頭的值為Close時(shí),客

戶端通知服務(wù)器返回本次請(qǐng)求結(jié)果后關(guān)閉連接。HTTP1.1還提供了與身份認(rèn)證、狀態(tài)管理

和Cache緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。

3.URL統(tǒng)一資源定位符

在瀏覽器的地址欄中輸入的網(wǎng)站地址稱為統(tǒng)一資源定位符(UniformResource

Locator,URL),就像每家每戶都有一個(gè)門牌地址一樣,每個(gè)網(wǎng)頁也都有一個(gè)Internet

地址。當(dāng)在瀏覽器的地址欄中輸入一個(gè)URL或者單擊一個(gè)超鏈接時(shí),URL就確定了

要瀏覽的地址。

客戶端是終端用戶,服務(wù)器端是網(wǎng)站。通過使用Web瀏覽器、網(wǎng)絡(luò)爬蟲或者其

他工具,客戶端發(fā)起一個(gè)到某URL地址的HTTP請(qǐng)求,請(qǐng)求訪問資源,如訪問HTML

文件和圖像等。應(yīng)答的服務(wù)器收到請(qǐng)求后,將對(duì)應(yīng)的資源返回給客戶端。

4.HTTP請(qǐng)求/響應(yīng)的步驟

HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型??蛻舳讼蚍?wù)器發(fā)送一個(gè)請(qǐng)求報(bào)文,請(qǐng)求報(bào)文包含

請(qǐng)求的方法、URL、協(xié)議版本、請(qǐng)求頭部和請(qǐng)求數(shù)據(jù)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),響

應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯(cuò)誤代碼、服務(wù)器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。

HTTP請(qǐng)求響應(yīng)的步驟如下:

①客戶端連接到Web服務(wù)器。一個(gè)HTTP客戶端,通常是瀏覽器,與Web服務(wù)

器的HTTP端口(默認(rèn)為80)建立一個(gè)TCP套接字連接。

3

JavaWeb開發(fā)任務(wù)教程

②發(fā)送HTTP請(qǐng)求。通過TCP套接字,客戶端向Web服務(wù)器發(fā)送一個(gè)文本的請(qǐng)

求報(bào)文,一個(gè)請(qǐng)求報(bào)文由請(qǐng)求行、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)4部分組成。

③服務(wù)器接受請(qǐng)求并返回HTTP響應(yīng)。Web服務(wù)器解析請(qǐng)求,定位請(qǐng)求資源。服

務(wù)器將資源副本寫到TCP套接字,由客戶端讀取。一個(gè)響應(yīng)由狀態(tài)行、響應(yīng)頭部、空

行和響應(yīng)數(shù)據(jù)4部分組成。

④釋放連接TCP連接。若Connection模式為Close,則服務(wù)器主動(dòng)關(guān)閉TCP連

接,客戶端被動(dòng)關(guān)閉連接,釋放TCP連接;若Connection模式為Keep-Alive,則該

連接會(huì)保持一段時(shí)間,在該時(shí)間內(nèi)可以繼續(xù)接收請(qǐng)求。

⑤客戶端瀏覽器解析HTML內(nèi)容。客戶端瀏覽器首先解析狀態(tài)行,查看表明請(qǐng)

求是否成功的狀態(tài)代碼,然后解析每一個(gè)響應(yīng)頭,響應(yīng)頭告知以下為若干字節(jié)的HTML

文檔和文檔的字符集??蛻舳藶g覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語法對(duì)其進(jìn)

行格式化,并在瀏覽器窗口中顯示。

5.HTTP報(bào)文結(jié)構(gòu)

HTTP報(bào)文由從客戶機(jī)到服務(wù)器的請(qǐng)求和從服務(wù)器到客戶機(jī)的響應(yīng)構(gòu)成。請(qǐng)求消

息由請(qǐng)求頭、報(bào)文主體組成。其中,請(qǐng)求頭包含請(qǐng)求的方法、URL、協(xié)議版本,以及

請(qǐng)求修飾符、客戶信息和MIME類型等。報(bào)文格式如下:

請(qǐng)求行-通用信息頭-請(qǐng)求頭-實(shí)體頭-報(bào)文主體

典型的請(qǐng)求頭消息內(nèi)容如下:

Get/HTTP1.1

Host:

Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"

Pragma:no-cache

Cache-Control:no-cache

User-Agent:"Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:51.0)Gecko/

20100101Firefox/51.0"

服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括消息協(xié)議的版本,成功或者錯(cuò)誤

的編碼加上包含服務(wù)器信息、實(shí)體元信息以及可能的實(shí)體內(nèi)容。響應(yīng)報(bào)文格式如下:

狀態(tài)行-通用信息頭-響應(yīng)頭-實(shí)體頭-報(bào)文主體

典型的響應(yīng)頭消息內(nèi)容如下:

HTTP/1.0200OK

Date:Mon,20Mar201712:30:21GMT

Expires:Mon,20Mar201712:29:37GMT

Server:Apache/1.3.14(Unix)

Content-type:text/html;charset=utf-8

Last-modified:Tue,17Apr201606:46:28GMT

Content-length:39725426

Content-range:bytes55******/40279980

6.請(qǐng)求方法

HTTP協(xié)議中共定義了8種方法(又稱“動(dòng)作”)來表明對(duì)Request-URI指定的資

源的不同操作方式,其表示的含義如表1-1所示。

4

單元一搭建JavaWeb開發(fā)環(huán)境

表1-1HTTP的8種請(qǐng)求方式

請(qǐng)求方式含義

GET向特定URI的資源發(fā)出請(qǐng)求

向指定URI的資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)

POST

求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的創(chuàng)建和已有資源的修改

返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法。也可以利用向Web服務(wù)器發(fā)送“*”

OPTIONS

的請(qǐng)求來測(cè)試服務(wù)器的功能

向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過響應(yīng)體將不會(huì)被返回。這一方法可以在

HEAD

不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息

PUT向指定資源位置上傳其最新內(nèi)容

DELETE請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源

TRACE回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷

CONNECT保留將來使用

在Web開發(fā)中,最常用的方法為GET方法與POST方法。

(1)GET方法

GET方法是默認(rèn)的HTTP請(qǐng)求方法,經(jīng)常使用GET方法提交表單數(shù)據(jù)。但用GET

方法提交的表單數(shù)據(jù)只經(jīng)過簡單的編碼,同時(shí)作為URL的一部分向Web服務(wù)器發(fā)送,

因此,如果使用GET方法提交表單數(shù)據(jù)就存在安全隱患。例如:

http://localhost/Test/LoginServlet?Name=Tom&Age=30&Password=123

從上面的URL請(qǐng)求中很容易辨認(rèn)出表單提交的內(nèi)容(即“?”之后的內(nèi)容)。另外,

因?yàn)镚ET方法提交的數(shù)據(jù)將作為URL請(qǐng)求的一部分,所以提交的數(shù)據(jù)量不能太大。

(2)POST方法

POST方法是GET方法的一個(gè)替代方法,它主要向Web服務(wù)器提交表單數(shù)據(jù),尤

其是大批量的數(shù)據(jù)。POST方法克服了GET方法的一些缺點(diǎn)。通過POST方法提交表

單數(shù)據(jù)時(shí),數(shù)據(jù)不是作為URL請(qǐng)求的一部分,而是作為請(qǐng)求數(shù)據(jù)正文傳送給Web服

務(wù)器,這就克服了GET方法中的信息無法保密和數(shù)據(jù)量太小的缺點(diǎn)。因此,出于安

全考慮以及對(duì)用戶隱私的尊重,提交表單時(shí)建議采用POST方法。

7.響應(yīng)狀態(tài)碼

服務(wù)器一旦收到請(qǐng)求,會(huì)向客戶端發(fā)回一個(gè)狀態(tài)行,如“HTTP/1.1200OK”和

(響應(yīng)的)消息,其中200就是響應(yīng)狀態(tài)碼。狀態(tài)碼元由3位數(shù)字組成,表示請(qǐng)求是

否被理解或被滿足。

狀態(tài)代碼的第一個(gè)數(shù)字代表當(dāng)前響應(yīng)的類型:

1xx代表信息,即請(qǐng)求已被服務(wù)器接收,繼續(xù)處理。

2xx表示成功,即請(qǐng)求已成功被服務(wù)器接收、理解并接受。

3xx表示重定向,即需要后續(xù)操作才能完成這一請(qǐng)求。

4xx表示請(qǐng)求錯(cuò)誤,即請(qǐng)求含有詞法錯(cuò)誤或者無法被執(zhí)行。

5xx表示服務(wù)器錯(cuò)誤,即服務(wù)器在處理某個(gè)正確請(qǐng)求時(shí)發(fā)生錯(cuò)誤。

具體編碼代表的意義如表1-2所示。

5

JavaWeb開發(fā)任務(wù)教程

表1-2HTTP消息狀態(tài)碼詳解

消息描述

1xx:信息

服務(wù)器僅接收到部分請(qǐng)求,但是一旦服務(wù)器并沒有拒絕該請(qǐng)求,客戶端應(yīng)該繼

100Continue

續(xù)發(fā)送其余的請(qǐng)求

101SwitchingProtocols服務(wù)器轉(zhuǎn)換協(xié)議:服務(wù)器將遵從客戶的請(qǐng)求轉(zhuǎn)換到另外一種協(xié)議

2xx:成功

200OK請(qǐng)求成功(其后是對(duì)GET和POST請(qǐng)求的應(yīng)答文檔)

201Created請(qǐng)求被創(chuàng)建完成,同時(shí)新的資源被創(chuàng)建

202Accepted供處理的請(qǐng)求已被接受,但是處理未完成

203Non-authoritative

文檔已經(jīng)正常地返回,但一些應(yīng)答頭可能不正確,因?yàn)槭褂玫氖俏臋n的副本

Information

沒有新文檔,瀏覽器應(yīng)該繼續(xù)顯示原來的文檔。如果用戶定期地刷新頁面,而

204NoContent

Servlet可以確定用戶文檔足夠新,這個(gè)狀態(tài)代碼很有用

沒有新文檔,瀏覽器應(yīng)該重置它所顯示的內(nèi)容。用來強(qiáng)制瀏覽器清除表單輸入

205ResetContent

內(nèi)容

206PartialContent客戶發(fā)送了一個(gè)帶有Range頭的GET請(qǐng)求,服務(wù)器完成了它

3xx:重定向

300MultipleChoices多重選擇。鏈接列表。用戶可以選擇某鏈接到達(dá)目的地。最多允許5個(gè)地址

301MovedPermanently所請(qǐng)求的頁面已經(jīng)轉(zhuǎn)移至新的URL

302Found所請(qǐng)求的頁面已經(jīng)臨時(shí)轉(zhuǎn)移至新的URL

303SeeOther所請(qǐng)求的頁面可在別的URL下被找到

未按預(yù)期修改文檔。客戶端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般提

304NotModified供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,

原來緩沖的文檔還可以繼續(xù)使用

305UseProxy客戶請(qǐng)求的文檔應(yīng)該通過Location頭所指明的代理服務(wù)器提取

306Unused此代碼被用于前一版本,目前已不再使用,但是代碼依然被保留

307TemporaryRedirect被請(qǐng)求的頁面已經(jīng)臨時(shí)移至新的URL

4xx:客戶端錯(cuò)誤

400BadRequest服務(wù)器未能理解請(qǐng)求

401Unauthorized被請(qǐng)求的頁面需要用戶名和密碼

401.1登錄失敗

401.2服務(wù)器配置導(dǎo)致登錄失敗

401.3由于ACL對(duì)資源的限制而未獲得授權(quán)

6

單元一搭建JavaWeb開發(fā)環(huán)境

續(xù)表

消息描述

401.4篩選器授權(quán)失敗

401.5ISAPI/CGI應(yīng)用程序授權(quán)失敗

401.7訪問被Web服務(wù)器上的URL授權(quán)策略拒絕。這個(gè)錯(cuò)誤代碼為IIS6.0所專用

402PaymentRequired此代碼尚無法使用

403Forbidden對(duì)被請(qǐng)求頁面的訪問被禁止

403.1執(zhí)行訪問被禁止

403.2讀訪問被禁止

403.3寫訪問被禁止

403.4要求SSL

403.5要求SSL128

403.6IP地址被拒絕

403.7要求客戶端證書

403.8站點(diǎn)訪問被拒絕

403.9用戶數(shù)過多

403.10配置無效

403.11密碼更改

403.12拒絕訪問映射表

403.13客戶端證書被吊銷

403.14拒絕目錄列表

403.15超出客戶端訪問許可

403.16客戶端證書不受信任或無效

403.17客戶端證書已過期或尚未生效

在當(dāng)前的應(yīng)用程序池中不能執(zhí)行所請(qǐng)求的URL。這個(gè)錯(cuò)誤代碼為IIS6.0

403.18

所專用

不能為這個(gè)應(yīng)用程序池中的客戶端執(zhí)行CGI。這個(gè)錯(cuò)誤代碼為IIS6.0所

403.19

專用

403.20Passport登錄失敗。這個(gè)錯(cuò)誤代碼為IIS6.0所專用

404NotFound服務(wù)器無法找到被請(qǐng)求的頁面

404.0(無)——沒有找到文件或目錄

404.1無法在所請(qǐng)求的端口上訪問Web站點(diǎn)

404.2Web服務(wù)擴(kuò)展鎖定策略阻止本請(qǐng)求

404.3MIME映射策略阻止本請(qǐng)求

405MethodNotAllowed請(qǐng)求中指定的方法不被允許

7

JavaWeb開發(fā)任務(wù)教程

續(xù)表

消息描述

406NotAcceptable服務(wù)器生成的響應(yīng)無法被客戶端所接受

407ProxyAuthenticationRequired用戶必須首先使用代理服務(wù)器進(jìn)行驗(yàn)證,這樣請(qǐng)求才會(huì)被處理

408RequestTimeout請(qǐng)求超出了服務(wù)器的等待時(shí)間

409Conflict由于沖突,請(qǐng)求無法被完成

410Gone被請(qǐng)求的頁面不可用

411LengthRequiredContent-Length未被定義。如果無此內(nèi)容,服務(wù)器不會(huì)接受請(qǐng)求

412PreconditionFailed請(qǐng)求中的前提條件被服務(wù)器評(píng)估為失敗

413RequestEntityTooLarge由于所請(qǐng)求的實(shí)體太大,服務(wù)器不會(huì)接受請(qǐng)求

由于URL太長,服務(wù)器不會(huì)接受請(qǐng)求。當(dāng)POST請(qǐng)求被轉(zhuǎn)換為帶有很長的

414Request-urlTooLong

查詢信息的GET請(qǐng)求時(shí),就會(huì)發(fā)生這種情況

415UnsupportedMediaType由于媒介類型不被支持,服務(wù)器不會(huì)接受請(qǐng)求

416RequestedRangeNotSatisfiable服務(wù)器不能滿足客戶在請(qǐng)求中指定的Range頭

417ExpectationFailed執(zhí)行失敗

423鎖定的錯(cuò)誤

5xx:服務(wù)器錯(cuò)誤

500InternalServerError請(qǐng)求未完成。服務(wù)器遇到不可預(yù)知的情況

500.12應(yīng)用程序正忙于在Web服務(wù)器上重新啟動(dòng)

500.13Web服務(wù)器太忙

500.15不允許直接請(qǐng)求Global.asa

500.16UNC授權(quán)憑據(jù)不正確。這個(gè)錯(cuò)誤代碼為IIS6.0所專用

500.18URL授權(quán)存儲(chǔ)不能打開。這個(gè)錯(cuò)誤代碼為IIS6.0所專用

500.100內(nèi)部ASP錯(cuò)誤

501NotImplemented請(qǐng)求未完成。服務(wù)器不支持所請(qǐng)求的功能

502BadGateway請(qǐng)求未完成。服務(wù)器從上游服務(wù)器收到一個(gè)無效的響應(yīng)

502.1CGI應(yīng)用程序超時(shí)

502.2CGI應(yīng)用程序出錯(cuò)

503ServiceUnavailable請(qǐng)求未完成。服務(wù)器臨時(shí)過載或宕機(jī)

504GatewayTimeout網(wǎng)關(guān)超時(shí)

505HTTPVersionNotSupport服務(wù)器不支持請(qǐng)求中指明的HTTP協(xié)議版本

通常,一個(gè)HTTP請(qǐng)求/響應(yīng)的工作流程大概可以用以下4步來概括:

步驟1:客戶端瀏覽器先要與服務(wù)器建立連接,在瀏覽器上最常見的場景就是單

擊一個(gè)鏈接,這就觸發(fā)了連接的建立。

步驟2:連接建立后,客戶端瀏覽器發(fā)送一個(gè)請(qǐng)求到服務(wù)器,這個(gè)過程其實(shí)是組

裝請(qǐng)求報(bào)文的過程。

步驟3:服務(wù)器端接收到請(qǐng)求報(bào)文后,對(duì)報(bào)文進(jìn)行解析,組裝成一定格式的響應(yīng)

8

單元一搭建JavaWeb開發(fā)環(huán)境

報(bào)文,返回給客戶端。

步驟4:客戶端瀏覽器接收到響應(yīng)報(bào)文后,通過瀏覽器內(nèi)核對(duì)其進(jìn)行解析,按照

一定的外觀進(jìn)行顯示,然后與服務(wù)器斷開連接。

①簡述HTTP協(xié)議的作用。

②訪問網(wǎng)站的完整流程是什么?

③GET方法和POST方法有何區(qū)別?分別何時(shí)用到GET和POST方法?

任務(wù)二了解Web應(yīng)用開發(fā)常用技術(shù)

了解Web應(yīng)用開發(fā)常用的技術(shù),比較服務(wù)器端技術(shù)和客戶端技術(shù)的區(qū)別。

1.客戶端技術(shù)

(1)HTML+CSS

HTML(超文本標(biāo)記語言)是標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用。“超文本”就是指

頁面內(nèi)可以包含圖片、鏈接,甚至音樂、程序等非文字元素。超文本標(biāo)記語言的結(jié)構(gòu)

包括“頭”部分(Head)和“主體”部分(Body),其中“頭”部分提供關(guān)于網(wǎng)頁的

信息,“主體”部分提供網(wǎng)頁的具體內(nèi)容。網(wǎng)頁的本質(zhì)就是HTML通過結(jié)合使用其他

的Web技術(shù)(如腳本語言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁。

因此,HTML是萬維網(wǎng)編程的基礎(chǔ),也就是說萬維網(wǎng)是建立在超文本基礎(chǔ)之上的。

CSS(CascadingStyleSheet,層疊樣式表,或級(jí)聯(lián)樣式表)是一組格式設(shè)置規(guī)則,

用于控制Web頁面的外觀。通過使用CSS樣式設(shè)置頁面的格式,可將頁面的內(nèi)容與

表現(xiàn)形式分離。頁面內(nèi)容存放在HTML文檔中,而用于定義表現(xiàn)形式的CSS規(guī)則則存

放在另一個(gè)文件中或HTML文檔的某一部分,通常為文件“頭”部分。將內(nèi)容與表現(xiàn)

形式分離,不僅可使維護(hù)站點(diǎn)的外觀更加容易,而且還可以使HTML文檔代碼更加簡

練,縮短瀏覽器的加載時(shí)間。

(2)JavaScript

JavaScript是一種直譯式腳本語言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語言,

內(nèi)置支持類型。它的解釋器稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶

端的腳本語言,最早在HTML網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動(dòng)態(tài)效果。JavaScript

腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型、表達(dá)式和算術(shù)運(yùn)算符及程序的

基本程序框架。JavaScript提供了4種基本的數(shù)據(jù)類型和2種特殊數(shù)據(jù)類型用來處理

數(shù)據(jù)和文字。變量提供存放信息的地方,表達(dá)式則可以完成較復(fù)雜的信息處理。

(3)JQuery

JQuery是一個(gè)快速、簡潔的JavaScript框架,是繼Prototype之后又一個(gè)優(yōu)秀的

9

JavaWeb開發(fā)任務(wù)教程

JavaScript代碼庫(或JavaScript框架)。JQuery設(shè)計(jì)的宗旨是“WriteLess,DoMore”,

即倡導(dǎo)寫更少的代碼,做更多的事情。它封裝JavaScript常用的功能代碼,提供一種

簡便的JavaScript設(shè)計(jì)模式,優(yōu)化HTML文檔操作、事件處理、動(dòng)畫設(shè)計(jì)和Ajax交互。

JQuery的核心特性可以總結(jié)為:具有獨(dú)特的鏈?zhǔn)秸Z法和短小清晰的多功能接口;具有

高效靈活的CSS選擇器,并且可對(duì)CSS選擇器進(jìn)行擴(kuò)展;擁有便捷的插件擴(kuò)展機(jī)制和豐富

的插件。JQuery兼容各種主流瀏覽器,如IE6.0+、FF1.5+、Safari2.0+、Opera9.0+等。

2.服務(wù)器端技術(shù)

在開發(fā)動(dòng)態(tài)網(wǎng)站時(shí),離不開服務(wù)器端技術(shù),服務(wù)器端技術(shù)主要有CGI、ASP、PHP、

ASP.NET和JavaEE等。

(1)CGI

CGI(CommonGatewayInterface,通用網(wǎng)關(guān)接口)是最早用來創(chuàng)建動(dòng)態(tài)網(wǎng)頁的技

術(shù),它可以使瀏覽器與服務(wù)器之間產(chǎn)生互動(dòng)。它允許使用不同語言編寫適合的CGI

程序,該程序被放在Web服務(wù)器上運(yùn)行。當(dāng)客戶端發(fā)出請(qǐng)求給服務(wù)器時(shí),服務(wù)器根

據(jù)用戶請(qǐng)求建立一個(gè)新的進(jìn)程來執(zhí)行指定的CGI程序并將執(zhí)行結(jié)果以網(wǎng)頁的形式返

回給客戶端的瀏覽器并顯示出來。雖然CGI是當(dāng)前應(yīng)用程序的基礎(chǔ)技術(shù),但這種技術(shù)

的編制比較困難,且效率低下,因?yàn)槊看雾撁姹徽?qǐng)求時(shí),都要求服務(wù)器重新將CGI

程序編寫成可執(zhí)行的代碼。在CGI中最常用的語言有C/C++、Java和Perl。

(2)ASP

ASP(ActiveServer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論