JavaWeb及其框架技術(shù) 課件 第1、2章 Java Web基礎(chǔ)知識(shí)與Web開(kāi)發(fā)環(huán)境配置、JSP技術(shù)_第1頁(yè)
JavaWeb及其框架技術(shù) 課件 第1、2章 Java Web基礎(chǔ)知識(shí)與Web開(kāi)發(fā)環(huán)境配置、JSP技術(shù)_第2頁(yè)
JavaWeb及其框架技術(shù) 課件 第1、2章 Java Web基礎(chǔ)知識(shí)與Web開(kāi)發(fā)環(huán)境配置、JSP技術(shù)_第3頁(yè)
JavaWeb及其框架技術(shù) 課件 第1、2章 Java Web基礎(chǔ)知識(shí)與Web開(kāi)發(fā)環(huán)境配置、JSP技術(shù)_第4頁(yè)
JavaWeb及其框架技術(shù) 課件 第1、2章 Java Web基礎(chǔ)知識(shí)與Web開(kāi)發(fā)環(huán)境配置、JSP技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章JavaWeb基礎(chǔ)知識(shí)與Web開(kāi)發(fā)環(huán)境配置了解Web應(yīng)用程序中的靜態(tài)網(wǎng)站、動(dòng)態(tài)網(wǎng)站、前端、后端的基本概念了解Web開(kāi)發(fā)中的B/S架構(gòu)、C/S架構(gòu)了解HTTP協(xié)議的基本概念掌握HTTP請(qǐng)求報(bào)文及響應(yīng)報(bào)文的格式掌握獲取HTTP請(qǐng)求報(bào)頭的方法掌握設(shè)置HTTP響應(yīng)報(bào)頭的方法掌握Tomcat服務(wù)器的安裝及啟動(dòng)掌握在Eclipse中配置Tomcat服務(wù)器及創(chuàng)建Web應(yīng)用掌握在IDEA中配置Tomcat服務(wù)器及創(chuàng)建Web應(yīng)用學(xué)習(xí)目標(biāo)1.1.1靜態(tài)網(wǎng)站與動(dòng)態(tài)網(wǎng)站一個(gè)Web應(yīng)用程序由完成特定任務(wù)的各種Web組件(Webcomponents)構(gòu)成并通過(guò)Web將服務(wù)展示給外界。在實(shí)際應(yīng)用中,Web應(yīng)用程序由Servlet、JSP頁(yè)面、HTML文件及圖像文件等多種元素組成。簡(jiǎn)單來(lái)說(shuō),Web應(yīng)用程序就是各種網(wǎng)站,網(wǎng)站由一系列的網(wǎng)頁(yè)構(gòu)成,網(wǎng)站又分為靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站。1.1Web應(yīng)用程序基本概念靜態(tài)網(wǎng)站的所有網(wǎng)頁(yè)直接用HTML(HyperTextMarkupLanguage,超文本標(biāo)記語(yǔ)言)編寫(xiě),所有的網(wǎng)頁(yè)均是標(biāo)準(zhǔn)的HTML文件,一般文件名以htm、html或shtml等為后綴。網(wǎng)頁(yè)上可以展現(xiàn)各種視覺(jué)動(dòng)態(tài)效果,如GIF動(dòng)畫(huà)、FLASH動(dòng)畫(huà)、滾動(dòng)字幕等,但是它展示的內(nèi)容一般是固定不變的,用戶在不同時(shí)間、不同地點(diǎn)訪問(wèn)網(wǎng)站的同一靜態(tài)網(wǎng)頁(yè)時(shí),其顯示出來(lái)的內(nèi)容是一樣的。動(dòng)態(tài)網(wǎng)站是指網(wǎng)站內(nèi)容可根據(jù)不同情況動(dòng)態(tài)變更的網(wǎng)站,在相同的網(wǎng)站、相同的時(shí)間,不同的人訪問(wèn)時(shí)展示出來(lái)的內(nèi)容是不同的,即使同一用戶在不同時(shí)間或不同地點(diǎn)訪問(wèn)同一動(dòng)態(tài)網(wǎng)頁(yè),其展示出的內(nèi)容也可以是不同的。動(dòng)態(tài)網(wǎng)站通過(guò)數(shù)據(jù)庫(kù)進(jìn)行架構(gòu),網(wǎng)頁(yè)中變化的內(nèi)容主要來(lái)自數(shù)據(jù)庫(kù)中數(shù)據(jù)的變化。動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)主要有ASP、PHP、JSP等。1.1Web應(yīng)用程序基本概念1.1.2Web前端與Web后端Web前端是在Web應(yīng)用中用戶可以看得見(jiàn)的部分,包括Web頁(yè)面的結(jié)構(gòu)、Web的外觀視覺(jué)展現(xiàn)及Web層面的交互實(shí)現(xiàn)。Web前端主要涉及的技術(shù)有DIV+CSS、HTML、JS和JQuery等。Web后端主要指服務(wù)器端的工作,通常負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)進(jìn)行交互以處理相應(yīng)的業(yè)務(wù)邏輯,需要考慮的是如何實(shí)現(xiàn)功能、數(shù)據(jù)的存取、平臺(tái)的穩(wěn)定性與性能等。1.1Web應(yīng)用程序基本概念1.1.3C/S架構(gòu)與B/S架構(gòu)C/S架構(gòu)是一種早期的分布式架構(gòu),客戶端需要安裝專門的客戶端程序,服務(wù)器端通常為高性能的PC或工作站,并采用大型數(shù)據(jù)庫(kù)系統(tǒng),嚴(yán)格意義上它是個(gè)數(shù)據(jù)庫(kù)服務(wù)器,多個(gè)客戶端程序可以同時(shí)訪問(wèn)這個(gè)數(shù)據(jù)庫(kù)服務(wù)器,如圖1-1所示。這種結(jié)構(gòu)可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到客戶端和服務(wù)器,從而降低系統(tǒng)的通信開(kāi)銷。1.1Web應(yīng)用程序基本概念圖1-1C/S架構(gòu)模式B/S架構(gòu)借助IE等瀏覽器來(lái)運(yùn)行,它是Web興起后的一種網(wǎng)絡(luò)架構(gòu)模式。在這種模式中,客戶端不需要安裝專門的客戶端程序,而是使用瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求,服務(wù)器進(jìn)行處理后將處理結(jié)果返回給客戶端,如圖1-2所示。此時(shí)的服務(wù)器不僅是數(shù)據(jù)庫(kù)服務(wù)器,它還是應(yīng)用服務(wù)器。這種結(jié)構(gòu)能夠利用現(xiàn)在普及的瀏覽器技術(shù)實(shí)現(xiàn)原來(lái)需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,能有效節(jié)約開(kāi)發(fā)成本,是一種全新的軟件體系結(jié)構(gòu),也是目前應(yīng)用軟件的首選體系結(jié)構(gòu)。1.1Web應(yīng)用程序基本概念圖1-2B/S架構(gòu)模式1.2.1HTTP協(xié)議HTTP是HypertextTransferProtocol的縮寫(xiě),即超文本傳輸協(xié)議,是瀏覽器與Web服務(wù)器進(jìn)行數(shù)據(jù)交互時(shí)需要遵守的規(guī)范。當(dāng)客戶端與服務(wù)器端建立連接后,客戶端就可以向服務(wù)器發(fā)送URL(UniformResourceLacator,統(tǒng)一資源定位符)請(qǐng)求,被稱為HTTP請(qǐng)求,服務(wù)器端在接收到請(qǐng)求后會(huì)做出響應(yīng),被稱為HTTP響應(yīng)??蛻舳伺c服務(wù)器在HTTP下的交互過(guò)程如圖1-3所示。1.2Web的工作原理圖1-3客戶端與服務(wù)器的交互過(guò)程1.2.2HTTP報(bào)文格式1.HTTP請(qǐng)求報(bào)文

當(dāng)用戶在瀏覽器中訪問(wèn)某個(gè)網(wǎng)址、單擊某個(gè)鏈接或提交網(wǎng)頁(yè)上的表單時(shí),瀏覽器會(huì)向服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù),即HTTP請(qǐng)求報(bào)文。一個(gè)完整的HTTP請(qǐng)求報(bào)文由三個(gè)部分組成:請(qǐng)求行、請(qǐng)求頭、請(qǐng)求正文。1.2Web的工作原理圖1-4HTTP請(qǐng)求報(bào)文1.2.2HTTP報(bào)文格式1.HTTP請(qǐng)求報(bào)文(1)請(qǐng)求行

請(qǐng)求行位于請(qǐng)求報(bào)文的第一行,它由請(qǐng)求方式、資源路徑和所使用的HTTP版本三個(gè)部分組成。格式為:請(qǐng)求方式URL協(xié)議版本1.2Web的工作原理請(qǐng)求方式含義GET請(qǐng)求獲取請(qǐng)求行的URI所標(biāo)識(shí)的資源POST向指定資源提交數(shù)據(jù),請(qǐng)求服務(wù)器進(jìn)行處理(如提交表單或上傳文件)HEAD請(qǐng)求獲取由URI所標(biāo)識(shí)資源的響應(yīng)消息頭OPTIONS請(qǐng)求查詢Web服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)和需求PUT將網(wǎng)頁(yè)放置到指定URL位置(上傳/移動(dòng))DELETE請(qǐng)求服務(wù)器刪除URI所指定的資源,是與PUT相反的方法TRACE請(qǐng)求Web服務(wù)器端將之前的請(qǐng)求通信環(huán)回給客戶端CONNECT保留將來(lái)使用HTTP的常用請(qǐng)求方式1.2.2HTTP報(bào)文格式1.HTTP請(qǐng)示報(bào)文(2)請(qǐng)求頭

請(qǐng)求頭主要用于向服務(wù)器端傳遞附加消息,例如,客戶端可以接收的數(shù)據(jù)類型、壓縮方法、語(yǔ)言及發(fā)送請(qǐng)求的超鏈接所屬頁(yè)面的URL地址等信息。請(qǐng)求頭由一個(gè)頭字段名稱和一個(gè)值構(gòu)成,頭字段名稱和值之間用冒號(hào)(:)和空格分隔,格式為:頭部字段名:值常用的請(qǐng)求頭字段說(shuō)明詳見(jiàn)教材表1-2所示。1.2Web的工作原理1.2.2HTTP報(bào)文格式2.HTTP響應(yīng)報(bào)文

服務(wù)器接收到請(qǐng)求數(shù)據(jù)時(shí),會(huì)將處理后的數(shù)據(jù)傳送給客戶端,即HTTP響應(yīng)報(bào)文。一個(gè)完整的響應(yīng)報(bào)文由三個(gè)部分組成:響應(yīng)狀態(tài)行、響應(yīng)頭、響應(yīng)實(shí)體1.2Web的工作原理圖1-5HTTP響應(yīng)報(bào)文1.2.2HTTP報(bào)文格式2.HTTP響應(yīng)報(bào)文

(1)響應(yīng)狀態(tài)行

位于響應(yīng)報(bào)文的第一行,它包含三個(gè)部分,即HTTP版本、一個(gè)表示成功或錯(cuò)誤的整數(shù)代碼(狀態(tài)碼)和對(duì)狀態(tài)碼進(jìn)行描述的文本信息。格式為:協(xié)議版本狀態(tài)碼狀態(tài)碼描述1.2Web的工作原理1.2.2HTTP報(bào)文格式2.HTTP響應(yīng)報(bào)文

(1)響應(yīng)狀態(tài)行1.2Web的工作原理狀態(tài)碼說(shuō)明101(切換協(xié)議)如果客戶端發(fā)送的請(qǐng)求使用另外一種協(xié)議與服務(wù)器進(jìn)行對(duì)話,服務(wù)器發(fā)送101響應(yīng)狀態(tài)碼表示自己將遵從客戶端請(qǐng)求,轉(zhuǎn)換到另外一種協(xié)議200(正常)客戶端的請(qǐng)求成功,響應(yīng)消息返回正常的請(qǐng)求結(jié)果。201(已創(chuàng)建)服務(wù)器已經(jīng)根據(jù)客戶端的請(qǐng)求創(chuàng)建了文檔,文檔的URL為響應(yīng)消息中Location響應(yīng)頭的值302(找到)表示請(qǐng)求的資源臨時(shí)從不同的URL響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置進(jìn)行以后的請(qǐng)求305(使用代理)客戶端應(yīng)通過(guò)Location頭所指定的代理服務(wù)器獲得請(qǐng)求的文檔404(找不到)表示服務(wù)器上不存在客戶端請(qǐng)求的資源408(請(qǐng)求超時(shí))在服務(wù)器等待的時(shí)間內(nèi),客戶端沒(méi)有發(fā)出任何請(qǐng)求500(內(nèi)部服務(wù)器錯(cuò)誤)表示服務(wù)器發(fā)生錯(cuò)誤,無(wú)法處理客戶端的請(qǐng)求503(服務(wù)不可用)由于服務(wù)器目前過(guò)載或者處于維護(hù)狀態(tài),不能處理客戶端的請(qǐng)求常見(jiàn)狀態(tài)碼說(shuō)明1.2.2HTTP報(bào)文格式2.HTTP響應(yīng)報(bào)文

(2)響應(yīng)頭

服務(wù)器端通過(guò)響應(yīng)頭向客戶端傳遞附加信息,包括服務(wù)程序名、被請(qǐng)求資源需要的誰(shuí)方式、客戶端請(qǐng)求資源的最后修改時(shí)間、重定向地址等。當(dāng)服務(wù)器向客戶端回送響應(yīng)消息時(shí),根據(jù)情況不同,發(fā)送的響應(yīng)頭也不相同。1.2Web的工作原理頭字段說(shuō)明Accept-Range用于說(shuō)明服務(wù)器是否接收客戶端使用Range請(qǐng)求頭字段請(qǐng)求資源Age用于指出當(dāng)前網(wǎng)頁(yè)文檔可以在客戶端或代理服務(wù)器中緩存的有效時(shí)間,以秒為單位Content-Length表示內(nèi)容長(zhǎng)度Content-Type表示后面的文檔屬于什么類型。Servlet默認(rèn)為text/plain,但通常需要顯式地指定為text/html。Date當(dāng)前的GMT時(shí)間。Etag用于向客戶端傳送代表實(shí)體內(nèi)容特征的標(biāo)記信息Location用于通知客戶端獲取請(qǐng)求文檔的新地址,其值為一個(gè)使用絕對(duì)路徑的URL地址Retry-After可以與503狀態(tài)碼配合使用,告訴客戶端在什么時(shí)間可以重新發(fā)送請(qǐng)求Server用于指定服務(wù)器軟件產(chǎn)品的名稱Vary用于指定服務(wù)器軟件產(chǎn)品的名稱Refresh用于告知瀏覽器自動(dòng)刷新頁(yè)面的時(shí)間,以秒為單位常用的響應(yīng)頭字段1.2.2HTTP報(bào)文格式2.HTTP響應(yīng)報(bào)文

(3)響應(yīng)實(shí)體

響應(yīng)實(shí)體用于存放需要返回給客戶端的數(shù)據(jù)信息。1.2Web的工作原理

在客戶端和服務(wù)器之間進(jìn)行請(qǐng)求——響應(yīng)時(shí),兩種最常被用到的方法是GET方法和POST方法。GET方法用于從指定的資源請(qǐng)求數(shù)據(jù);POST方法用于向指定的資源提交要被處理的數(shù)據(jù)。1.2.3GET方法當(dāng)客戶端要從服務(wù)器端中讀取文檔時(shí),使用GET方法。使用GET方法時(shí),請(qǐng)求的參數(shù)和對(duì)應(yīng)的值被附加在URL地址后面,一起被發(fā)送到服務(wù)器。舉例如下。/test/form.jsp?id=1001&name=zhang從這個(gè)例子中我們可以看到,問(wèn)號(hào)(?)代表URL的結(jié)尾與請(qǐng)求參數(shù)的開(kāi)始,參數(shù)由參數(shù)名和參數(shù)值組成,中間用等號(hào)(=)連接。如果有多個(gè)參數(shù),參數(shù)之間用&分隔。因此GET方法在通過(guò)URL提交數(shù)據(jù)時(shí),數(shù)據(jù)在URL中是可以被看到的,若用戶輸入的數(shù)據(jù)是非敏感數(shù)據(jù),則可以使用GET。1.2Web的工作原理1.2.4POST方法當(dāng)客戶端給服務(wù)器端發(fā)送請(qǐng)求時(shí)可以使用POST方法,比如當(dāng)用戶提交表單時(shí),瀏覽器將使用POST方法提交表單內(nèi)容。POST方法將請(qǐng)求參數(shù)放置在RequestBody內(nèi),可以傳輸大量數(shù)據(jù),也可用來(lái)傳送文件。舉例如下。POST/form.jspHTTP/1.1Host:id=1001&name=zhangPOST方法不會(huì)像GET方法那樣將參數(shù)顯示在地址欄上,因此如果用戶輸入的數(shù)據(jù)是敏感數(shù)據(jù),那么還是使用POST為好。1.2Web的工作原理1.2Web的工作原理GET方法的特點(diǎn):以GET方法獲取的數(shù)據(jù)

能夠被緩存GET方法獲取的數(shù)據(jù)會(huì)保存在瀏覽器的瀏覽記錄中以GET方法請(qǐng)求的URL能夠保存為瀏覽器書(shū)簽GET方法獲取的數(shù)據(jù)有長(zhǎng)度限制GET方法主要用于獲取數(shù)據(jù)GET方法不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用POST方法的特點(diǎn):以POST方法提交的數(shù)據(jù)

不會(huì)被緩存POST方法提交的數(shù)據(jù)不會(huì)保留在瀏覽器歷史記錄POST方法提交的數(shù)據(jù)不能被收藏至?xí)濸OST方法對(duì)提交的數(shù)據(jù)長(zhǎng)度沒(méi)有要求。

在搭建Web應(yīng)用的開(kāi)發(fā)環(huán)境時(shí),首先需要安裝開(kāi)發(fā)工具包JDK,其次安裝Web服務(wù)器和數(shù)據(jù)庫(kù)。1.3.1Servlet容器介紹Servlet(ServerApplet)是JavaServlet的簡(jiǎn)稱,稱為小服務(wù)程序或服務(wù)連接器,是用Java語(yǔ)言編寫(xiě)的運(yùn)行在服務(wù)器端的程序,主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。其主要作用包括:①通過(guò)請(qǐng)求對(duì)象讀取用戶程序發(fā)送過(guò)來(lái)的顯式數(shù)據(jù)(如表單數(shù)據(jù));②通過(guò)請(qǐng)求對(duì)象讀取用戶程序發(fā)送過(guò)來(lái)的隱式數(shù)據(jù)(請(qǐng)求報(bào)頭);③處理數(shù)據(jù)并生成響應(yīng)內(nèi)容或設(shè)置響應(yīng)報(bào)頭。1.3Tomcat服務(wù)器1.3.2Tomcat簡(jiǎn)介Tomcat是由Apache軟件基金會(huì)下屬的Jakarta項(xiàng)目開(kāi)發(fā)的一個(gè)重要子項(xiàng)目,是按照Sun公司(已被Oracle收購(gòu))提供的技術(shù)規(guī)范,實(shí)現(xiàn)了對(duì)Servlet和JavaServerPage(JSP)的支持,是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用服務(wù)器。1.3.3Tomcat的安裝配置1.3.4測(cè)試Tomcat1.3.5在Eclipse中配置Tomcat1.3.6在IDEA中配置TomcatTomcat的安裝、配置、測(cè)試詳見(jiàn)教材1.3.3、1.3.4、1.3.5、1.3.61.3Tomcat服務(wù)器1.4創(chuàng)建Web應(yīng)用示例1.4.1在Eclipse中創(chuàng)建Web應(yīng)用1.啟動(dòng)Eclipse,菜單欄中選擇File→New→DynamicWebProject。2.打開(kāi)NewDynamicWebProject窗口,在Projectname文本框中輸入項(xiàng)目的名稱“firstProject”,其他采用默認(rèn),并依次單擊Next,打開(kāi)如下圖所示界面,在此界面中,Contextroot用于指定Web項(xiàng)目的根目錄,此處我們?cè)O(shè)置為chap1,Contentdirectory用于指定存放Web資源的目錄,我們采用默認(rèn)的設(shè)置,單擊Finish按鈕。1.4創(chuàng)建Web應(yīng)用示例1.4.2在IDEA中創(chuàng)建Web應(yīng)用1.打開(kāi)IDEA,點(diǎn)擊菜單File→New→Project,打開(kāi)“NewProject”窗口,在窗口左側(cè)選擇“Java”,右側(cè)選擇項(xiàng)目SDK版本,再依次單擊Next按鈕。如下圖所示。1.4創(chuàng)建Web應(yīng)用示例1.4.2在IDEA中創(chuàng)建Web應(yīng)用2.在打開(kāi)的窗口中,輸入項(xiàng)目名稱“secondProject”,并設(shè)置好項(xiàng)目存放路徑,單擊Finish按鈕。如下圖所示。3.項(xiàng)目建立后,在打開(kāi)的主界面中,選中左側(cè)的項(xiàng)目名稱“secondProject”,單擊右鍵,在打開(kāi)的菜單中選擇“AddFrameworkSupport…”。1.4創(chuàng)建Web應(yīng)用示例1.4.2在IDEA中創(chuàng)建Web應(yīng)用4.在之后的界面中選中“WebAppliction(4.0)”,并點(diǎn)擊OK按鈕。確定后在項(xiàng)目中會(huì)生成Web文件夾。5.選擇菜單File→ProjectStructure,打開(kāi)ProjectStructure窗口,在該窗口中的左側(cè)選擇Modules,右側(cè)選擇Dependencies選項(xiàng)卡。6.單擊右側(cè)的“+”號(hào),并選擇“2Libraries”,如下圖所示。1.4創(chuàng)建Web應(yīng)用示例1.4.2在IDEA中創(chuàng)建Web應(yīng)用7.打開(kāi)ChooseLibraires窗口,在此窗口中選擇ApplicationServerLibraries下的配置好的Tomcat版本,點(diǎn)擊AddSelected按鈕,再次返回到如下圖所示的窗口。將此窗口中將添加的Tomcat選項(xiàng)打勾,依次單擊Apply按鈕及OK按鈕。至此,一個(gè)完整的Web項(xiàng)目已經(jīng)創(chuàng)建完成。本章首先介紹了Web應(yīng)用程序基本概念、工作原理,其次介紹了Tomcat服務(wù)器,包括安裝、配置及測(cè)試,最后詳細(xì)描述了在Eclipse及IDEA中創(chuàng)建Web應(yīng)用的過(guò)程。

1.5本章小結(jié)第2章JSP技術(shù)掌握J(rèn)SP的基本語(yǔ)法掌握J(rèn)SP注釋與聲明使用的方法掌握J(rèn)SP與HTML混合使用的方法掌握J(rèn)SP幾種編譯指令的運(yùn)用掌握J(rèn)SP幾種動(dòng)作標(biāo)簽的運(yùn)用掌握J(rèn)SP的隱含對(duì)象學(xué)習(xí)目標(biāo)2.1.1什么是JSPJSP技術(shù)是由SUN公司(現(xiàn)被Oracle收購(gòu))提出,并于1999年推出的一款建設(shè)動(dòng)態(tài)網(wǎng)頁(yè)的方法,是建立在Servlet規(guī)范上的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),全稱為JavaServerPage。JSP的網(wǎng)頁(yè)實(shí)際上是在HTML文件中加入Java代碼及JSP的特殊標(biāo)記構(gòu)成的,其中,HTML代碼用于實(shí)現(xiàn)網(wǎng)頁(yè)中靜態(tài)內(nèi)容的顯示,Java代碼用于實(shí)現(xiàn)網(wǎng)頁(yè)中動(dòng)態(tài)內(nèi)容的顯示。JSP文件的擴(kuò)展名為“.jsp”。2.1JSP簡(jiǎn)介2.1.2JSP的特點(diǎn)(1)當(dāng)用戶通過(guò)瀏覽器訪問(wèn)JSP頁(yè)面時(shí),服務(wù)器將對(duì)JSP頁(yè)面代碼進(jìn)行一次且僅進(jìn)行一次編譯。當(dāng)JSP頁(yè)面首次被加載時(shí)需要編譯,編譯好的代碼將會(huì)保存,在用戶下一次訪問(wèn)時(shí)會(huì)直接執(zhí)行編譯好的代碼,這樣不僅響應(yīng)的速度會(huì)更快,而且節(jié)約了服務(wù)器的CPU資源。(2)由于JSP基于Java語(yǔ)言,而Java本身就有跨平臺(tái)的特性,因此JSP也是跨平臺(tái)的。當(dāng)更換服務(wù)平臺(tái)時(shí),JSP幾乎可以不做任何變動(dòng)或少量修改就可以完成服務(wù)平臺(tái)的遷移;當(dāng)需要更換Web服務(wù)器時(shí),JSP也可以做到幾乎不做任何變動(dòng)就可以在新的Web服務(wù)器中編譯、運(yùn)行。(3)在項(xiàng)目開(kāi)發(fā)過(guò)程中可以進(jìn)行分工,即界面設(shè)計(jì)與業(yè)務(wù)邏輯分離,網(wǎng)頁(yè)設(shè)計(jì)師專注于頁(yè)面的美化,JSP程序開(kāi)發(fā)人員則負(fù)責(zé)動(dòng)態(tài)部分。2.1JSP簡(jiǎn)介2.1.3JSP工作原理JSP的工作模式是請(qǐng)求/響應(yīng)模式??蛻舳耸紫认騑eb服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求訪問(wèn)JSP文件,JSP文件收到請(qǐng)求后,會(huì)先轉(zhuǎn)換成一個(gè)Java源文件,并將其編譯成相應(yīng)的字節(jié)碼文件,即*.class。再將此class文件加載到內(nèi)存中執(zhí)行,最后由服務(wù)器將處理結(jié)果返回給客戶端。如果在此過(guò)程中,JSP第一次編譯后,再重復(fù)調(diào)用此JSP頁(yè)面時(shí),如果發(fā)現(xiàn)此JSP頁(yè)面沒(méi)有被改動(dòng),就會(huì)直接使用編譯后的class文件,若頁(yè)面被修改過(guò),則需要重新加載編譯。JSP工作流程如圖所示。2.1JSP簡(jiǎn)介2.2.1一個(gè)簡(jiǎn)單的JSP程序例2-1創(chuàng)建一個(gè)JSP程序,用于顯示系統(tǒng)當(dāng)前時(shí)間。

在第1章中,我們?cè)贗DEA中創(chuàng)建了一個(gè)Web工程secondProject,在該工程的web目錄下自動(dòng)創(chuàng)建了一個(gè)名為index.jsp的JSP文件,如下圖所示。2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.1一個(gè)簡(jiǎn)單的JSP程序輸入如下代碼,運(yùn)行結(jié)果如下圖所示。2.2JSP標(biāo)準(zhǔn)語(yǔ)法HTML代碼中嵌入了Java代碼,Java代碼包含在“<%”和“%>”之間2.2.2JSP注釋1.HTML中的注釋。由于JSP文件中可以包含HTML代碼,所以HTML中的注釋同樣可以在JSP文件中使用。HTML注釋語(yǔ)法如下。<!--注釋內(nèi)容-->2.JSP的注釋。JSP的注釋的語(yǔ)法格式如下。<%--注釋內(nèi)容--%>2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.2JSP注釋3.JSP腳本注釋在JSP腳本程序中包含了Java代碼,所以在腳本程序中的注釋與在Java中的注釋是相同的,即有三種注釋方法,分別為單行注釋、多行注釋、文檔注釋。(1)單行注釋的格式://注釋內(nèi)容(2)多行注釋的格式:/*

注釋內(nèi)容1

注釋內(nèi)容2 …*/2.2JSP標(biāo)準(zhǔn)語(yǔ)法(3)文檔注釋的格式:/**

提示信息1

提示信息2 …*/2.2.3JSP腳本JSP腳本元素是指嵌套在“<%”和“%>”中的一條或多條Java程序代碼,這些Java代碼需要嚴(yán)格遵守Java語(yǔ)法規(guī)范,通過(guò)JSP腳本元素可以將Java代碼嵌入HTML頁(yè)面。JSP腳本元素主要分為三種類型,分別為代碼腳本、表達(dá)式腳本、聲明腳本。1.代碼腳本代碼腳本就是一段Java代碼,它以“<%”開(kāi)始,以“%>”結(jié)束,語(yǔ)法格式:<%Java代碼%>2.表達(dá)式腳本表達(dá)式腳本主要用于將程序數(shù)據(jù)輸出到客戶端,它以“<%=”開(kāi)始,以“%>”結(jié)束,語(yǔ)法格式:<%=表達(dá)式%>注意:JSP表達(dá)式中的變量或表達(dá)式之后不能有分號(hào),“<%”和“=”之間不能有空格。例如:<%=5+5%><%=newDate()%><%=”hello”%>2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.3JSP腳本3.聲明腳本聲明腳本主要用于聲明變量、方法和類,它是以“<%!”開(kāi)始,以“%>”結(jié)束,語(yǔ)法格式:<%!定義變量/定義方法/定義類%>(1)聲明變量。在“<%!”和“%>”之間聲明的變量,可以是Java允許的任何數(shù)據(jù)類型,聲明的變量在整個(gè)JSP頁(yè)面內(nèi)都有效,例如:<%!inti=0;%><%!intx,y,z;%>(2)聲明方法。在“<%!”和“%>”之間聲明的方法,在整個(gè)JSP頁(yè)面有效,但是在方法內(nèi)定義的變量只在該方法內(nèi)有效。2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.3JSP腳本例2-4:聲明方法,統(tǒng)計(jì)訪問(wèn)該網(wǎng)頁(yè)的人數(shù)。在secondProject工程的web目錄下創(chuàng)建一個(gè)名為count.jsp的JSP文件2.2JSP標(biāo)準(zhǔn)語(yǔ)法重啟Tomcat服務(wù)器,在瀏覽器中輸入地址http://localhost:8080/count.jsp,運(yùn)行結(jié)果如圖:2.2.3JSP腳本3.聲明腳本(3)聲明類??梢栽凇?lt;%!”和“%>”之間聲明一個(gè)類,該類在JSP頁(yè)面內(nèi)有效,即在JSP頁(yè)面的Java程序段部分均可以使用該類創(chuàng)建對(duì)象。2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.4JSP與HTML的混合使用例2-5求n!(1)在secondProject項(xiàng)目的Web文件夾中創(chuàng)建名為calculate.jsp的JSP文件,用于展示計(jì)算結(jié)果,代碼如下2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.4JSP與HTML的混合使用例2-5求n!(2)在web文件夾中創(chuàng)建名為jiecheng.html的HTML文件,代碼如下2.2JSP標(biāo)準(zhǔn)語(yǔ)法2.2.4JSP與HTML的混合使用例2-5求n!(3)重啟Tomcat服務(wù)器,在瀏覽器的地址欄中輸入http://localhost:8080/jiecheng.html,打開(kāi)的界面如下圖所示。2.2JSP標(biāo)準(zhǔn)語(yǔ)法在此例中,n的值是在jiecheng.html文件中輸入,計(jì)算的過(guò)程、結(jié)果及結(jié)果的顯示在calculate.jsp文件中完成。JSP編譯指令用來(lái)設(shè)置整個(gè)JSP頁(yè)面相關(guān)的屬性,如網(wǎng)頁(yè)的編碼方式和腳本語(yǔ)言,JSP常見(jiàn)的三個(gè)編譯指令為page、include、taglib。2.3.1include指令在JSP頁(yè)面中,如果要把其他資源文件包含到當(dāng)前JSP頁(yè)面中,那么可以通過(guò)include指令來(lái)實(shí)現(xiàn),被包含的資源文件可以是JSP文件、HTML文件或文本文件。這些包含的文件就好像是該JSP文件的一部分,會(huì)被同時(shí)編譯執(zhí)行。其語(yǔ)法格式如下。<%@includefile=“被包含的文件地址”%>其中file屬性用于指定包含到JSP頁(yè)面的文件資源,一般該文件資源的路徑為相對(duì)路徑。2.3JSP編譯指令2.3.1include指令例2-6:了解include指令的用法。(詳見(jiàn)教材例2-6)2.3.2page指令在JSP頁(yè)面中,當(dāng)需要對(duì)頁(yè)面的某些特性進(jìn)行描述時(shí),可以通過(guò)page指令來(lái)實(shí)現(xiàn)。其語(yǔ)法格式如下。<%@page屬性名="屬性值"%>page指令的常用屬性見(jiàn)教材表2-12.3JSP編譯指令2.3.3taglib指令JSP頁(yè)面中不僅可以使用標(biāo)準(zhǔn)標(biāo)簽庫(kù),還允許用戶自定義新的標(biāo)簽在頁(yè)面中執(zhí)行,語(yǔ)法格式如下。<%@taglib

uri="uri"prefix="prefixOfTag"%>其中,屬性u(píng)ri用來(lái)表示自定義標(biāo)簽庫(kù)存放的地址,屬性prefix指定標(biāo)簽的前綴,此處要注意不要用jsp、jspx、java、javax、servlet、sun和sunw作為前綴。2.3JSP編譯指令利用JSP動(dòng)作可以實(shí)現(xiàn)動(dòng)態(tài)地插入文件、把用戶重定向到另外的頁(yè)面、為Java插件生成HTML代碼等。2.4.1forward動(dòng)作<jsp:forward>動(dòng)作用于把請(qǐng)求轉(zhuǎn)發(fā)給另一個(gè)JSP目標(biāo)頁(yè)面,目標(biāo)頁(yè)面可以通過(guò)方法獲得參數(shù)進(jìn)行下一步處理。語(yǔ)法格式如下。<jsp:forwardpage="相對(duì)URL地址"/>或<jsp:forwardpage="相對(duì)URL地址"/>

<jsp:paramname=”參數(shù)”value=“參數(shù)值”/></jsp:forward>屬性page是一個(gè)相對(duì)URL地址,<jsp:param>用于向轉(zhuǎn)向的目標(biāo)頁(yè)面?zhèn)鬟f參數(shù)。2.4JSP動(dòng)作例2-7在工程secondProject的web目錄下創(chuàng)建一個(gè)JSP文件:forward.jsp,在該文件中使用<jsp:forward>動(dòng)作將頁(yè)面重定向到例2-6中的circle.jsp頁(yè)面。文件forward.jsp內(nèi)容如下。2.4JSP動(dòng)作<%@pagecontentType="text/html;charset=UTF-8"language="java"%>

<html>

<head>

<title>forward測(cè)試</title>

</head>

<body>

<jsp:forwardpage="circle.jsp"/></body>

</html>

啟動(dòng)Tomcat服務(wù)器,在瀏覽器地址欄中輸入地址http://localhost:8080/forward.jsp,運(yùn)行結(jié)果如下圖所示。

2.4.2include動(dòng)作<jsp:include>動(dòng)作語(yǔ)法格式如下。<jsp:includepage="相對(duì)URL地址"flush="true/false"/>或<jsp:includepage="相對(duì)URL地址"flush="true/false"/>

<jsp:paramname=”參數(shù)”value=“參數(shù)值”/></jsp:include>屬性page用于指定包含文件的相對(duì)路徑,屬性flush是可選項(xiàng),用于設(shè)置在包含文件前是否刷新緩存區(qū),默認(rèn)值為false。<jsp:param>用于向被包含的頁(yè)面中傳遞參數(shù)。include動(dòng)作的應(yīng)用詳見(jiàn)教材例2-8。2.4JSP動(dòng)作JSP隱含對(duì)象是指在JSP頁(yè)面系統(tǒng)中已經(jīng)默認(rèn)內(nèi)置的Java對(duì)象,這些對(duì)象不需要開(kāi)發(fā)人員聲明即可在腳本代碼和表達(dá)式中隨意使用。2.5.1輸出對(duì)象outout對(duì)象主要用來(lái)向客戶端瀏覽器輸出內(nèi)容,同時(shí)管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)。out對(duì)象的常用方法及說(shuō)明見(jiàn)下表所示。2.5JSP的隱含對(duì)象方法說(shuō)明voidprintln()向客戶端打印字符串。默認(rèn)會(huì)自動(dòng)刷新緩沖區(qū)voidflush()將緩沖區(qū)的內(nèi)容輸出到客戶端voidclear()清除輸出緩沖區(qū)的內(nèi)容,如果在flush之后調(diào)用會(huì)拋出異常voidclearBuffer()清除輸出緩沖區(qū)的內(nèi)容,在flush之后調(diào)用不會(huì)拋出異常intgetBufferSize()取得目前緩沖區(qū)的大?。↘B)intgetRemaining()取得目前使用后還剩下的緩沖區(qū)大小(KB)booleanisAutoFlush()緩沖區(qū)滿時(shí),是否自動(dòng)清空緩沖區(qū);false表示不會(huì)自動(dòng)清空并且產(chǎn)生異常voidclose()關(guān)閉輸出流,清除所有的內(nèi)容out對(duì)象的常用方法及說(shuō)明2.5.2請(qǐng)求對(duì)象request客戶每次向JSP服務(wù)器發(fā)送請(qǐng)求時(shí),JSP引擎都會(huì)創(chuàng)建一個(gè)request對(duì)象,request對(duì)象封裝了客戶請(qǐng)求參數(shù)以及客戶端的信息,包括HTTP頭信息、傳遞的參數(shù)及參數(shù)值、系統(tǒng)信息等。request對(duì)象的常用方法及說(shuō)明見(jiàn)下表所示。2.5JSP的隱含對(duì)象request對(duì)象的常用方法及說(shuō)明方法說(shuō)明getParameter()獲取請(qǐng)求中指定的參數(shù)值,返回String類型getParameterValues()獲取客戶端提交頁(yè)面中一組控件的值,返回值一個(gè)String數(shù)組getParameterName()獲取參數(shù)名getHeader()獲取HTTP頭文件中的指定值getHeaders

()獲取表頭信息getRemoteAddr()獲取客戶主機(jī)的IP地址getRemoteHost()獲取客戶主機(jī)的名稱getRemotePort()獲取客戶主機(jī)端口getMethod()獲取客戶提交信息的方式getServerPort()獲取服務(wù)器端口getServerName()獲取服務(wù)器的名稱2.5.2請(qǐng)求對(duì)象request例2-9創(chuàng)建getInfo.jsp文件,用于獲取客戶主機(jī)及服務(wù)器信息,代碼如下。獲取客戶端及服務(wù)器信息的運(yùn)行結(jié)果如右圖所示。2.5JSP的隱含對(duì)象<%@pagecontentType="text/html;charset=UTF-8"language="java"%>

<html>

<head>

<title>Title</title>

</head>

<body>

<%

out.println("客戶主機(jī)IP:"+request.getRemoteAddr()+"<br>");

out.println("客戶主機(jī)名稱:"+request.getRemoteHost()+"<br>");

out.println("客戶主機(jī)端口:"+request.getRemotePort()+"<br>");

out.println("服務(wù)器IP:"+request.getServerName()+"<br>");

out.println("服務(wù)器端口:"+request.getServerPort()+"<br>");

%>

</body>

</html>

2.5.3響應(yīng)對(duì)象responseresponse對(duì)象是對(duì)request對(duì)象請(qǐng)求的響應(yīng),主要將JSP處理數(shù)據(jù)后的結(jié)果傳回客戶端。response對(duì)象的常用方法及說(shuō)明如下表所示。2.5JSP的隱含對(duì)象方法說(shuō)明sendRedirect(Stringuri)頁(yè)面重定向setStatus(intcode)設(shè)置頁(yè)面的響應(yīng)狀態(tài)代碼addCookie(Cookiecookie)添加Cookie信息addHeader(Stringname,Stringvalue)新增String類型的值到name標(biāo)頭setHeader(Stringname,Stringvalue)指定String類型的值到name標(biāo)頭addIntHeader(Stringname,intvalue)新增int類型的值到name標(biāo)頭setIntHeader(Stringname,intvalue)指定int類型的值到name標(biāo)頭response對(duì)象的常用方法及說(shuō)明2.5.4會(huì)話對(duì)象sessionHTTP是無(wú)狀態(tài)協(xié)議,這意味著每次客戶端請(qǐng)求網(wǎng)頁(yè)時(shí),服務(wù)器收到請(qǐng)求并返回響應(yīng)后,連接就結(jié)束了,服務(wù)器不會(huì)記錄下先前客戶端請(qǐng)求的任何信息。如果用戶的瀏覽器沒(méi)有關(guān)閉但是又

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論