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

付費閱讀全文

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

文檔簡介

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

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

嚴梅吳道君何受倩◎主編

黃龍泉◎副主編

內(nèi)容簡介

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

詳細講解,并將知識點融入實際項目的開發(fā)中,項目中的每個任務(wù)解決一個實際開發(fā)中

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

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

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

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

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

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

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

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

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

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

ISBN978-7-113-27945-5

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

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

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

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

作者:嚴梅吳道君何受倩

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

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

封面設(shè)計:劉穎

責(zé)任校對:苗丹

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

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

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

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

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

開本:787mm×1092mm1/16印張:15字數(shù):353千

書號:ISBN978-7-113-27945-5

定價:41.00元

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

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

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

前言

Java是一種簡單的、跨平臺的、面向?qū)ο蟮?、分布式的、解釋性的、健壯的、?/p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

請求響應(yīng)模型相關(guān)的基本知識,以及如何搭建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)建對象、JavaBean等內(nèi)容。

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

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

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

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

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

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

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

I

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

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

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

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

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

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

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

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

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

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

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

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

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

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

編者

2021年5月

II

目錄

目錄

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

任務(wù)一理解HTTP請求響應(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ā)第一個Servlet程序·······················································23

任務(wù)二測試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動作元素······························································79

任務(wù)五應(yīng)用JSP內(nèi)建對象······························································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實現(xiàn)CRUD····················································145

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

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

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

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

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

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

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

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

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

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

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

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

任務(wù)二項目設(shè)計·······································································200

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

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

參考文獻···········································································································234

II

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

單元一

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

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

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

基本的JavaWeb項目。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

⑥釋放連接。

⑦客戶機解析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文件都必須遵守這個標(biāo)準,HTTP協(xié)議定義Web客戶端

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

和關(guān)閉連接也是一個相對比較費時的過程,并且會嚴重影響客戶機和服務(wù)器的性能。

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

情況。

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

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

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

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

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

2

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

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

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

如圖1-3所示。

圖1-3HTTP1.1訪問圖解

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

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

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

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

多個虛擬Web站點。在HTTP1.1中增加Host請求頭字段后,Web瀏覽器可以使用主機頭

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

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

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

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

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

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

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

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

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

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

要瀏覽的地址。

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

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

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

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

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

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

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

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

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

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

3

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

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

求報文,一個請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4部分組成。

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

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

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

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

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

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

⑤客戶端瀏覽器解析HTML內(nèi)容??蛻舳藶g覽器首先解析狀態(tài)行,查看表明請

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

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

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

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

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

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

請求修飾符、客戶信息和MIME類型等。報文格式如下:

請求行-通用信息頭-請求頭-實體頭-報文主體

典型的請求頭消息內(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ù)器以一個狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括消息協(xié)議的版本,成功或者錯誤

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

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

典型的響應(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.請求方法

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

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

4

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

表1-1HTTP的8種請求方式

請求方式含義

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

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

POST

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

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

OPTIONS

的請求來測試服務(wù)器的功能

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

HEAD

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

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

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

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

CONNECT保留將來使用

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

(1)GET方法

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

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

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

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

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

因為GET方法提交的數(shù)據(jù)將作為URL請求的一部分,所以提交的數(shù)據(jù)量不能太大。

(2)POST方法

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

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

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

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

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

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

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

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

否被理解或被滿足。

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

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

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

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

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

5xx表示服務(wù)器錯誤,即服務(wù)器在處理某個正確請求時發(fā)生錯誤。

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

5

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

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

消息描述

1xx:信息

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

100Continue

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

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

2xx:成功

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

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

202Accepted供處理的請求已被接受,但是處理未完成

203Non-authoritative

文檔已經(jīng)正常地返回,但一些應(yīng)答頭可能不正確,因為使用的是文檔的副本

Information

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

204NoContent

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

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

205ResetContent

內(nèi)容

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

3xx:重定向

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

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

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

303SeeOther所請求的頁面可在別的URL下被找到

未按預(yù)期修改文檔??蛻舳擞芯彌_的文檔并發(fā)出了一個條件性的請求(一般提

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

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

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

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

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

4xx:客戶端錯誤

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

401Unauthorized被請求的頁面需要用戶名和密碼

401.1登錄失敗

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

401.3由于ACL對資源的限制而未獲得授權(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)策略拒絕。這個錯誤代碼為IIS6.0所專用

402PaymentRequired此代碼尚無法使用

403Forbidden對被請求頁面的訪問被禁止

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

403.2讀訪問被禁止

403.3寫訪問被禁止

403.4要求SSL

403.5要求SSL128

403.6IP地址被拒絕

403.7要求客戶端證書

403.8站點訪問被拒絕

403.9用戶數(shù)過多

403.10配置無效

403.11密碼更改

403.12拒絕訪問映射表

403.13客戶端證書被吊銷

403.14拒絕目錄列表

403.15超出客戶端訪問許可

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

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

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

403.18

所專用

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

403.19

專用

403.20Passport登錄失敗。這個錯誤代碼為IIS6.0所專用

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

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

404.1無法在所請求的端口上訪問Web站點

404.2Web服務(wù)擴展鎖定策略阻止本請求

404.3MIME映射策略阻止本請求

405MethodNotAllowed請求中指定的方法不被允許

7

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

續(xù)表

消息描述

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

407ProxyAuthenticationRequired用戶必須首先使用代理服務(wù)器進行驗證,這樣請求才會被處理

408RequestTimeout請求超出了服務(wù)器的等待時間

409Conflict由于沖突,請求無法被完成

410Gone被請求的頁面不可用

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

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

413RequestEntityTooLarge由于所請求的實體太大,服務(wù)器不會接受請求

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

414Request-urlTooLong

查詢信息的GET請求時,就會發(fā)生這種情況

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

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

417ExpectationFailed執(zhí)行失敗

423鎖定的錯誤

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

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

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

500.13Web服務(wù)器太忙

500.15不允許直接請求Global.asa

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

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

500.100內(nèi)部ASP錯誤

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

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

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

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

503ServiceUnavailable請求未完成。服務(wù)器臨時過載或宕機

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

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

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

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

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

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

裝請求報文的過程。

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

8

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

報文,返回給客戶端。

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

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

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

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

③GET方法和POST方法有何區(qū)別?分別何時用到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)準通用標(biāo)記語言下的一個應(yīng)用?!俺谋尽本褪侵?/p>

頁面內(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)造出功能強大的網(wǎng)頁。

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

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

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

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

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

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

練,縮短瀏覽器的加載時間。

(2)JavaScript

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

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

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

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

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

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

(3)JQuery

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

9

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

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

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

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

JQuery的核心特性可以總結(jié)為:具有獨特的鏈式語法和短小清晰的多功能接口;具有

高效靈活的CSS選擇器,并且可對CSS選擇器進行擴展;擁有便捷的插件擴展機制和豐富

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

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

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

ASP.NET和JavaEE等。

(1)CGI

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

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

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

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

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

的編制比較困難,且效率低下,因為每次頁面被請求時,都要求服務(wù)器重新將CGI

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

(2)ASP

ASP(ActiveServer

溫馨提示

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

評論

0/150

提交評論