JavaWeb應用開發(fā)基礎高職PPT完整全套教學課件_第1頁
JavaWeb應用開發(fā)基礎高職PPT完整全套教學課件_第2頁
JavaWeb應用開發(fā)基礎高職PPT完整全套教學課件_第3頁
JavaWeb應用開發(fā)基礎高職PPT完整全套教學課件_第4頁
JavaWeb應用開發(fā)基礎高職PPT完整全套教學課件_第5頁
已閱讀5頁,還剩501頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

JavaWeb應用開發(fā)基礎全套PPT課件Contents目錄模塊1JavaWeb應用開發(fā)概述模塊2JSP語法模塊3JSP內置對象模塊4JavaBean及其應用模塊5Web前端腳本技術模塊6Servlet技術模塊7JSP數據庫操作模塊8課程設計實例模塊1JavaWeb應用開發(fā)概述01知識目標了解Web應用、Web應用開發(fā)、動態(tài)網頁及B/S結構等Web基礎知識。了解JSP的執(zhí)行流程和技術優(yōu)點。掌握Web應用開發(fā)的流程和簡單JSP程序的編寫與運行方法。技能目標能夠在MyEclipseIDE中配置JRE。能夠在MyEclipseIDE中配置并運行JSP引擎Tomcat。能夠在MyEclipseIDE中創(chuàng)建并部署JavaWeb項目。能夠在MyEclipseIDE中編寫簡單JSP程序并運行JSP程序。1.1Web基礎知識Web是存儲在Internet上數量巨大的文檔的集合,它是一種基于超文本和HTTP的、全球性的、動態(tài)交互的、跨平臺的分布式圖形信息系統(tǒng)。1.1Web基礎知識1.1.1Web應用及其開發(fā)Web應用(Webapplication)可以是一個構建并運行在Web上的完整網站,也可以僅僅是某個運行在Web上的應用程序。它是由一些Web網頁和用來完成某些特定任務的相關資源整合在一起而形成的一個數據集合,通過服務器、客戶端及網絡等實現自身的功能。1.1Web基礎知識1.1.1Web應用及其開發(fā)Web應用可采用不同的技術來構建,每種技術皆有其優(yōu)劣勢。當今的Web應用在其開發(fā)線路上主要包含兩部分內容:Web前端開發(fā)和Web后端開發(fā)。Web前端開發(fā)主要進行網站開發(fā)、優(yōu)化和完善,包括Web頁面的結構、Web的外觀視覺表現及Web層面的交互實現等工作。Web后端開發(fā)主要進行與數據庫交互作用所對應的業(yè)務邏輯設計,需要考慮功能的實現、數據的存取、平臺的穩(wěn)定性與性能等。1.1Web基礎知識1.1.2動態(tài)網頁在Internet發(fā)展初期,Web應用只是一個靜態(tài)網站。所謂靜態(tài),就是指網站的所有網頁內容都基于靜態(tài)的HTML頁面;網站內容的修改只能通過修改靜態(tài)的HTML頁面來實現;Web網站所能實現的任務僅僅是靜態(tài)的信息顯示,而不能與用戶產生互動。1.1Web基礎知識1.1.2動態(tài)網頁動態(tài)網頁的主要特點如下:(1)交互性。(2)自動更新。(3)隨機性。1.1Web基礎知識1.1.3B/S結構動態(tài)網站等Web應用普遍采用分布式計算模式構建,使用該模式進行Web應用開發(fā)時,往往需要編寫大量的程序。這些程序被部署在不同的計算機上,在Web應用中承擔著不同的職責。圖1-1B/S/D三層結構1.1Web基礎知識1.1.3B/S結構第1層為瀏覽器。第2層為Web服務器(安裝了提供Web服務的應用程序及管理應用程序的計算機)。第3層為數據庫服務器。1.1Web基礎知識1.1.4JSP簡介

JSP技術是JavaEE(Java企業(yè)版)中的一個關鍵技術,是用Java標準開發(fā)服務器端Web應用的主要技術。圖1-2JSP的執(zhí)行流程1.1Web基礎知識1.1.4JSP簡介JSP技術特征如下:(1)JSP分離了服務器端程序中的靜態(tài)內容和動態(tài)內容。(4)JSP沿用了Java強大的API功能,只要服務器支持JSP,就可以運行用JSP開發(fā)的Web應用,體現了JSP的跨平臺優(yōu)點。(2)JSP提供組件(如JavaBean)、標準標簽、自定義標簽等可一次生成重復利用的實現方式,大大提高了程序開發(fā)效率。(3)JSP頁面在被第一次請求時進行編譯,如果在后續(xù)的請求中該頁面沒有改動,服務器可直接調用相應的已被編譯好的代碼,大大提高了訪問速度。1.2創(chuàng)建第一個Web項目1.2.1JSP運行環(huán)境搭建圖1-3Java官方網站1.JDK首先要安裝JDK。JDK可到Java官方網進行下載,如圖1-3所示,然后運行安裝即可。1.2創(chuàng)建第一個Web項目1.2.1JSP運行環(huán)境搭建1.JDK圖1-4ApacheTomcat官方網站2.Web服務器本書選擇Tomcat作為Web服務器中的JSP引擎。Tomcat可到ApacheTomcat官方網站進行下載,如圖1-4所示,然后解壓縮至某固定文件夾即可。1.2創(chuàng)建第一個Web項目1.2.1JSP運行環(huán)境搭建1.JDK4.Web數據庫JSP開發(fā)的Web應用程序通過JDBC驅動可訪問多種數據庫管理系統(tǒng)。在實驗室學習環(huán)境下,數據存取規(guī)模不大,故本書選用MySQL數據庫管理系統(tǒng)提供Web數據庫服務。MySQL數據庫管理系統(tǒng)可到MySQL官方網站下載,如圖1-5所示。3.Web瀏覽器瀏覽器是用戶訪問Web應用的工具,JSP開發(fā)的Web應用程序對瀏覽器沒有特殊要求。1.2創(chuàng)建第一個Web項目1.2.1JSP運行環(huán)境搭建1.JDK圖1-5MySQL官方網站1.2創(chuàng)建第一個Web項目1.2.2JSP集成開發(fā)環(huán)境MyEclipse圖1-6MyEclipse官方網站MyEclipseIDE是一個成熟的用于JavaWeb應用開發(fā)的企業(yè)級平臺。MyEclipseIDE可到MyEclipse官方下載,如圖1-6所示。1.2創(chuàng)建第一個Web項目1.2.2JSP集成開發(fā)環(huán)境MyEclipse圖1-7MyEclipse8.5主窗口在Windows操作系統(tǒng)中,執(zhí)行“開始”→“所有程序”→“MyEclipse8.5”命令,啟動MyEclipse8.5,會出現圖1-7所示的MyEclipse8.5主窗口。1.2創(chuàng)建第一個Web項目1.2.2JSP集成開發(fā)環(huán)境MyEclipse圖1-8選擇MyEclipse工作區(qū)每次啟動MyEclipse時,都會提示選擇工作區(qū),選定好且以后不打算更改,可選中左下方的復選框,再單擊“OK”按鈕即可,如圖1-8所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目在所有需要下載、安裝的軟件準備好之后,就可以在MyEclipse8.5上創(chuàng)建Web項目,編寫JSP頁面了。但是,在Web項目創(chuàng)建前后,還需要按以下步驟做一些整合工作,以便所創(chuàng)建的Web項目能成功運行。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-9已安裝的JRE1.配置JRE運行Java程序時需要JRE的支持??筛鶕枰謩优渲靡严螺d的較高版本的JRE。啟動MyEclipse8.5,執(zhí)行“Window”→“Preferences”命令,在打開的“Preferences”窗口中展開左側目錄樹中的“Java”項,從中選擇“InstalledJREs”項,如圖1-9所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-10JRE類型選擇如果需要更換為更高版本的JRE,可單擊“Add”按鈕,在打開的“AddJRE”窗口中選擇“StandardVM”,單擊“Next”按鈕,如圖1-10所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-11JRE定義在出現的“JREDefinition”對話框中單擊“Directory”按鈕,如圖1-11所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-12選擇已安裝的較高版本的JDK在打開的“瀏覽文件夾”對話框中選擇已安裝的較高版本的JDK,單擊“確定”按鈕,如圖1-12所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目2.配置Tomcat在MyEclipse8.5主窗口中執(zhí)行“Window”→“Preferences”命令,在打開的“Preferences”窗口中展開左側目錄樹中的“MyEclipse”項,展開“Servers”項,再展開“Tomcat”項,然后選擇“Tomcat6.x”,在右側界面上部“Tomcatserver”選項組中選中“Enable”單選按鈕,在“Tomcathomedirectory”文本框中輸入Tomcat6.0所在的目錄位置,單擊“Apply”按鈕,如圖1-13所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-13配置Tomcat1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-14確認JDK展開左側目錄樹中的“Tomcat6.x”項,選擇“JDK”項,如果發(fā)現默認JDK版本與前述配置的JRE版本不一致,可從“TomcatJDKname”下拉列表框中選擇,如圖1-14所示;如果所需JDK版本不存在,則仍需單擊“Add”按鈕重新配置。以上操作完成后,單擊“OK”按鈕結束Tomcat配置。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目3.啟動Tomcat啟動Tomcat的方式有兩種:一種是在MyEclipse8.5主界面單擊“服務器”按鈕,在彈出的下拉菜單中選擇“Tomcat6.x”→“Start”命令,啟動Tomcat;另一種是在主窗體的“Servers”選項區(qū)中,選擇“Tomcat6.x”,右擊,在彈出的快捷菜單中選擇“RunServer”命令,如圖1-15和圖1-16所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-15啟動Tomcat的方式之一1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-16啟動Tomcat的方式之二1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-17Tomcat的啟動信息上述命令執(zhí)行后,會在控制臺輸出Tomcat的啟動信息,如圖1-17所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-18驗證Tomcat啟用打開瀏覽器,在地址欄輸入http://localhost:8080,出現如圖1-18所示的頁面,表示Tomcat已正式啟用。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目4.創(chuàng)建Web項目在MyEclipse8.5主窗口中,執(zhí)行“File”→“New”→“Project...”命令,打開“NewProject”窗口,創(chuàng)建JavaWeb項目向導,依次展開“MyEclipse”→“JavaEnterpriseProjects”項,從中選擇“WebProject”,如圖1-19所示,單擊“Next”按鈕,打開如圖1-20所示的“NewWebProject”對話框,在“ProjectName”文本框中輸入項目名稱myPro,其余選項保持默認設置,單擊“Finish”窗口按鈕,完成Web項目的創(chuàng)建。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-20完成Web項目的創(chuàng)建圖1-19創(chuàng)建JavaWeb項目1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目單擊“Finish”按鈕,完成Web項目創(chuàng)建后可能會彈出如圖1-21所示的對話框,提示所創(chuàng)建項目的編譯器遵從級別為5.0(圖1-20中的“J2EESpecificationLevel”最高為JavaEE5.0),而當前工作區(qū)默認為6.0(因為配置的JDK的版本為1.6)。此時可使用自定義設置,直接單擊“Yes”按鈕,無須修改編譯器遵從級別。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-21修改編譯器遵從級別提示1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-22Web項目的目錄結構5.設計Web項目的目錄結構Web項目要求按特定的目錄結構組織文件,當在MyEclipse中創(chuàng)建好一個新的Web項目后,便可以在MyEclipse的“PackageExploxer”中看到該Web項目的目錄結構,如圖1-22所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目下面來了解一下Web項目目錄和文件的用途。(1)src目錄:用來存放Java源文件。(2)WebRoot目錄:Web項目的頂層目錄,由以下部分組成。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目①META-INF目錄:系統(tǒng)自動生成,存放系統(tǒng)描述信息。②WEB-INF目錄:無法被用戶訪問,由以下部分組成。lib目錄Web.xml③JSP文件:Web項目中所創(chuàng)建的JSP文件默認存放在此目錄下。④靜態(tài)文件:包括所有的HTML文件、CSS文件、圖像文件等,可按功能以文件夾形式分類存放。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-23利用JSP高級模板創(chuàng)建JSP6.編寫Web項目的代碼首先,創(chuàng)建一個JSP文件:右擊myPro項目下的WebRoot目錄,在彈出的快捷菜單中選擇“New”→“JSP(AdvancedTemplates)”命令,利用JSP高級模板創(chuàng)建JSP,如圖1-23所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-24完成JSP頁面創(chuàng)建接著,在彈出的對話框中輸入文件路徑及文件名稱,如圖1-24所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-25JSP頁面的編輯區(qū)這里的文件名為MyFirstJsp.jsp,直接放在/myPro/WebRoot目錄下。最后,單擊“Finish”按鈕,完成JSP頁面的創(chuàng)建。MyFirstJsp.jsp在MyEclipse主窗口的編輯區(qū)同時被打開。在Design(設計)模式下,編輯區(qū)的上部為設計窗格,下部為代碼窗格,如圖1-25所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-26添加與刪除項目部署7.部署Web項目右擊myPro,在彈出的快捷菜單中選擇“MyEclipse”→“AddandRemoveProjectDeployments”命令,如圖1-26所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目在彈出的對話框中選擇需要部署的項目myPro,然后單擊“Add”按鈕,如圖1-27所示。在彈出的對話框中選擇Server為“Tomcat6.x”,然后單擊“Finish”按鈕,如圖1-28所示。此時會返回到上一個對話框提示部署成功的信息,如圖1-29所示,單擊“OK”按鈕關閉該對話框。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-27部署Web項目1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-28選擇服務器圖1-29Web項目部署成功1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目8.運行Web項目打開IE瀏覽器,輸入URLhttp://localhost:8080/myPro/MyFirstJsp.jsp,并按回車鍵觀看運行結果。在瀏覽器窗體中顯示“ThisismyJSPpage.”,表示Web項目myPro中的MyFirstJsp.jsp頁面已經正確運行,如圖1-30所示。1.2創(chuàng)建第一個Web項目1.2.3在MyEclipse8.5下用JSP開發(fā)Web項目圖1-30JSP頁面運行結果1.3小結Web是存儲在Internet上數量巨大的文檔的集合。Web應用是由一些Web網頁和用來完成某些特定任務的相關資源捏合在一起而形成的一個數據集合,通過服務器、客戶端及網絡等提供服務功能。Web應用開發(fā)包含Web前端開發(fā)和Web后端開發(fā)。采用動態(tài)網頁技術開發(fā)的網站可以實現更強的交互性和智能化功能。B/S結構是C/S結構的一種改進,使得Web應用的維護和升級更為簡單,用戶訪問范圍更廣,信息資源共享程度更高。1.4習題1.用百度搜索Web、Web應用、Web應用開發(fā)、動態(tài)網頁、B/S、JSP等關鍵詞,收集相關信息進行學習和分析。2.回顧并總結在MyEclipseIDE下用JSP開發(fā)Web項目的軟件安裝及配置全過程,并在計算機上進行實踐。1.5上機實踐1.在MyEclipse8.5下編寫一個JSP頁面,輸出“這是我的第一個JSP頁面”。2.index.jsp為Web項目自動生成的網站主頁或者稱為歡迎頁面。如何在瀏覽器中訪問該頁面?如何在Web項目中更改原先設置的歡迎頁面?觀謝謝看模塊2JSP語法0202知識目標掌握小腳本、表達式和聲明的基本用法。掌握page指令和include指令的基本用法。掌握添加JSP注釋的方法。技能目標能夠在MyEclipseIDE中編寫小腳本、表達式和聲明。能夠在MyEclipseIDE中編寫page指令和include指令。能夠在MyEclipseIDE中編寫并閱讀JSP注釋。2.1回顧和思考在模塊1中,我們學習了在MyEclipse8.5IDE下用JSP開發(fā)Web項目的詳細流程。本模塊我們將通過分析JSP頁面代碼的構成,學習并掌握基本的JSP語法。2.1回顧和思考【例2-1】嘗試編寫并運行一個JSP頁面輸出系統(tǒng)的當前時間。程序實現代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%@pageimport="java.text.*,java.util.*"%><html><body><%2.1回顧和思考SimpleDateFormatformater=newSimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");StringstrCurrentTime=formater.format(newDate());%><center>你好,交通信息工程學院!現在是:<%=strCurrentTime%></center></body></html>2.1回顧和思考圖2-1【例2-1】的運行結果盡管我們對這些代碼還不是非常熟悉,但是可以看出JSP頁面是由HTML標簽描述的靜態(tài)文本和JSP標記描述的動態(tài)內容穿插在一起而構成的。接下來就要對各類代碼逐個分析?!纠?-1】中的文件名為example2_1.jsp,運行結果如圖2-1所示。2.2JSP指令元素通過在模塊1中用JSP高級模板創(chuàng)建JSP文件的實例和【例2-1】,我們可以發(fā)現第一行的代碼總是包含在<%@...%>中,這就是JSP的一條指令。JSP指令為轉譯階段提供全局信息。JSP指令不直接產生任何可見輸出,而只是告訴JSP引擎如何處理所涉及的JSP文件。JSP指令在整個JSP文件范圍內都有效。JSP指令元素主要有page指令和include指令。2.2JSP指令元素2.2.1page指令page指令定義JSP文件中的全局屬性,設定JSP頁面的相關屬性和相關功能。其語法格式如下。<%@page屬性1="值1"屬性2="值2"...%>page指令中常見的屬性有l(wèi)anguage(定義所使用的腳本語言)、import(導入JavaAPI,可導入多個,中間用逗號隔開)、contentType(JSP頁面的文字類型和編碼方式)、pageEncoding(JSP頁面使用的字符編碼。如果沒有設置該屬性,就采用contentType屬性指定的字符集)、isErrorPage(指定當前頁面是否為另一個JSP的錯誤處理頁面,默認為false)、errorPage(當前頁面為錯誤處理頁面)。2.2JSP指令元素2.2.1page指令【例2-1】的page指令設置頁面使用的腳本語言為Java,頁面的文字類型和編碼方式為“text/html(html文本);字符設置為GBK”,導入java.util和java.text兩個包。2.2JSP指令元素2.2.1page指令注意:在一個JSP頁面中,page指令可以出現多次,除import外,一般情況每一種屬性只出現一次,后面重復出現的屬性設置將覆蓋先前的屬性設置。習慣上把page指令作為JSP頁面的第一行,但這不是硬性規(guī)定。2.2JSP指令元素2.2.2include指令include指令是將指定位置的文件內容內嵌到當前頁面。其語法格式如下。<%@includefile="文件名"%>2.2JSP指令元素2.2.2include指令include指令只有一個屬性file。include指令包含的文件的路徑名通常是指相對路徑名,不需要端口、協(xié)議和域名。如果被包含文件與當前JSP文件處于同級目錄,則“文件名”前不用指明路徑;如果被包含文件處于當前JSP文件同級目錄的下級目錄,則需指明完整的下級目錄,所有下級目錄一直到被包含文件之間用“/”隔開;如果被包含文件與當前JSP文件分處于Web項目根目錄下的不同級目錄,則需指明被包含文件的絕對路徑,以“//”開頭,再加上其完整的目錄路徑。2.2JSP指令元素2.2.2include指令【例2-2】修改【例2-1】,在其頁面頂部增加顯示一張圖片。操作步驟如下。(1)編寫一個名為head.html的文件,該文件包含一個名為head.jpg的圖形文件。head.html代碼如下。<html><body><tablewidth="1300"border="0"align="center"><tr><tdwidth="1300"align="center"><imgsrc="image/head.jpg"/></td></tr></table></body></html>2.2JSP指令元素2.2.2include指令(2)編寫一個名為example2_2.jsp的文件,文件中使用include指令引用了head.html文件。example2_2.jsp代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%@pageimport="java.text.*,java.util.*"%><html><body><%@includefile="head.html"%><br>2.2JSP指令元素2.2.2include指令<%SimpleDateFormatformater=newSimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");StringstrCurrentTime=formater.format(newDate());%><center>你好,交通信息工程學院!現在是:<%=strCurrentTime%></center></body></html>2.2JSP指令元素2.2.2include指令【例2-2】的運行結果如圖2-2所示。圖2-2【例2-2】的運行結果2.3JSP腳本元素2.3.1小腳本小腳本是在JSP頁面中嵌入的Java代碼片段。語法格式:<%Java代碼%>在【例2-1】中,小腳本用兩條語句來生成格式化時間字符串。SimpleDateFormatformater=newSimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");StringstrCurrentTime=formater.format(newDate());2.3JSP腳本元素2.3.2表達式當JSP引擎遇到表達式時,先計算表達式或變量的值,然后把計算結果以字符串形式返回并插入頁面的相應位置。其語法格式如下。<%=表達式%>在【例2-1】中,通過表達式變量strCurrentTime在頁面相應位置輸出當前時間。2.3JSP腳本元素2.3.3聲明聲明用來定義變量和方法,作用范圍為整個JSP頁面。其語法格式如下。<%!聲明%>問題:在【例2-1】中,如果需要在同一個JSP頁面中的多個位置輸出不同格式的當前時間,該怎么辦?在需要輸出當前時間的位置寫上小腳本代碼。2.3JSP腳本元素2.3.3聲明在構造方法SimpleDateFormat("時間格式")的參數中設置所需的時間格式,在需要輸出當前時間的位置插入表達式<%=strCurrentTime%>。雖然問題被解決了,但是上述小腳本代碼在整個頁面多次重復出現,顯得異常笨拙。這時,把小腳本改成聲明即可解決這個問題。SimpleDateFormatformater=newSimpleDateFormat("時間格式");StringstrCurrentTime=formater.format(newDate());2.3JSP腳本元素2.3.3聲明【例2-3】利用聲明,對【例2-1】進行更改。文件名為example2_3.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%@pageimport="java.text.*,java.util.*"%><html><body><%!StringformatDate(Dated,Stringformat){SimpleDateFormatformater=newSimpleDateFormat(format);2.3JSP腳本元素2.3.3聲明returnformater.format(d);}%><center>你好,交通信息工程學院!現在是:<%=formatDate(newDate(),"yyyy年MM月dd日HH時mm分ss秒")%><br>你好,運輸管理工程學院!現在是:<%=formatDate(newDate(),"yyyy年MM月dd日hh時mm分ss秒")%></center></body></html>2.3JSP腳本元素2.3.3聲明【例2-3】運行結果如圖2-3所示。圖2-3【例2-3】的運行結果2.3JSP腳本元素2.4JSP動作元素簡介JSP動作元素主要有jsp:forward動作、jsp:include動作、jsp:param動作、jsp:useBean動作、jsp:setProperty動作和jsp:getProperty動作等。其語法格式如下。<jsp:動作名>...</jsp:動作名>JSP動作涉及頁面之間控制權的轉移,后述的內容將陸續(xù)介紹以上JSP動作。2.3JSP腳本元素2.5JSP程序中的注釋2.5.1HTML注釋HTML注釋被原樣發(fā)送到客戶端。HTML注釋在瀏覽器中看不到,但是可以通過“查看源代碼”看到。其語法格式如下。<!--注釋內容-->HTML注釋內如果包含JSP腳本元素,這些小腳本、表達式和聲明都會被執(zhí)行且在客戶端源代碼中顯示相應的結果。2.3JSP腳本元素2.5JSP程序中的注釋2.5.2JSP注釋

JSP注釋又稱隱藏注釋,在客戶端通過查看源碼也看不到。JSP引擎不會編譯這些注釋。其語法格式如下。<%--注釋內容--%>2.3JSP腳本元素2.5JSP程序中的注釋2.5.3腳本元素中的注釋腳本元素中包含Java代碼,因此Java中的注釋規(guī)則在小腳本和聲明中同樣適用。其語法格式如下。//單行注釋/*多行注釋*//**JavaDOC注釋*/2.3JSP腳本元素2.5JSP程序中的注釋2.5.3腳本元素中的注釋【例2-4】向【例2-3】中添加一些注釋。文件名為example2_4.jsp,其代碼如下。<!--example2_3.jsp,輸出系統(tǒng)的當前時間,客戶端能看到--><%--example2_3.jsp,輸出系統(tǒng)的當前時間,客戶端不能看到--%><%@pagelanguage="java"contentType="text/html;charset=GBK"%><%@pageimport="java.text.*,java.util.*"%><html><body>2.3JSP腳本元素2.5JSP程序中的注釋2.5.3腳本元素中的注釋<%!/*格式化輸出當前系統(tǒng)時間輸入參數(Dated,Stringformat)返回一個時間字符串*/StringformatDate(Dated,Stringformat){//調用SimpleDateFormat(Strings)類構造方法SimpleDateFormatformater=newSimpleDateFormat(format);returnformater.format(d);}2.3JSP腳本元素2.5JSP程序中的注釋2.5.3腳本元素中的注釋%><center>你好,交通信息工程學院!現在是:<%=formatDate(newDate(),"yyyy年MM月dd日HH時mm分ss秒")%><br>你好,運輸管理工程學院!現在是:<%=formatDate(newDate(),"yyyy年MM月dd日hh時mm分ss秒")%></center></body></html>2.3JSP腳本元素2.5JSP程序中的注釋2.5.3腳本元素中的注釋在IE瀏覽器中運行后,執(zhí)行“查看”→“源”命令,可以看到HTML注釋,但是看不到JSP注釋及Java注釋,如圖2-4所示。圖2-4在客戶端看到的【例2-4】源碼2.6小結JSP頁面由HTML靜態(tài)文本、JSP指令元素、JSP腳本元素、JSP動作元素及注釋等內容按相應的語法規(guī)定交織構成,以實現所需的語義邏輯。JSP指令元素主要包括page指令和include指令。JSP腳本元素包含小腳本、表達式和聲明。JSP文件中的注釋包含HTML注釋和JSP注釋,以及小腳本和聲明中的Java注釋。2.7習題1.在【例2-3】中我們學會了使用JSP聲明來簡化不必要的頁面代碼重復。通過學習,我們知道還有一種辦法同樣可以簡化頁面代碼,即把重復使用的代碼寫在一個可共享的文件中,再用include指令把該文件嵌入當前頁面。編寫這個共享文件,并修改例【2-3】,使之達成相同的效果。2.試編寫一個JSP頁面,輸出表達式1+2+3+…+100的和,并在語句中添加適當注釋。2.7習題3.推算以下JSP代碼片斷的運行結果,并思考一下原因。(1)inta=10;intadd(inta){a++;returna;}%><%inta=100;%><%=add(20)%><%=a%>2.7習題3.推算以下JSP代碼片斷的運行結果,并思考一下原因。(2)<%!inta=10;intadd(inta){a++;returna;}%><%inta=100;%><%=add(20)%><%=this.a%>2.7習題3.推算以下JSP代碼片斷的運行結果,并思考一下原因。(3)<%!inta=10;intadd(inta){this.a++;returnthis.a;}%><%inta=100;%><%=add(20)%><%=a%>2.7習題3.推算以下JSP代碼片斷的運行結果,并思考一下原因。(4)<%!inta=10;intadd(inta){this.a++;returnthis.a;}%><%this.a=100;%><%=add(20)%><%=a%>2.7習題4.試編寫一個JSP頁面,實時顯示當前的系統(tǒng)時間。提示:添加以下HTML代碼,以實現頁面的自動刷新功能。<metahttp-equiv="refresh"content="1;url=exercise2_4.jsp">refresh表示要刷新頁面,1表示刷新的時間間隔是1秒,exercise2_4.jsp指要刷新的頁面。2.8上機實踐1.試編寫一個JSP頁面,輸出100以內的所有素數,并在語句中添加適當的注釋。2.試編寫一個JSP頁面,產生一個異常,然后轉到另一個頁面處理該異常。提示:定義page指令中的isErrorPage屬性和errorPage屬性。3.試編寫一個JSP頁面,統(tǒng)計該網頁的訪問量。提示:在聲明的方法中使用synchronized關鍵字。4.試編寫一個JSP頁面,輸入你的18位身份證號,從中分析出你的生日。其結果如圖2-5所示。2.8上機實踐圖2-5上機實踐4的輸出結果觀謝謝看模塊3JSP內置對象0203知識目標掌握request對象、response對象、out對象、session對象、application對象、pageContext對象和exception對象的基本用法。了解page對象和config對象。掌握Cookie類的基本用法。掌握param動作、include動作和forward動作的基本用法。技能目標能夠在MyEclipseIDE中用request對象、response對象、out對象、session對象、application對象、pageContext對象和exception對象編寫JSP頁面并運行。能夠在MyEclipseIDE中用Cookie類編寫JSP頁面并運行。能夠在MyEclipseIDE中用param動作、include動作和forward動作編寫JSP頁面并運行。3.1回顧和思考在模塊2中我們學習并分析了JSP頁面代碼的構成,能夠設計編寫簡單的JSP頁面。本模塊我們將系統(tǒng)地學習JSP內置對象及部分JSP動作元素,從而使用JSP處理客戶端請求,并與用戶進行信息交互。3.1回顧和思考【例3-1】下面是網頁制作課程中設計的一個用戶登錄表單示例。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><html><head><title>example3_1.jsp</title></head><body><formid="form"name="form"method="post"action="example3_2.jsp">3.1回顧和思考<center><p>用戶名:<inputtype="text"name="user"maxlength="12"/></p></center><center><p>密

碼:<inputtype="password"name="pwd"maxlength="8"/></p></center><center><p>     <inputtype="submit"name="button"value="提交"/>  <inputtype="reset"name="button"value="取消"/></p></center></form></body></html>3.1回顧和思考【例3-1】被命名為example3_1.jsp,運行結果如圖3-1所示?;貞浺幌略诰W頁制作課程中,HTML標簽form的屬性action是暫不賦值的,因為那時不需要對表單的內容進行處理;而在例【3-1】中,屬性action被賦值為“example3_2.jsp”。這就告訴我們example3_1.jsp的處理頁面為example3_2.jsp,在example3_1.jsp頁面中填寫的信息將由example3_2.jsp頁面提取并進行相應的處理。example3_2.jsp頁面該如何設計?其核心代碼涉及的相關JSP內置對象需在本模塊進行學習。3.1回顧和思考圖3-1【例3-1】運行結果3.2JSP內置對象JSP內置對象是JSP容器加載的一組類的實例,它不需要通過“new”關鍵字去獲取實例,可以直接在JSP頁面使用。JSP內置對象共有9個,分別是request、response、out、session、application、pageContext、page、config和exception。3.2JSP內置對象3.2.1request對象【例3-2】用戶信息輸出。首先編寫example3_2.jsp頁面,代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%request.setCharacterEncoding("GBK");Stringname=request.getParameter("user");Stringpwd=request.getParameter("pwd");%><html><head><title>example3_2.jsp</title></head><body><divalign="center">你輸入的身份信息<tablewidth="200"border="1"align="center"><tr><tdalign="left">用戶名:<%=name%></td></tr><tr><tdalign="left">密

碼:<%=pwd%></td></tr></table></div></body></html>3.2JSP內置對象3.2.1request對象3.2JSP內置對象3.2.1request對象在本例中出現了內置對象request。request內置對象用于處理客戶端的請求,包含所有來自瀏覽器的請求信息。在JSP頁面中通過request內置對象的方法來獲取請求的相關數據。在本例中出現的request對象方法voidsetCharacterEncoding(Stringcharset)是指定請求的數據編碼為中文,以防中文亂碼;StringgetParameter(Stringname)則根據頁面表單組件名稱獲取請求頁面提交數據。3.2JSP內置對象3.2.1request對象【例3-2】中的example3_2.jsp頁面通過getParameter方法獲取example3_1.jsp頁面表單組件text和password中用戶輸入的值,并用JSP表達式在頁面相關位置輸出?!纠?-2】運行結果如圖3-2所示。圖3-2【例3-2】運行結果3.2JSP內置對象3.2.1request對象【例3-3】用戶信息提交。表單頁面example3_3.jsp的代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><html><head><title>example3_3.jsp</title></head><body><formid="form"name="form"method="post"action="example3_4.jsp"><center><p>愛好:<inputtype="checkbox"name="ah"value="音樂"/>音樂<inputtype="checkbox"name="ah"value="棋藝"/>棋藝3.2JSP內置對象3.2.1request對象<inputtype="checkbox"name="ah"value="書法"/>書法<inputtype="checkbox"name="ah"value="美術"/>美術</p></center><center><p><inputtype="submit"name="button"value="提交"/><inputtype="reset"name="button"value="取消"/></p></center></form></body></html>3.2JSP內置對象3.2.1request對象【例3-3】運行結果如圖3-3所示(復選框全部選中)。該表單只有一個復選框組件,單擊“提交”按鈕后,頁面的處理權交給了example3_4.jsp。那么該如何編寫example3_4.jsp頁面呢?圖3-3【例3-3】運行結果3.2JSP內置對象3.2.1request對象【例3-4】用戶信息輸出。編寫example3_4.jsp頁面,代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%request.setCharacterEncoding("GBK");String[]ah=request.getParameterValues("ah");Strings="";if(ah!=null)for(inti=0;i<ah.length;i++)s=s+ah[i]+"";%><html><head>3.2JSP內置對象3.2.1request對象<title>example3_4.jsp</title></head><body><divalign="center">愛好<tablewidth="240"border="1"align="center"><tr><tdalign="center"><%=s%></td></tr></table></div></body></html>3.2JSP內置對象3.2.1request對象在【例3-4】中,request內置對象調用其方法String[]getParameterValues(Stringname)來獲取請求的復選框組件數據。該方法返還一個字符串數組,從而解決了多值表單組件的數據請求處理問題?!纠?-4】運行結果如圖3-4所示。圖3-4【例3-4】運行結果3.2JSP內置對象3.2.1request對象【例3-5】用戶登錄后頁面轉發(fā)。編寫example3_5.jsp頁面,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%request.setCharacterEncoding("GBK");Stringname=request.getParameter("user");Stringpwd=request.getParameter("pwd");if(name.equals("南京交通")&&pwd.equals("njjt"))request.getRequestDispatcher("example3_5_1.jsp").forward(request,response);//登錄成功elserequest.getRequestDispatcher("example3_5_2.jsp").forward(request,response);//登錄失敗%>3.2JSP內置對象3.2.1request對象將登錄成功頁面命名為example3_5_1.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><html><head><title>example3_5_1.jsp</title></head><body><h1align="center"><fontsize="4">登錄結果</font></h1><palign="center"><fontcolor="#FF0000">登錄成功!</font></p></body></html>3.2JSP內置對象3.2.1request對象將登錄失敗頁面命名為example3_5_2.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><html><head><title>example3_5_2.jsp</title></head><body><h1align="center"><fontsize="4">登錄結果</font></h1><palign="center"><fontcolor="#FF0000">登錄失??!</font></p></body></html>3.2JSP內置對象3.2.1request對象在【例3-5】中,request內置對象首先調用其RequestDispatchergetRequestDispatcher("url")方法生成一個RequestDispatcher(request轉發(fā)器)對象,再調用該RequestDispatcher對象的voidforward(ServletRequestarg0,ServletResponsearg1)方法完成頁面的轉發(fā)?!纠?-5】運行結果如圖3-5和圖3-6所示。圖3-5【例3-5】登錄成功運行結果3.2JSP內置對象3.2.1request對象圖3-6【例3-5】登錄失敗運行結果3.2JSP內置對象3.2.2response對象response內置對象與request內置對象相對應,用于響應客戶端請求并向客戶端輸出信息。在【例3-5】中使用request內置對象實現了頁面的轉發(fā)。同樣可以使用response內置對象實現頁面的跳轉或重定向(這里不使用“轉發(fā)”術語,而使用“跳轉或重定向”術語,為什么?)。繼續(xù)使用【例3-1】的用戶登錄界面,將屬性action的值更換為“example3_6.jsp”。3.2JSP內置對象3.2.2response對象【例3-6】用戶登錄后頁面跳轉。example3_6.jsp頁面代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%request.setCharacterEncoding("GBK");Stringname=request.getParameter("user");Stringpwd=request.getParameter("pwd");if(name.equals("南京交通")&&pwd.equals("njjt"))response.sendRedirect("example3_6_1.jsp");elseresponse.sendRedirect("example3_6_2.jsp");%>3.2JSP內置對象3.2.2response對象example3_6_1.jsp和example3_6_2.jsp可分別參考example3_5_1.jsp和example3_5_2.jsp,此處代碼略去?!纠?-6】運行結果可參考圖3-5。3.2JSP內置對象3.2.2response對象【例3-7】可以利用response內置對象的voidsetHeader(Stringname,Stringvalue)方法在網頁中實時顯示系統(tǒng)時間。該方法的第一個形參為http響應報頭名,第二個形參為http響應報頭值。本例將使用Refresh響應報頭,響應報頭值設為1秒。文件名為example3_7.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%@pageimport="java.text.*,java.util.*"%><html><body><%!StringformatDate(Dated,Stringformat){SimpleDateFormatformater=newSimpleDateFormat(format);returnformater.format(d);}%>3.2JSP內置對象3.2.2response對象<center>你好,交通信息工程學院!現在是:<%=formatDate(newDate(),"yyyy年MM月dd日HH時mm分ss秒")%><%response.setHeader("Refresh","1");%></center></body></html>3.2JSP內置對象3.2.2response對象【例3-7】運行結果如圖3-7所示。通過每隔1秒的頁面刷新,實時顯示了系統(tǒng)時間。圖3-7【例3-7】運行結果3.2JSP內置對象3.2.3out對象out內置對象是JSP編程中使用最為頻繁的內置對象。out內置對象用于向客戶端輸出數據。out內置對象常用的方法有voidprint(Stringoutput)、voidprintln(Stringoutput)和voidwrite(Stringoutput)。這三個方法都用于向頁面相應位置輸出數據。3.2JSP內置對象3.2.3out對象例3-8】out內置對象應用實例。編寫example3_8.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%@pageimport="java.text.*,java.util.*"%><html><body><%!StringformatDate(Dated,Stringformat){SimpleDateFormatformater=newSimpleDateFormat(format);returnformater.format(d);}%><center>3.2JSP內置對象3.2.3out對象你好,交通信息工程學院!現在是:<%out.print(formatDate(newDate(),"yyyy年MM月dd日HH時mm分ss秒"));out.print("<br>");//換行%>你好,運輸管理工程學院!現在是:<%out.write(formatDate(newDate(),"yyyy年MM月dd日hh時mm分ss秒"));%></center></body></html>3.2JSP內置對象3.2.3out對象在example3_8.jsp的代碼中,用out內置對象代替了JSP表達式,收到了同樣的效果?!纠?-8】運行結果如圖3-8所示。圖3-8【例3-8】運行結果3.2JSP內置對象3.2.4session對象session內置對象用于存儲用戶會話的所有信息,以此識別不同的用戶。session內置對象在頁面發(fā)生跳轉時,能保存并跟蹤用戶的會話信息。session內置對象最常用的方法是voidsetAttribute(Stringname,Objectvalue)和ObjectgetAttribute(Stringname)。前者設定指定名稱的屬性及其值,并把該屬性連同它的值存儲在session內置對象中;后者根據屬性的名稱獲取其存儲在session內置對象中的值。3.2JSP內置對象3.2.4session對象【例3-9】使用session內置對象顯示會話計數。編寫example3_9.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%if(session.getAttribute("count")==null)session.setAttribute("count",newInteger(0));Integercount=(Integer)session.getAttribute("count");session.setAttribute("count",newInteger(Value()+1));%>3.2JSP內置對象3.2.4session對象<html><body><divalign="center">使用session內置對象顯示會話計數</div><tablewidth="400"border="1"align="center"><tr><tdwidth="200"align="center"><b>會話計數</b></td><tdwidth="200"align="center"><%=session.getAttribute("count")%></td></tr></table></body></html>3.2JSP內置對象3.2.4session對象【例3-9】運行結果如圖3-9所示。會話計數從1開始。選擇刷新頁面、重復打開選項卡、新建窗口等操作,會話計數增加1次。圖3-9【例3-9】運行結果3.2JSP內置對象3.2.5application對象服務器中的JSP引擎啟動后,application內置對象就產生了。不同用戶瀏覽網站的不同頁面時,application內置對象都是同一個,即所有客戶端共享此application內置對象。直至JSP引擎關閉,此application內置對象才消亡。3.2JSP內置對象3.2.5application對象【例3-10】使用application內置對象顯示應用程序計數。編寫example3_10.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%if(application.getAttribute("count")==null)application.setAttribute("count",newInteger(0));Integercount=(Integer)application.getAttribute("count");application.setAttribute("count",newInteger(Value()+1));%>3.2JSP內置對象3.2.5application對象<html><body><divalign="center">使用application內置對象顯示應用程序計數</div><tablewidth="400"border="1"align="center"><tr><tdwidth="200"align="center"><b>應用程序計數</b></td><tdwidth="200"align="center"><%=application.getAttribute("count")%></td></tr></table></body></html>3.2JSP內置對象3.2.5application對象【例3-10】運行結果如圖3-10所示。應用程序計數從1開始。選擇刷新頁面、重復打開選項卡、新建窗口、新建會話、重新打開瀏覽器等操作,應用程序計數增加1次。關閉Tomcat,再重啟Tomcat,應用程序計數則又從1開始。圖3-10【例3-10】運行結果3.2JSP內置對象3.2.6pageContext對象用戶使用pageContext內置對象可以訪問本頁面中其他所有內置對象。pageContext內置對象的作用范圍僅限于頁面內。pageContext內置對象最常用的方法是voidsetAttribute(Stringname,Objectvalue)和ObjectgetAttribute(Stringname)。前者設定指定名稱的屬性及其值,并把該屬性連同它的值存儲在pageContext內置對象中;后者根據屬性的名稱獲取其存儲在pageContext內置對象中的值。3.2JSP內置對象3.2.6pageContext對象【例3-11】使用pageContext內置對象顯示頁面計數。編寫example3_11.jsp,其代碼如下。<%@pagelanguage="java"contentType="text/html;charset=GBK"%><%if(pageCon

溫馨提示

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

評論

0/150

提交評論