版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JavaWeb應(yīng)用開發(fā)(第2版)全套可編輯PPT課件
目錄CONTENTS模塊1JavaWeb應(yīng)用開發(fā)基礎(chǔ)模塊2JSP語法模塊3JSP內(nèi)置對象模塊4JavaBean及其應(yīng)用模塊5Web前端腳本技術(shù)模塊6Servlet技術(shù)模塊7JSP數(shù)據(jù)庫操作模塊8JavaWeb安全應(yīng)用模塊9課程設(shè)計實例模塊1JavaWeb應(yīng)用開發(fā)基礎(chǔ)知識目標(biāo)·了解Web應(yīng)用、Web應(yīng)用開發(fā)、動態(tài)網(wǎng)頁及B/S結(jié)構(gòu)等Web基礎(chǔ)知識?!ち私釰SP的執(zhí)行流程和技術(shù)優(yōu)點?!ふ莆誛eb應(yīng)用開發(fā)的流程和簡單JSP程序的編寫與運(yùn)行方法。技能目標(biāo)·能夠在集成開發(fā)環(huán)境中配置JRE?!つ軌蛟贓clipse
IDE中配置并運(yùn)行JSP引擎Tomcat?!つ軌蛟贓clipse
IDE中創(chuàng)建并部署JavaWeb項目?!つ軌蛟贓clipseIDE中編寫簡單JSP程序并運(yùn)行JSP程序。素質(zhì)目標(biāo)·樹立產(chǎn)業(yè)報國遠(yuǎn)大理想,熟悉并熱愛未來的行業(yè)和工作。1.1.1Web應(yīng)用及其開發(fā)Web應(yīng)用可以是一個構(gòu)建并運(yùn)行在Web上的完整網(wǎng)站,也可以僅僅是某個運(yùn)行在Web上的應(yīng)用程序。它是由一些Web網(wǎng)頁和用來完成某些特定任務(wù)的相關(guān)資源整合在一起而形成的一個數(shù)據(jù)集合,通過服務(wù)器、客戶端及網(wǎng)絡(luò)等實現(xiàn)自身的功能。Web應(yīng)用可采用不同的技術(shù)來構(gòu)建,每種技術(shù)皆有其優(yōu)劣勢。當(dāng)今的Web應(yīng)用在其開發(fā)線路上主要包含兩部分內(nèi)容:Web前端開發(fā)和Web后端開發(fā)。Web后端開發(fā)主要進(jìn)行與數(shù)據(jù)庫交互作用所對應(yīng)的業(yè)務(wù)邏輯設(shè)計,需要考慮功能的實現(xiàn)、數(shù)據(jù)的存取、平臺的穩(wěn)定性與性能等。Java是當(dāng)今世界流行的編程語言和標(biāo)準(zhǔn)之一,它被廣泛應(yīng)用于各種領(lǐng)域,如大數(shù)據(jù)、人工智能、云計算、智能家居、物聯(lián)網(wǎng)等。隨著科技的不斷進(jìn)步和社會的不斷發(fā)展,Java也面臨著新的機(jī)遇和挑戰(zhàn)。1.1Web基礎(chǔ)知識在Internet發(fā)展初期,Web應(yīng)用只是一個靜態(tài)網(wǎng)站?!办o態(tài)”是指網(wǎng)站的所有網(wǎng)頁內(nèi)容都基于靜態(tài)的HTML頁面,網(wǎng)站內(nèi)容的修改只能通過修改靜態(tài)的HTML頁面來實現(xiàn),Web網(wǎng)站僅顯示靜態(tài)信息,而不能與用戶產(chǎn)生互動。隨著商業(yè)需求的不斷增長和Internet技術(shù)的不斷發(fā)展,出現(xiàn)了用動態(tài)網(wǎng)頁技術(shù)開發(fā)的動態(tài)網(wǎng)站。動態(tài)網(wǎng)頁是指在服務(wù)器端運(yùn)行的程序或網(wǎng)頁,它顯示的內(nèi)容隨時間、物理訪問位置、用戶及用戶需求的改變而改變。1.1.2動態(tài)網(wǎng)頁1.1Web基礎(chǔ)知識動態(tài)網(wǎng)頁的主要特點如下。(1)交互性網(wǎng)頁會根據(jù)用戶的要求和選擇而動態(tài)改變和響應(yīng)。例如,用戶在網(wǎng)頁中填寫表單信息并提交,服務(wù)器將所提交信息處理后自動存儲到后臺數(shù)據(jù)庫中,并轉(zhuǎn)至相應(yīng)的提示頁面。(2)自動更新(3)隨機(jī)性與靜態(tài)網(wǎng)頁修改后需重新上傳以覆蓋原先的頁面相比,動態(tài)網(wǎng)頁無需手動操作,便會自動生成更新的頁面,大大節(jié)省了工作量。不同的人在不同的時間或不同的物理訪問位置訪問同一網(wǎng)址時會產(chǎn)生不同的頁面效果。1.1.2動態(tài)網(wǎng)頁1.1Web基礎(chǔ)知識動態(tài)網(wǎng)頁等Web應(yīng)用普遍采用分布式計算模式構(gòu)建,使用該模式進(jìn)行Web應(yīng)用開發(fā)時,往往需要編寫大量的程序。這些程序被部署在不同的計算機(jī)上,在Web應(yīng)用中承擔(dān)著不同的職責(zé)。例如,有的程序顯示用戶界面,有的程序進(jìn)行邏輯運(yùn)算,有的程序則進(jìn)行后臺數(shù)據(jù)處理。相應(yīng)的Web應(yīng)用在體系上分為多層結(jié)構(gòu),其中最典型的是瀏覽器/服務(wù)器/數(shù)據(jù)庫(browser/server/database,B/S/D)三層結(jié)構(gòu),如圖1-1所示。圖1-1B/S/D三層結(jié)構(gòu)1.1.3B/S結(jié)構(gòu)1.1Web基礎(chǔ)知識第1層為瀏覽器瀏覽器接收用戶輸入的數(shù)據(jù),提交并發(fā)送至Web服務(wù)器;還會接收Web服務(wù)器返回的數(shù)據(jù)處理結(jié)果并顯示。第2層為Web服務(wù)器第3層為數(shù)據(jù)庫服務(wù)器運(yùn)行在Web服務(wù)器上的應(yīng)用程序接收并處理用戶數(shù)據(jù),根據(jù)流程需要在數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)比對和處理。最后Web服務(wù)器綜合各項數(shù)據(jù)處理結(jié)果,生成動態(tài)頁面,通過瀏覽器呈現(xiàn)給用戶。數(shù)據(jù)庫服務(wù)器儲存海量的用戶信息,并提供數(shù)據(jù)處理和事務(wù)處理功能。1.1.3B/S結(jié)構(gòu)1.1Web基礎(chǔ)知識JSP技術(shù)是Java企業(yè)版(Javaenterpriseedition,JavaEE)中的一個關(guān)鍵技術(shù),是用Java標(biāo)準(zhǔn)開發(fā)服務(wù)器端Web應(yīng)用的主要技術(shù)。打開JSP文件,可以看到JSP文檔是在HTML代碼中嵌入Java腳本(添加了JSP標(biāo)記的Java代碼)編寫而成的。JSP文件以.jsp為擴(kuò)展名。通過瀏覽器訪問一個JSP頁面時,Web服務(wù)器根據(jù)該請求加載被請求的JSP文件;然后Web服務(wù)器中的JSP引擎(用來統(tǒng)一管理和運(yùn)行JavaWeb應(yīng)用程序的軟件,也可稱為JSP容器,如Tomcat、JRun、Resin等)將被加載的JSP文件轉(zhuǎn)譯成Servlet源文件(以.java為擴(kuò)展名),JSP引擎再將生成的Servlet源文件編譯成Java類文件(以.class為擴(kuò)展名);最后,Web服務(wù)器執(zhí)行該Java類文件,并將結(jié)果在瀏覽器顯示,如圖1-2所示。圖1-2JSP的執(zhí)行流程1.1.4Web開發(fā)技術(shù)之一———JSP簡介1.1Web基礎(chǔ)知識JSP技術(shù)的特點如下。(1)(2)(3)(4)JSP分離了服務(wù)器端程序中的靜態(tài)內(nèi)容和動態(tài)內(nèi)容。JSP提供組件(如JavaBean)、標(biāo)準(zhǔn)標(biāo)簽、自定義標(biāo)簽等可一次生成重復(fù)利用的實現(xiàn)方式,大大提高了程序開發(fā)效率。JSP頁面在被第一次請求時進(jìn)行編譯,如果在后續(xù)的請求中該頁面沒有改動,服務(wù)器可直接調(diào)用相應(yīng)的已被編譯好的代碼,大大提高了訪問速度。JSP沿用了Java強(qiáng)大的應(yīng)用程序編程接口(API)功能,只要服務(wù)器支持JSP,就可以運(yùn)行用JSP開發(fā)的Web應(yīng)用,體現(xiàn)了JSP的跨平臺優(yōu)點。1.1.4Web開發(fā)技術(shù)之一———JSP簡介1.1Web基礎(chǔ)知識1.2.1JSP運(yùn)行環(huán)境搭建1.JDK進(jìn)行程序開發(fā)首先要安裝JDK。JDK可到Java官方網(wǎng)站(/java/)中進(jìn)行下載,如圖1-3所示,然后運(yùn)行安裝即可。本書建議采用JDK1.8及以上版本。圖1-3Java官方網(wǎng)站1.2創(chuàng)建第一個Web項目2.Web服務(wù)器本書選擇Tomcat作為Web服務(wù)器中的JSP引擎。Tomcat可到Apache
Tomcat官方網(wǎng)站()中進(jìn)行下載,如圖1-4所示,然后解壓至某固定文件夾即可(也可下載相應(yīng)的安裝程序安裝)。本書采用Apache
Tomcat9.0.63版本。圖1-4ApacheTomcat官方網(wǎng)站1.2創(chuàng)建第一個Web項目1.2.1JSP運(yùn)行環(huán)境搭建3.Web瀏覽器
瀏覽器是用戶訪問Web應(yīng)用的工具,JSP開發(fā)的Web應(yīng)用程序?qū)g覽器沒有特殊要求。本書采用64位Microsoft
Edge作為Web瀏覽器。1.2創(chuàng)建第一個Web項目1.2.1JSP運(yùn)行環(huán)境搭建4.Web數(shù)據(jù)庫JSP開發(fā)的Web應(yīng)用程序通過Java數(shù)據(jù)庫互連(Javadatabaseconnectivity,JDBC)驅(qū)動可訪問多種數(shù)據(jù)庫管理系統(tǒng)。在實驗室學(xué)習(xí)環(huán)境下,數(shù)據(jù)存取規(guī)模不大,故本書選用MySQL數(shù)據(jù)庫管理系統(tǒng)提供Web數(shù)據(jù)庫服務(wù)。MySQL數(shù)據(jù)庫管理系統(tǒng)可到MySQL官方網(wǎng)站()中進(jìn)行下載,如圖1-5所示。本書采用MySQL5.5.38版本。圖1-5MySQL官方網(wǎng)站1.2創(chuàng)建第一個Web項目1.2.1JSP運(yùn)行環(huán)境搭建EclipseIDE是一個用于JavaWeb應(yīng)用開發(fā)的成熟的企業(yè)級平臺。EclipseIDE可到Eclipse官方網(wǎng)站()中進(jìn)行下載,如圖1-6所示。本書采用Eclipse
IDE
for
Enterprise
Java
and
Web
Developers-2022-09版本。圖1-6Eclipse官方網(wǎng)站1.2創(chuàng)建第一個Web項目1.2.2JSP集成開發(fā)環(huán)境Eclipse在Windows操作系統(tǒng)中,單擊桌面的“開始”菜單按鈕,執(zhí)行“所有程序”→“Eclipse”命令,在展開項中選擇“Eclipse
IDE
for
Enterprise
Java
and
Web
Developers-2022-09”選項,啟動Eclipse
2022,會出現(xiàn)圖1-7所示的Eclipse
2022主窗口。圖1-7Eclipse2022主窗口1.2創(chuàng)建第一個Web項目1.2.2JSP集成開發(fā)環(huán)境Eclipse每次啟動Eclipse時,都會提示選擇工作區(qū),選好工作區(qū)后(如果以后不打算更改,可選中下方的復(fù)選框)單擊“Launch”按鈕即可,如圖1-8所示。圖1-8選擇Eclipse工作區(qū)1.2創(chuàng)建第一個Web項目1.2.2JSP集成開發(fā)環(huán)境Eclipse1.配置JRE運(yùn)行Java程序時需要JRE的支持。可根據(jù)需要手動配置已下載的較高版本的JRE。(1)啟動Eclipse2022,執(zhí)行“Window”→“Preferences”命令,在彈出的“Preferences”對話框中展開左側(cè)目錄樹中的“Java”選項,從中選擇“Installed
JREs”選項,如圖1-9所示。圖1-9已安裝的JRE1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(2)Eclipse
2022內(nèi)嵌的JRE版本為1.8.0,如果需要更換為更高版本的JRE,可單擊“Add...”按鈕,在彈出的“Add
JRE”對話框中選擇“Standard
VM”選項,如圖1-10所示。圖1-10JRE類型選擇1.配置JRE1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(3)單擊“Next”按鈕,打開“JRE
Definition”界面,如圖1-11所示。圖1-11JRE定義界面1.配置JRE1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(4)單擊“Directory...”按鈕,在彈出的“選擇文件夾”對話框中選擇已安裝的較高版本的JDK,單擊“選擇文件夾”按鈕,如圖1-12所示。(5)返回到添加好路徑的“JRE
Definition”對話框,單擊“Finish”按鈕,完成JRE配置。注意:不要忘了在“Installed
JREs”選項組中選中新添加的JRE,使配置生效。圖1-12選擇已安裝的較高版本的JDK1.配置JRE1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(1)在Eclipse2022主窗口中執(zhí)行“Window”→“Preferences”命令,彈出“Preferences”對話框,展開左側(cè)目錄樹中的“Server”選項,選擇“Runtime
Environments”選項,如圖1-13所示。圖1-13添加服務(wù)器運(yùn)行環(huán)境2.配置Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(2)在右側(cè)“Server
Runtime
Environment”界面中單擊“Add...”按鈕,彈出“New
ServerRuntime
Environment”對話框,展開“Apache”選項,選擇“Apache
Tomcat
v9.0”選項,再選中下方的“Create
a
new
local
server”復(fù)選框,如圖1-14所示。圖1-14定義新服務(wù)器運(yùn)行環(huán)境2.配置Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(3)單擊“Next”按鈕,打開“Tomcat
Server”界面,在“Tomcat
installation
directory”文本框中輸入Tomcat
9.0所在的目錄位置,單擊“Finish”按鈕,如圖1-15所示。圖1-15指定Tomcat安裝目錄2.配置Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(4)返回“Preferences”對話框,可以看到所添加的Tomcat
9.0服務(wù)器,單擊“Apply
and
Close”按鈕,結(jié)束
Tomcat
配置。在Eclipse
2022主窗口的“Package
Explorer”視圖的“Servers”目錄下出現(xiàn)了所添加的在本地的Tomcat
9.0服務(wù)器,如圖1-16所示。圖1-16添加的Tomcat9.0服務(wù)器2.配置Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(5)雙擊“Servers”目錄下的“Tomcat
v9.0Server
at
localhost-config”選項,打開Tomcat
服務(wù)器本地概覽“Overview”文件,“Server
Locations”選擇“Use
Tomcat
installation(takes
control
of
Tomcat
installation)”選項,修改“Deploypath”選項,在文本框中輸入Tomcat服務(wù)器下webapps目錄所在的路徑,并保存,如圖1-17所示。圖1-17Tomcat服務(wù)器配置概覽2.配置Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目啟動Tomcat的方式有以下兩種。(1)在Eclipse
2022主窗口快捷圖標(biāo)欄單擊“Run
Tomcat
v9.0
Server
at
localhost”圖標(biāo)
右側(cè)的下拉按鈕,在彈出的下拉菜單中執(zhí)行“Tomcat
v9.0
Server
at
localhost”命令,啟動
Tomcat,如圖1-18所示。圖1-18啟動Tomcat的方式13.啟動Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(2)在Eclipse
2022主窗口的“Servers”目錄中,執(zhí)行“Tomcat
v9.0
Server
at
localhost-config”命令,右擊,在彈出的快捷菜單中執(zhí)行“Start”命令,啟動Tomcat,如圖1-19所示。圖1-19啟動Tomcat的方式23.啟動Tomcat1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目圖1-20Tomcat的啟動信息3.啟動Tomcat上述命令被執(zhí)行后,會在控制臺輸出Tomcat的啟動信息,如圖1-20所示。1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目圖1-21驗證Tomcat成功安裝與啟動3.啟動Tomcat打開瀏覽器,在地址欄輸入“http://localhost:8080”,打開相應(yīng)版本Tomcat的主頁面,表示Tomcat已被成功安裝并啟動,如圖1-21所示。1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目4.創(chuàng)建Web項目(1)在Eclipse2022主窗口中執(zhí)行“File”→“New”→“Project...”命令,彈出“New
Project”對話框,展開“Web”選項,從中選擇“DynamicWeb
Project”選項,創(chuàng)建一個動態(tài)Web項目,如圖1-22所示。圖1-22選擇“DynamicWebProject”選項1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目4.創(chuàng)建Web項目(2)單擊“Next”按鈕,打開“New
Dynamic
Web
Project”界面,在“Project
name”文本框中輸入項目名稱“myPro”,選擇下方“Target
runtime”列表項的值為“Apache
Tomcat
v9.0”,“Dynamic
web
module
version”列表項的值為“4.0”,“Configuration”列表項的值為“Default
Configuration
for
Apache
Tomcat
v9.0”,其余選項保持默認(rèn)設(shè)置,創(chuàng)建基于Java的獨(dú)立Web應(yīng)用,如圖1-23所示。圖1-23“DynamicWebProject”界面1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目4.創(chuàng)建Web項目(3)單擊“Next”按鈕,打開“Java”界面,保持默認(rèn)值,配置項目以構(gòu)建Java應(yīng)用,如圖1-24所示。圖1-24“Java”界面1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目4.創(chuàng)建Web項目(4)再次單擊“Next”按鈕,打開“WebModule”界面,選中“Generateweb.
xml
deployment
descriptor”復(fù)選框,其余保持默認(rèn)值,配置Web模塊設(shè)置,如圖1-25所示。圖1-25“WebModule”界面1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目4.創(chuàng)建Web項目(5)單擊“Finish”按鈕,此時會彈出“Open
Associated
Perspective?”對話框,提示“Open
the
Java
EE
perspective?”,可選中左下方的復(fù)選框,記住用戶的決定,如圖1-26所示。單擊“Open
Perspective”按鈕,完成Web項目創(chuàng)建。圖1-26打開JavaEE透視圖1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目5.設(shè)計Web項目的目錄結(jié)構(gòu)Web項目要求按特定的目錄結(jié)構(gòu)組織文件,當(dāng)在Eclipse
2022
中創(chuàng)建好一個新的Web項目后,便可以在Eclipse
2022
的“Package
Explorer”視圖中看到該Web項目的目錄結(jié)構(gòu),它是由Eclipse
2022自動生成的。下面來了解一下Web項目目錄及文件的用途。(1)Deployment
Descriptor目錄:項目的部署描述符,包括上下文參數(shù)、錯誤頁面、過濾器映射(filter
mapping)、過濾器(filter)、監(jiān)聽器、引用、Servlet映射、Servlet等項,以及子目錄歡迎頁面下各種類型的歡迎頁面在web.xml文件中的配置信息。注意:在Eclipse
2022中創(chuàng)建Web項目,不會自動生成歡迎頁面。歡迎頁面需要用戶自行創(chuàng)建。(2)JAX-WSWeb
Services目錄:即Java
API
for
XMLWeb
Services,包括服務(wù)器端點接口和Web服務(wù)兩個子目錄。1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目(3)Java
Resources目錄:包括兩個子目錄,分別存放項目所需的庫文件(Libraries)和從src目錄中分離出來以便于開發(fā)管理的項目源文件。(4)build目錄:項目的默認(rèn)輸出文件夾,存放經(jīng)自動編譯后生成的Java字節(jié)碼文件。(5)src目錄:Java構(gòu)建路徑上的源文件夾,包括Web項目的頂層目錄webapp。webapp由以下部分組成。①M(fèi)ETA-INF目錄:系統(tǒng)自動生成,存放系統(tǒng)描述信息。②WEB-INF目錄:無法被用戶訪問。它由以下兩部分組成?!ib目錄:包含Web項目所依賴的.jar或者.zip文件?!eb.xml文件:Web項目的初始化配置文件,不要將其刪除或隨意修改。③JSP文件:Web項目中所創(chuàng)建的JSP文件默認(rèn)存放在此目錄下,也可以在此目錄下創(chuàng)建一些文件夾,根據(jù)開發(fā)需要把不同的JSP文件放在對應(yīng)的文件夾中。④靜態(tài)文件:包括所有的HTML文件、CSS文件、圖文聲像文件等。靜態(tài)文件可按功能以文件夾形式分類存放。5.設(shè)計Web項目的目錄結(jié)構(gòu)1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代(1)展開myPro項目的src目錄,在其子目錄webapp下創(chuàng)建一個文件夾。右擊“webapp”目錄,在彈出的快捷菜單中執(zhí)行“New”→“Folder”命令,如圖1-27所示。圖1-27創(chuàng)建webapp目錄下的文件夾1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代碼(2)在彈出的“New
Folder”對話框中輸入文件夾名稱“ch1”,單擊“Finish”按鈕,如圖1-28所示。圖1-28輸入文件夾名稱1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代碼(3)創(chuàng)建一個JSP文件。在創(chuàng)建JSP文件之前,可設(shè)置JSP文件的默認(rèn)編碼。在Eclipse
2022主窗口中執(zhí)行“Window”→“Preferences”命令,彈出“Preferences”對話框,展開左側(cè)目錄樹中的“Web”選項,選擇“JSP
Files”選項,在窗口右側(cè)“Encoding”下拉列表中選擇“ISO
10646/Unicode(UTF-8)”,如圖1-29所示。單擊“ApplyandClose”按鈕,完成JSP文件的默認(rèn)編碼設(shè)置。圖1-29設(shè)置JSP文件的默認(rèn)編碼1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代碼(4)右擊“ch1”選項,在彈出的快捷菜單中執(zhí)行“New”→“JSP
File”命令,創(chuàng)建一個新的JSP文件,如圖1-30所示。圖1-30創(chuàng)建JSP文件1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代碼(5)在彈出的對話框中輸入文件名稱“NewFile.jsp”,存放在“myPro/src/main/webapp/ch1”目錄下,如圖1-31所示。圖1-31輸入JSP文件名稱1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代碼(6)單擊“Next”按鈕,打開“Select
JSP
Template”界面,選擇一個模板作為JSP頁面的初始內(nèi)容,這里選擇“New
JSP
File
(html5)”模板,如圖1-32所示。圖1-32選擇JSP模板1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目6.編寫Web項目的代碼(7)單擊“Finish”按鈕,完成JSP文件的創(chuàng)建。NewFile.jsp文件在Eclipse
2022主窗口的編輯區(qū)同時被打開,在<body></body>標(biāo)簽之間輸入文本“This
is
my
JSP
page.”,保存,如圖1-33所示。圖1-33JSP文件的編輯區(qū)1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目部署Web項目的方式有以下兩種。(1)在Eclipse
2022主窗口的“PackageExplorer”視圖中右擊“myPro”項目,在彈出的快捷菜單中執(zhí)行“RunAs”→“RunonServer”命令,如圖1-34所示。圖1-34部署Web項目方式11.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目在彈出的“Run
on
Server”對話框中選中“Choose
an
existing
server”選項,在“Server”選項區(qū)中展開“l(fā)ocalhost”,選擇“Tomcat
v9.0
Server
at
localhost”選項,如圖1-35所示。圖1-35選擇在其上運(yùn)行項目的服務(wù)器1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目單擊“Next”按鈕,打開“Add
and
Remove”界面,“Configured”文本框中出現(xiàn)所配置的Web項目“myPro”,如圖1-36所示。圖1-36向服務(wù)器添加或移除的項目資源1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目單擊“Finish”按鈕,如果服務(wù)器此時處于已啟動狀態(tài),會彈出“Server”對話框,提示服務(wù)器可能需要重啟,選中“Restart
server”選項,如圖1-37所示。單擊“OK”按鈕關(guān)閉該對話框,完成Web項目部署。圖1-37重啟服務(wù)器提示1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目(2)在Eclipse2022主窗口的“Servers”目錄中右擊“Tomcat
v9.0
Server
at
localhost-config”選項,在彈出的快捷菜單中執(zhí)行“Add
and
Remove...”命令,如圖1-38所示。圖1-38部署Web項目方式21.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目在彈出的“Add
and
Remove”對話框的“Available”文本框中出現(xiàn)待配置的Web項目“myPro”,如圖1-39所示。圖1-39待向服務(wù)器添加的項目資源1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目7.部署Web項目選中“myPro”選項,單擊“Add”按鈕,在“Configured”文本框中出現(xiàn)所配置的Web項目“myPro”,可選中“If
server
is
started,publish
changes
immediately”復(fù)選框,使被部署的項目能得到及時更新,如圖1-40所示。單擊“Finish”按鈕,完成Web項目部署。注意:Web項目部署完成,啟動Tomcat后才會在Tomcat的下一級目錄webapps及work中出現(xiàn)所部署的Web項目。圖1-40已完成部署的項目資源1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目8.運(yùn)行Web項目打開Microsoft
Edge瀏覽器,在URL欄輸入http://localhost:8080/myPro/ch1/NewFile.jsp,并按Enter鍵查看運(yùn)行結(jié)果。在瀏覽器窗體的頁面中顯示“ThisismyJSPpage.”,表示W(wǎng)eb項目“myPro”中的“NewFile.jsp”文件已經(jīng)正確運(yùn)行,如圖1-41所示。圖1-41NewFile.jsp頁面注意:URL中“myPro”是網(wǎng)站對外發(fā)布的虛擬上下文路徑,它對應(yīng)的實際路徑是Web應(yīng)用的文件根目錄,即“webapp”文件夾。URL中Web項目資源的訪問路徑是區(qū)分大小寫的。
1.2創(chuàng)建第一個Web項目1.2.3在Eclipse2022下用JSP開發(fā)Web項目1.3小結(jié)Web是存儲在Internet上數(shù)量巨大的文檔的集合。Web應(yīng)用是由一些Web網(wǎng)頁和用來完成某些特定任務(wù)的相關(guān)資源組合在一起而形成的一個數(shù)據(jù)集合,通過服務(wù)器、客戶端及網(wǎng)絡(luò)等提供服務(wù)功能。Web應(yīng)用開發(fā)包含Web前端開發(fā)和Web后端開發(fā)。采用動態(tài)網(wǎng)頁技術(shù)開發(fā)的網(wǎng)站可以實現(xiàn)更強(qiáng)的交互性和智能化功能。B/S結(jié)構(gòu)是C/S結(jié)構(gòu)的一種改進(jìn),使得Web應(yīng)用的維護(hù)和升級更為簡單,用戶訪問范圍更廣,信息資源共享程度更高。JSP技術(shù)是用Java標(biāo)準(zhǔn)開發(fā)服務(wù)器端Web應(yīng)用的主流技術(shù)。使用JSP進(jìn)行Web應(yīng)用開發(fā)需要JDK、Web服務(wù)器、JSP集成開發(fā)環(huán)境、Web瀏覽器及Web數(shù)據(jù)庫等開發(fā)工具。在Eclipse2022下用JSP開發(fā)Web項目的步驟為:配置JRE→配置Tomcat→創(chuàng)建Web項目→設(shè)計Web項目的目錄結(jié)構(gòu)→編寫Web項目的代碼→部署Web項目→啟動Tomcat→運(yùn)行Web項目。1.4習(xí)題與上機(jī)實踐一、單項選擇題1.JSP文件的擴(kuò)展名為(
)。A..jsp
B..java
C..js
D..class2.以下不能當(dāng)作Web應(yīng)用服務(wù)器使用的是(
)。A.Tomcat
B.JRun
C.Resin
D.Eclipse3.用JSP標(biāo)準(zhǔn)進(jìn)行JavaWeb開發(fā)需要(
)的支持。A.Java標(biāo)準(zhǔn)版
B.Java企業(yè)版
C.Java簡化版
D.Java移動版4.Web項目的初始化配置文件是(
)。A.index.jsp
B.index.html
C.web.xml
D.server.xml1.4習(xí)題與上機(jī)實踐二、判斷題1.有動畫呈現(xiàn)的網(wǎng)頁就是動態(tài)網(wǎng)頁。
(
)2.目前,B/S構(gòu)型的Web應(yīng)用已經(jīng)完全取代了C/S構(gòu)型的Web應(yīng)用。
(
)3.Web應(yīng)用只有被部署到Web服務(wù)器上之后才能正確運(yùn)行。
(
)4.Web項目資源的URL不區(qū)分大小寫。
(
)三、實踐題1.用百度搜索Web、Web應(yīng)用、Web應(yīng)用開發(fā)、動態(tài)網(wǎng)頁、B/S、JSP等關(guān)鍵詞,收集相關(guān)信息進(jìn)行學(xué)習(xí)和分析。2.在Eclipse
IDE中編寫一個JSP頁面,輸出“這是我的第一個JSP頁面”1.5拓展提高1.回顧并總結(jié)在Eclipse
IDE中用JSP開發(fā)Web項目的軟件安裝及配置全過程,并在計算機(jī)上進(jìn)行實踐。2.index.jsp頁面代表Web項目生成的網(wǎng)站主頁或者稱為歡迎頁面。如何在瀏覽器中訪問該頁面?如何在Web項目中更改原先設(shè)置的歡迎頁面?模塊2JSP語法知識目標(biāo)·掌握小腳本、表達(dá)式和聲明的基本用法?!ふ莆誴age指令和include指令的基本用法。·掌握添加JSP注釋的方法。技能目標(biāo)·能夠在Eclipse
IDE中編寫小腳本、表達(dá)式和聲明。020103·能夠在Eclipse
IDE中編寫page指令和include指令?!つ軌蛟贓clipse
IDE中編寫并閱讀JSP注釋。素質(zhì)目標(biāo)·學(xué)習(xí)并遵從JavaWeb編程規(guī)范,端正自己的學(xué)習(xí)思想和學(xué)習(xí)態(tài)度,培養(yǎng)自覺自律習(xí)慣。2.1回顧和思考【例2-1】嘗試編寫并運(yùn)行一個JSP頁面輸出系統(tǒng)的當(dāng)前時間。編寫example2_1.jsp頁面,文件路徑為/myPro/ch2/example,其代碼如下。2.1回顧和思考【例2-1】運(yùn)行結(jié)果如圖2-1所示。圖2-1【例2-1】運(yùn)行結(jié)果盡管我們對這些代碼還不是非常熟悉,但是可以看出JSP頁面是由HTML標(biāo)簽描述的靜態(tài)文本和JSP標(biāo)記描述的動態(tài)內(nèi)容穿插在一起而構(gòu)成的。接下來就要對各類代碼逐個分析。2.2.1page指令page指令定義JSP文件中的全局屬性,設(shè)定JSP頁面的相關(guān)屬性和相關(guān)功能。其語法格式如下。page指令中常見的屬性有l(wèi)anguage、import、contentType、pageEncoding、isErrorPage、errorPage?!纠?-1】的page指令設(shè)置頁面使用的腳本語言為Java,頁面的文字類型和編碼方式為“text/html(html文本);字符設(shè)置為GB18030”,導(dǎo)入java.util和java.text兩個包。注意:在一個JSP頁面中,page指令可以出現(xiàn)多次,除import以外,一般情況下每一種屬性只出現(xiàn)一次,后面重復(fù)出現(xiàn)的屬性設(shè)置將覆蓋先前的設(shè)置。習(xí)慣上把page指令作為JSP頁面的第一行,但這不是硬性規(guī)定。2.2JSP指令元素include指令是將指定位置的文件內(nèi)容內(nèi)嵌到當(dāng)前頁面。其語法格式如下。include指令只有一個屬性file。include指令包含文件的路徑名通常是指相對路徑名,不需要端口、協(xié)議和域名。如果被包含文件與當(dāng)前JSP文件處于同級目錄,則“文件名”前不用指明路徑;如果被包含文件處于當(dāng)前JSP文件同級目錄的下級目錄,則需指明完整的下級目錄,所有下級目錄一直到被包含文件之間用“/”隔開;如果被包含文件與當(dāng)前JSP文件分處于Web項目根目錄下的不同級目錄,則需指明被包含文件的絕對路徑,以“//”開頭,再加上其完整的目錄路徑。include指令用于靜態(tài)包含其他文件,所包含的文件必須符合JSP語法,可以是HTML文件、JSP文件、文本文件等。執(zhí)行被包含文件后,主JSP文件的進(jìn)程將會恢復(fù),繼續(xù)執(zhí)行下一行??梢詫⒁恍┕蚕硇缘膬?nèi)容寫在一個單獨(dú)的文件中,然后通過include指令引用該文件,從而緩解代碼重復(fù)冗余問題,并且便于代碼的修改和維護(hù)。例如,在網(wǎng)站的很多JSP頁面中都要在頂部顯示同樣的圖片。這時可寫一個文件包含該圖片及其顯示方式,在需要顯示該圖片的JSP頁面中用include指令嵌入這個文件即可。2.2.2include指令2.2JSP指令元素【例2-2】修改【例2-1】,在其頁面頂部增加一張圖片。(1)編寫一個名為“head.html”的文件,文件路徑為/myPro/ch2/example,該文件包含一個名為“head.jpg”的圖形文件(head.jpg文件存放在webapp目錄下名為“image”的文件夾中)。head.html代碼如下。2.2.2include指令2.2JSP指令元素【例2-2】修改【例2-1】,在其頁面頂部增加一張圖片。(2)編寫一個名為“example2_2.jsp”的文件,文件路徑為/myPro/ch2/example,文件中使用include指令引用了head.html文件。example2_2.jsp代碼如下。2.2.2include指令2.2JSP指令元素【例2-2】運(yùn)行結(jié)果如圖2-2所示。圖2-2【例2-2】運(yùn)行結(jié)果2.2.2include指令2.2JSP指令元素小腳本是在JSP頁面中嵌入的Java代碼片段。其語法格式如下。在【例2-1】中,小腳本用以下兩條語句生成格式化時間字符串。2.3.1小腳本2.3JSP腳本元素JSP引擎遇到表達(dá)式時,先計算表達(dá)式或變量的值,然后將計算結(jié)果以字符串形式返回并插入頁面的相應(yīng)位置。其語法格式如下。在【例2-1】中,通過表達(dá)式變量strCurrentTime在頁面相應(yīng)位置輸出當(dāng)前時間。2.3.2表達(dá)式聲明用來定義變量和方法,作用范圍為整個JSP頁面。其語法格式如下。在【例2-1】中,如果需要在同一個JSP頁面中的多個位置輸出當(dāng)前時間,首先在需要輸出當(dāng)前時間的位置寫上小腳本代碼。在構(gòu)造方法SimpleDateFormat("時間格式")的參數(shù)中設(shè)置所需的時間格式,在需要輸出當(dāng)前時間的位置插入表達(dá)式<%=strCurrentTime%>。雖然問題被解決了,但是上述小腳本代碼在整個頁面多次重復(fù)出現(xiàn),顯得異常笨拙。這時,把小腳本改成聲明即可解決這個問題。2.3.3聲明2.3JSP腳本元素【例2-3】利用聲明對【例2-1】進(jìn)行更改。編寫文件example2_3.jsp,文件路徑為/myPro/ch2/example,其代碼如下。2.3.3聲明2.3JSP腳本元素【例2-3】運(yùn)行結(jié)果如圖2-3所示。2.3.3聲明2.3JSP腳本元素圖2-3【例2-3】運(yùn)行結(jié)果JSP動作元素主要有jsp:forward、jsp:include、jsp:param、jsp:useBean、jsp:setProperty、jsp:getProperty等動作。其語法格式如下。JSP動作涉及頁面之間控制權(quán)的轉(zhuǎn)移。后續(xù)內(nèi)容將陸續(xù)介紹以上JSP動作。2.4JSP動作元素簡介HTML注釋被原樣發(fā)送到客戶端。HTML注釋在瀏覽器中看不到,但是可以通過“查看源代碼”看到。其語法格式如下。HTML注釋內(nèi)如果包含JSP腳本元素,這些小腳本、表達(dá)式和聲明都會被執(zhí)行,且在客戶端源代碼中顯示相應(yīng)結(jié)果。2.5JSP程序中的注釋2.5.1HTML注釋2.5.2JSP注釋JSP注釋又稱為隱藏注釋,在客戶端查看源代碼也看不到。JSP引擎不會編譯這些注釋。其語法格式如下。腳本元素中包含Java代碼,因此Java中的注釋規(guī)則在小腳本和聲明中同樣適用。其語法格式如下。【例2-4】向【例2-3】中添加一些注釋。編寫文件example2_4.jsp,文件路徑為/myPro/ch2/example,其代碼如下。2.5JSP程序中的注釋2.5.3腳本元素中的注釋【例2-4】向【例2-3】中添加一些注釋。2.5JSP程序中的注釋2.5.3腳本元素中的注釋【例2-4】在Edge瀏覽器中運(yùn)行后,執(zhí)行“更多工具”→“開發(fā)人員工具”命令,切換到“源代碼”選項卡,可以看到HTML注釋,但是看不到JSP注釋及Java注釋,如圖2-4所示。2.5JSP程序中的注釋2.5.3腳本元素中的注釋圖2-4在客戶端看到的【例2-4】源代碼2.6小結(jié)JSP頁面由HTML靜態(tài)文本、JSP指令元素、JSP腳本元素、JSP動作元素及注釋等內(nèi)容按相應(yīng)的語法規(guī)定交織構(gòu)成,以實現(xiàn)所需的語義邏輯。JSP指令元素主要包括page指令和include指令。JSP腳本元素包含小腳本、表達(dá)式和聲明。JSP文件中的注釋包含HTML注釋、JSP注釋和腳本元素中的注釋。對于JavaWeb開發(fā)應(yīng)用的初學(xué)者而言,我們需要理解“龜兔賽跑”的深刻寓意:兔子能力超強(qiáng),可是遲遲不行動;烏龜水平一般,但一直在堅持行動,向明確的目標(biāo)前進(jìn)。經(jīng)過一段時間的積淀,兩種情況的結(jié)果可想而知。同學(xué)們,讓我們從現(xiàn)在起就積極行動起來吧。2.7習(xí)題與上機(jī)實踐1.推算以下JSP代碼片段的運(yùn)行結(jié)果,并思考一下原因。(1)代碼片段1。2.7習(xí)題與上機(jī)實踐1.推算以下JSP代碼片段的運(yùn)行結(jié)果,并思考一下原因。(2)代碼片段2。(3)代碼片段3。2.7習(xí)題與上機(jī)實踐1.推算以下JSP代碼片段的運(yùn)行結(jié)果,并思考一下原因。(4)代碼片段4。2.除了使用JSP聲明外,還有一種簡化頁面代碼的辦法,即把重復(fù)使用的代碼寫在一個可共享的文件中,再用include指令把該文件嵌入當(dāng)前頁面。編寫這個共享文件,并修改【例2-3】,使之達(dá)成相同的效果。2.7習(xí)題與上機(jī)實踐3.試編寫一個JSP頁面,輸出表達(dá)式1+2+3+…+100的和,并在語句中添加適當(dāng)注釋。4.試編寫一個JSP頁面,實時顯示當(dāng)前系統(tǒng)時間。提示:添加以下HTML代碼,以實現(xiàn)頁面自動刷新功能。refresh表示要刷新頁面,1表示刷新的時間間隔是1秒,exercise2_4.jsp指要刷新的頁面。2.8拓展提高1.試編寫一個JSP頁面,輸出100以內(nèi)的所有素數(shù),并在語句中添加適當(dāng)?shù)淖⑨尅?.試編寫一個JSP頁面,產(chǎn)生一個異常,然后轉(zhuǎn)到另一個頁面處理該異常。提示:定義page指令中的isErrorPage屬性和errorPage屬性。3.試編寫一個JSP頁面,統(tǒng)計該網(wǎng)頁的訪問量。提示:使用synchronized關(guān)鍵字修飾聲明的方法。4.試編寫一個JSP頁面,輸入你的18位身份證號,從中解析出你的生日。程序運(yùn)行結(jié)果參考圖2-5。圖2-5輸入身份證號碼的運(yùn)行結(jié)果2.8拓展提高5.試編寫一個JSP頁面,動態(tài)加載一個文本文件、一個音頻文件和一個視頻文件,并實現(xiàn)音頻文件及視頻文件的播放控制。程序運(yùn)行結(jié)果參考圖2-6。圖2-6加載文件后的運(yùn)行結(jié)果模塊3JSP內(nèi)置對象知識目標(biāo)·掌握request對象、response對象、out對象、session對象、application對象、pageContext對象和exception對象的基本用法?!ち私鈖age對象和config對象?!ふ莆誄ookie類的基本用法。·掌握param動作、include動作和forward動作的基本用法。技能目標(biāo)·能夠在EclipseIDE中用request對象、response對象、out對象、session對象、application對象、pageContext對象和exception對象編寫JSP頁面并運(yùn)行?!つ軌蛟贓clipseIDE中用Cookie類編寫JSP頁面并運(yùn)行?!つ軌蛟贓clipseIDE中用param動作、include動作和forward動作編寫JSP頁面并運(yùn)行。素質(zhì)目標(biāo)·熟悉Java
Web編程的學(xué)習(xí)規(guī)律,掌握先進(jìn)的Java
Web編程學(xué)習(xí)理念和學(xué)習(xí)方法。在模塊2中我們學(xué)習(xí)并分析了JSP頁面代碼的構(gòu)成,學(xué)會了設(shè)計編寫簡單的JSP頁面。本模塊我們將系統(tǒng)地學(xué)習(xí)JSP內(nèi)置對象以及部分JSP動作元素,從而使用JSP處理客戶端請求,并與用戶進(jìn)行信息交互?!纠?-1】在網(wǎng)頁制作課程中設(shè)計一個用戶登錄表單示例。編寫文件example3_1.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.1回顧和思考【例3-1】運(yùn)行結(jié)果如圖3-1所示。3.1回顧和思考圖3-1【例3-1】運(yùn)行結(jié)果回憶一下在網(wǎng)頁制作課程中,HTML標(biāo)簽form的屬性action是暫不賦值的,因為那時不需要對表單的內(nèi)容進(jìn)行處理;而在【例3-1】中,屬性action被賦值為“example3_2.jsp”。這說明example3_1.jsp的處理頁面為example3_2.jsp,在example3_1.jsp頁面中填寫的信息將由example3_2.jsp頁面提取并進(jìn)行相應(yīng)的處理。example3_2.jsp頁面該如何設(shè)計?其核心代碼涉及的相關(guān)JSP內(nèi)置對象需在本模塊進(jìn)行學(xué)習(xí)?!纠?-2】實現(xiàn)用戶信息輸入。編寫example3_2.jsp頁面,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-2】運(yùn)行結(jié)果如圖3-2所示3.2JSP內(nèi)置對象的種類3.2.1request對象圖3-2【例3-2】運(yùn)行結(jié)果本例中出現(xiàn)了request內(nèi)置對象。request內(nèi)置對象用于處理客戶端的請求,包含所有來自瀏覽器的請求信息。在JSP頁面中通過request內(nèi)置對象來獲取請求的相關(guān)數(shù)據(jù)。本例中出現(xiàn)的request對象方法voidsetCharacterEncoding(Stringcharset)指定請求的數(shù)據(jù)編碼為中文,以防中文亂碼;StringgetParameter(Stringname)則根據(jù)頁面表單組件名稱獲取請求頁面提交的數(shù)據(jù)?!纠?-2】中的example3_2.jsp頁面通過getParameter()方法獲取example3_1.jsp頁面表單組件text和password中用戶輸入的值,并用JSP表達(dá)式在頁面相關(guān)位置輸出。注意:【例3-1】中表單信息的發(fā)送采用了post方式。post方式將表單的內(nèi)容通過http發(fā)送,在地址欄看不到表單的提交內(nèi)容。使用post方式發(fā)送信息沒有字符長度的限制。表單信息發(fā)送的另一種方式為get方式。get方式將表單的內(nèi)容編碼后,通過url發(fā)送,在地址欄能看到表單的提交內(nèi)容。使用get方式發(fā)送信息有255個字符長度的限制。在【例3-2】中,通過request內(nèi)置對象的getParameter方法獲取的表單組件的值是單個的,如果是提供多個值的表單組件(如復(fù)選框),該怎么處理?3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-3】實現(xiàn)用戶信息提交。編寫表單頁面example3_3.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-4】實現(xiàn)用戶信息輸出。編寫example3_4.jsp頁面,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-4】運(yùn)行結(jié)果如圖3-4所示。3.2JSP內(nèi)置對象的種類3.2.1request對象圖3-4【例3-4】運(yùn)行結(jié)果【例3-5】實現(xiàn)用戶登錄后頁面轉(zhuǎn)發(fā)。通常情況下,用戶登錄后的頁面處理流程:用戶進(jìn)行登錄,如果用戶名和密碼都正確,則通過驗證,進(jìn)入登錄成功頁面;反之,則提示用戶登錄失敗,返回用戶登錄頁面。要實現(xiàn)上述功能,需要掌握利用request內(nèi)置對象實現(xiàn)頁面轉(zhuǎn)發(fā)的方法。(1)編寫用戶登錄頁面example3_5_1.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-5】3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-5】(2)編寫用戶登錄信息處理頁面example3_5_2.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-5】(3)編寫登錄成功頁面example3_5_3.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.1request對象【例3-5】的運(yùn)行結(jié)果如圖3-5和圖3-6所示。3.2JSP內(nèi)置對象的種類3.2.1request對象圖3-5【例3-5】登錄失敗運(yùn)行結(jié)果【例3-5】的運(yùn)行結(jié)果如圖3-5和圖3-6所示。3.2JSP內(nèi)置對象的種類3.2.1request對象圖3-6【例3-5】登錄成功運(yùn)行結(jié)果response內(nèi)置對象與request內(nèi)置對象相對應(yīng),用于響應(yīng)客戶端請求并向客戶端輸出信息?!纠?-5】中使用request內(nèi)置對象實現(xiàn)了頁面轉(zhuǎn)發(fā)。同樣可以使用response內(nèi)置對象實現(xiàn)頁面的跳轉(zhuǎn)或重定向(這里不使用“轉(zhuǎn)發(fā)”這個術(shù)語,而使用“跳轉(zhuǎn)或重定向”,為什么?)?!纠?-6】實現(xiàn)用戶登錄后頁面跳轉(zhuǎn)。(1)編寫用戶登錄頁面example3_6_1.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.2response對象【例3-6】實現(xiàn)用戶登錄后頁面跳轉(zhuǎn)。(1)編寫用戶登錄頁面example3_6_1.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.2response對象【例3-6】實現(xiàn)用戶登錄后頁面跳轉(zhuǎn)。(2)編寫用戶登錄信息處理頁面example3_6_2.jsp,文件路徑為/myPro/ch3/example,其代碼如下。繼續(xù)使用example3_5_3.jsp為登錄成功頁面。【例3-6】運(yùn)行結(jié)果可參考【例3-5】運(yùn)行結(jié)果圖3-5和圖3-6。3.2JSP內(nèi)置對象的種類3.2.2response對象【例3-6】3.2JSP內(nèi)置對象的種類3.2.2response對象注意:response內(nèi)置對象的sendRedirect("url")方法與request轉(zhuǎn)發(fā)器的void
forward(request,response)方法的差別在于:使用sendRedirect("url")方法實現(xiàn)頁面跳轉(zhuǎn)后,客戶端重新建立了鏈接,url地址發(fā)生了改變;使用forward(request,response)方法實現(xiàn)頁面轉(zhuǎn)發(fā)后,客戶端并沒有建立新的鏈接,url地址沒有改變。后者亦可稱為派遣訪問。【例3-7】實現(xiàn)在網(wǎng)頁中實時顯示系統(tǒng)時間??梢岳胷esponse內(nèi)置對象的voidsetHeader(Stringname,Stringvalue)方法在網(wǎng)頁中實時顯示系統(tǒng)時間。該方法的第一個形參為http響應(yīng)報頭名,第二個形參是http響應(yīng)報頭值。本例將使用Refresh響應(yīng)報頭,響應(yīng)報頭值設(shè)為1秒。編寫文件example3_7.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.2response對象【例3-7】運(yùn)行結(jié)果如圖3-7所示。通過間隔1秒的頁面刷新,頁面實時顯示了系統(tǒng)時間。3.2JSP內(nèi)置對象的種類3.2.2response對象圖3-7【例3-7】運(yùn)行結(jié)果3.2JSP內(nèi)置對象的種類3.2.3out對象out內(nèi)置對象是JSP編程中使用最為頻繁的內(nèi)置對象,該對象用于向客戶端輸出數(shù)據(jù)。out內(nèi)置對象常用的方法有void
print(String
output)、void
println(String
output)和voidwrite(String
output),這三種方法都用于向頁面相應(yīng)位置輸出數(shù)據(jù)。3.2JSP內(nèi)置對象的種類3.2.3out對象【例3-8】out內(nèi)置對象應(yīng)用實例。編寫文件example3_8.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.3out對象【例3-8】運(yùn)行結(jié)果如圖3-8所示。圖3-8【例3-8】運(yùn)行結(jié)果3.2JSP內(nèi)置對象的種類3.2.4session對象session內(nèi)置對象用于存儲用戶會話的所有信息,以此識別不同用戶。session內(nèi)置對象在頁面發(fā)生跳轉(zhuǎn)時,能保存并跟蹤用戶的會話信息。session內(nèi)置對象常用的方法是void
setAttribute(String
name,Objectvalue)和Object
getAttribute(String
name)。前者設(shè)定指定名稱的屬性及其值,并且把該屬性連同它的值存儲在session內(nèi)置對象中;后者根據(jù)屬性的名稱獲取其存儲在session內(nèi)置對象中的值。3.2JSP內(nèi)置對象的種類3.2.4session對象【例3-9】使用session內(nèi)置對象顯示會話計數(shù)。編寫文件example3_9.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.4session對象【例3-9】運(yùn)行結(jié)果如圖3-9所示。會話計數(shù)從1開始,選擇刷新頁面、新建選項卡、新建窗口等操作,會話計數(shù)增加1次。圖3-9【例3-9】運(yùn)行結(jié)果3.2JSP內(nèi)置對象的種類3.2.5application對象服務(wù)器中的JSP引擎啟動后,application內(nèi)置對象就產(chǎn)生了。不同用戶瀏覽網(wǎng)站的不同頁面時,application內(nèi)置對象都是同一個,即所有客戶端共享此application內(nèi)置對象,直至JSP引擎關(guān)閉,此application內(nèi)置對象才消亡。application內(nèi)置對象常用的方法是void
setAttribute(String
name,Object
value)和Object
getAttribute(Stringname)。前者設(shè)定指定名稱的屬性及其值,并且把該屬性連同它的值存儲在application內(nèi)置對象中;后者根據(jù)屬性的名稱獲取其存儲在application內(nèi)置對象中的值。3.2JSP內(nèi)置對象的種類3.2.5application對象【例3-10】使用application內(nèi)置對象顯示應(yīng)用程序計數(shù)。編寫文件example3_10.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.5application對象【例3-10】運(yùn)行結(jié)果如圖3-10所示。應(yīng)用程序計數(shù)從1開始,選擇刷新頁面、新建選項卡、新建窗口、新建會話、重新打開瀏覽器等操作,應(yīng)用程序計數(shù)增加1次。重啟Tomcat,應(yīng)用程序計數(shù)則又從1開始。圖3-10【例3-10】運(yùn)行結(jié)果3.2JSP內(nèi)置對象的種類3.2.6pageContext對象使用pageContext內(nèi)置對象可以訪問本頁面中其他所有內(nèi)置對象。pageContext內(nèi)置對象的作用范圍僅限于頁面內(nèi)。pageContext內(nèi)置對象常用的方法是void
setAttribute(String
name,Object
value)和Object
getAttribute(String
name)。前者設(shè)定指定名稱的屬性及其值,并且把該屬性連同它的值存儲在pageContext內(nèi)置對象中;后者根據(jù)屬性的名稱獲取其存儲在pageContext內(nèi)置對象中的值。3.2JSP內(nèi)置對象的種類3.2.6pageContext對象【例3-11】使用pageContext內(nèi)置對象顯示頁面計數(shù)。編寫文件example3_11.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.6pageContext對象【例3-11】運(yùn)行結(jié)果如圖3-11所示。頁面計數(shù)從1開始,選擇刷新頁面、新建選項卡、新建窗口、新建會話、重新打開瀏覽器等操作,頁面計數(shù)始終為1。圖3-11【例3-11】運(yùn)行結(jié)果3.2JSP內(nèi)置對象的種類3.2.7page對象page內(nèi)置對象提供對頁面上定義的所有對象的訪問。page內(nèi)置對象表示JSP頁面本身。在JSP中很少使用page內(nèi)置對象,一般使用page指令替代它。3.2JSP內(nèi)置對象的種類3.2.8config對象config內(nèi)置對象存儲Servlet的一些初始信息,如讀取web.xml配置信息等。與page內(nèi)置對象一樣,在JSP中很少使用config內(nèi)置對象。3.2JSP內(nèi)置對象的種類3.2.9exception對象exception對象的作用是顯示異常信息,該對象只能在包含isErrorPage="true"的頁面中使用?;仡櫮K2拓展提高的第2題,首先編寫一個產(chǎn)生異常的JSP頁面lab2_2.jsp,文件路徑為/myPro/ch2/lab,其代碼如下。3.2JSP內(nèi)置對象的種類3.2.9exception對象此頁面在執(zhí)行時會發(fā)生除數(shù)為0的異常,其后代碼的執(zhí)行會終止,程序會轉(zhuǎn)至page指令中errorPage屬性所指定的當(dāng)前頁面的錯誤處理頁面error.jsp。error.jsp頁面的文件路徑為/myPro/ch2/lab,其代碼如下。該頁面中page指令的isErrorPage屬性值為“true”,即表示當(dāng)前頁面為錯誤處理頁面,可在此頁面上使用exception內(nèi)置對象,以捕捉導(dǎo)致控制權(quán)轉(zhuǎn)至錯誤處理頁面的錯誤。String
getMessage()方法返回異常消息字符串。3.3CookieCookie是Web服務(wù)器暫存在客戶端瀏覽器內(nèi)(有效期短)或硬盤中(有效期長)的少量文本數(shù)據(jù)。當(dāng)用戶再次訪問某個Web站點時,Web服務(wù)器要求客戶端瀏覽器查找并返回先前發(fā)送的Cookie,從而達(dá)到令Web服務(wù)器快速識別用戶及其請求的目的。Cookie類位于javax.servlet.http包中??梢詣?chuàng)建Cookie類的實例,將其與request內(nèi)置對象和response內(nèi)置對象結(jié)合使用,以實現(xiàn)將Cookie信息傳送到客戶端或獲取客戶端Cookie信息等功能。3.3Cookie【例3-12】使用Cookie實現(xiàn)30秒內(nèi)保留登錄的用戶名和密碼功能。(1)編寫用戶登錄頁面example3_12_1.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.3Cookie【例3-12】使用Cookie實現(xiàn)30秒內(nèi)保留登錄的用戶名和密碼功能。(2)編寫用戶登錄信息處理頁面example3_12_2.jsp,文件路徑為/myPro/ch3/example,其代碼如下。3.3Cookie【例3-12】運(yùn)行example3_12_1.jsp后輸入用戶名和密碼,單擊“提交”按鈕,在example3_12_2.jsp頁面顯示用戶登錄信息,結(jié)果如圖3-12和圖3-13所示。圖3-12【例3-12】運(yùn)行結(jié)果1圖3-13【例3-12】運(yùn)行結(jié)果23.3Cookie【例3-12】隨后關(guān)閉瀏覽器。30秒內(nèi)再次運(yùn)行example3_12_1.jsp文件,存儲在Cookie中的用戶名和密碼則會在相應(yīng)表單組件中顯示,如圖3-14所示。再次單擊“提交”按鈕,在example3_12_2.jsp頁面再次顯示用戶登錄信息,運(yùn)行結(jié)果可參考圖3-13。圖3-13【例3-12】運(yùn)行結(jié)果33.4JSP動作元素3.4.1jsp:param動作jsp:param動作的語法格式如下。如果起始標(biāo)記和結(jié)束標(biāo)記之間沒有內(nèi)容,則上述語法格式可簡化如下。3.4JSP動作元素3.4.2jsp:include動作jsp:include動作用于將其他HTML文件或JSP文件合并到當(dāng)前頁面文件。jsp:include動作的語法格式如下。其中,page屬性的值規(guī)定了所嵌入文件的相對路徑,flush屬性的作用是在嵌入其他響應(yīng)前清空存儲在緩沖區(qū)中的數(shù)據(jù),一般設(shè)置為true。如果起始標(biāo)記和結(jié)束標(biāo)記之間沒有參數(shù)內(nèi)容,則上述語法格式可簡化如下。3.4JSP動作元素3.4.2jsp:include動作【例3-13】在頁面中嵌入example2_3.jsp頁面。編寫文件example3_13.jsp,文件路徑為/myPro/ch3/example,其代碼如下。【例3-13】運(yùn)行結(jié)果可參考【例2-3】的圖2-3。再看一個帶參數(shù)的include動作的例子。因為嵌入的是example2_3.jsp頁面,所以Page屬性的值為example2_3.jsp所處的絕對路徑。3.4JSP動作元素3.4.2jsp:include動作【例3-14】在頁面中嵌入example3_2.jsp頁面。編寫文件example3_14.jsp,文件路徑為/myPro/ch3/example,其代碼如下?!纠?-14】運(yùn)行結(jié)果可參考【例3-2】的圖3-2。3.4JSP動作元素3.4.3jsp:forward動作jsp:forward動作用于將用戶的請求重定向到另一個HTML頁面、JSP頁面或Servlet。jsp:forward動作的語法格式如下。其中,page屬性指定目標(biāo)頁面的網(wǎng)址。如果起始標(biāo)記和結(jié)束標(biāo)記之間沒有參數(shù)內(nèi)容,則上述語法格式可簡化如下。3.4JSP動作元素3.4.3jsp:forward動作【例3-15】用jsp:forward動作改寫【例3-5】中example3_5.jsp頁面的相應(yīng)代碼,以達(dá)到相似的運(yùn)行效果。編寫文件example3_15.jsp,文件路徑為/myPro/ch3/example,其代碼如下?!纠?-1】中example3_1.jsp頁面的處理頁面更改為example3_15.jsp。運(yùn)行example3_1.jsp文件,輸入相關(guān)數(shù)據(jù)驗證。【例3-15】運(yùn)行結(jié)果可參考【例3-5】的圖3-5和圖3-6。與【例3-5】類似,用jsp:forward動作實現(xiàn)頁面跳轉(zhuǎn)后,客戶端并沒有建立新的鏈接,URL沒有改變,仍保留為http://localhost:8080/myPro/ch3/example/example3_15.jsp。3.5小結(jié)本模塊我們學(xué)習(xí)了9個JSP內(nèi)置對象:request、response、out、session、application、pageContext、page、config和exception及其常用的方法;還學(xué)習(xí)了Cookie的使用及jsp:param、jsp:include和jsp:forward動作的使用。利用以上JSP開發(fā)技術(shù)可以著手處理客戶端請求,從而與用戶進(jìn)行信息交流。隨著編寫代碼工作量的增加,有3種學(xué)習(xí)JavaWeb編程的方式值得我們關(guān)注:第1種是積極思考并動手實踐下發(fā)的學(xué)習(xí)任務(wù),待參考答案公布后,與之對照,找出自身差距甚至參考答案的不足之處;第2種是等待參考答案公布后,將其輸入計算機(jī)進(jìn)行驗證性學(xué)習(xí),做一個合格的打字員;第3種是等待參考答案公布后,聽一遍解釋結(jié)束?!皩W(xué)而不思則罔,思而不學(xué)則殆”,我們應(yīng)該選擇哪一種方式?3.6習(xí)題與上機(jī)實踐1.編寫圖3-15所示的表單頁面,頁面信息提交后的輸出結(jié)果如圖3-16所示。圖3-15表單頁面圖3-16輸出頁面3.6習(xí)題與上機(jī)實踐2.在【例3-7】中,通過response內(nèi)置對象的setHeader方法設(shè)置每隔1秒的頁面刷新,實時顯示系統(tǒng)時間。對【例3-7】做一些改動,實現(xiàn)頁面5秒后轉(zhuǎn)至。3.分析以下JSP頁面代碼,推算并驗證運(yùn)行結(jié)果。思考一下為什么會有這樣的結(jié)果。(1)頁面代碼片段1如下。3.6習(xí)題與上機(jī)實踐3.分析以下JSP頁面代碼,推算并驗證運(yùn)行結(jié)果。思考一下為什么會有這樣的結(jié)果。exercise3_3_1.jsp代碼如下。exercise3_3_2.jsp代碼如下。3.6習(xí)題與上機(jī)實踐3.分析以下JSP頁面代碼,推算并驗證運(yùn)行結(jié)果。思考一下為什么會有這樣的結(jié)果。(2)頁面代碼片段2如下。3.6習(xí)題與上機(jī)實踐4.修改模塊2拓展提高的第4題,在圖3-17所示的數(shù)據(jù)錄入頁面,輸入
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 暴露報告中的隱私保護(hù)與倫理邊界
- 通訊錄管理系統(tǒng)
- 中國風(fēng)景介紹
- 2025-2026學(xué)年高三下學(xué)期歷史期末模擬卷
- 養(yǎng)老院老人康復(fù)理療師考核獎懲制度
- 養(yǎng)老院老人健康監(jiān)測人員培訓(xùn)制度
- 養(yǎng)老院外出就醫(yī)制度
- 2026年中國銀聯(lián)產(chǎn)品部移動支付創(chuàng)新場景設(shè)計思維測試含答案
- 2026年物資保管崗應(yīng)聘面試綜合模擬題及答案精解
- 2025年化工行業(yè)生產(chǎn)設(shè)備維護(hù)與管理手冊
- 器官移植術(shù)后排斥反應(yīng)的風(fēng)險分層管理
- 虛擬電廠關(guān)鍵技術(shù)
- 事業(yè)單位清算及財務(wù)報告編寫范本
- 護(hù)坡綠化勞務(wù)合同范本
- 臨床績效的DRG與CMI雙指標(biāo)調(diào)控
- 2026年湛江日報社公開招聘事業(yè)編制工作人員備考題庫及完整答案詳解
- 2025-2026學(xué)年人教版數(shù)學(xué)三年級上學(xué)期期末仿真模擬試卷一(含答案)
- 中國腎移植排斥反應(yīng)臨床診療指南(2025版)
- 2024高考英語應(yīng)用文寫作真題手把手:2023全國乙卷素材
- 抵制網(wǎng)絡(luò)爛梗主題班會課件不盲目跟風(fēng)做自己的主人
- 企業(yè)盡職調(diào)查內(nèi)容提綱-中英文對照
評論
0/150
提交評論