版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛南師范大學(xué)《古生物與地層學(xué)含實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 加工中心的編程教學(xué)課件
- 七年級(jí)道德與法治上冊(cè)第一單元成長的節(jié)拍第一課中學(xué)時(shí)代第二課時(shí)誤區(qū)警示新人教版
- 三年級(jí)數(shù)學(xué)上冊(cè)6乘法單元概述和課時(shí)安排素材北師大版
- 三年級(jí)科學(xué)上冊(cè)7土壤的保護(hù)教案冀教版
- 三年級(jí)科學(xué)下冊(cè)第三單元固體和液體1認(rèn)識(shí)固體教案蘇教版1
- 《知識(shí)社會(huì)學(xué)》課件
- 高二物理期末模擬卷(A卷)【測(cè)試范圍:必修第一、二、三冊(cè)及選擇性必修第一冊(cè)第1章】(考試版A3)(浙江專用)
- 《前言關(guān)鍵點(diǎn)》課件
- 初中數(shù)學(xué)等腰直角三角形添加輔助線三垂直構(gòu)建K字型全等專項(xiàng)練習(xí)題1(附答案詳解)
- 正常分娩產(chǎn)婦護(hù)理查房
- 紅色經(jīng)典影片與近現(xiàn)代中國發(fā)展答案考試
- 2018年10月自考00015英語二真題及答案含解析
- 降低會(huì)陰側(cè)切率的PDCA
- 推進(jìn)文化自信自強(qiáng),鑄就社會(huì)主義文化新輝煌 心得體會(huì)
- 《西醫(yī)外科學(xué)》教學(xué)大綱:膽道感染及膽石病
- 私宅施工方案
- 提升國家語言能力的若干思考
- 四年級(jí)語文硬筆書法比賽方案
- 城鎮(zhèn)污水處理文獻(xiàn)綜述
- 母乳喂養(yǎng)質(zhì)量檢查評(píng)分表
評(píng)論
0/150
提交評(píng)論