《Java Web技術及案例開發(fā)》 課件 第4章 JSP基礎_第1頁
《Java Web技術及案例開發(fā)》 課件 第4章 JSP基礎_第2頁
《Java Web技術及案例開發(fā)》 課件 第4章 JSP基礎_第3頁
《Java Web技術及案例開發(fā)》 課件 第4章 JSP基礎_第4頁
《Java Web技術及案例開發(fā)》 課件 第4章 JSP基礎_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章

JSP基礎本章思維導圖本章目標了解JSP的概念及特點理解JSP和Servlet的區(qū)別與聯(lián)系理解JSP的執(zhí)行過程及原理掌握JSP頁面的常用元素熟練使用JSP聲明熟練使用JSP表達式熟練使用JSP腳本JSP概述JSP(JavaSeverPages)是由SunMicrosystems公司倡導、多家公司一起參與建立的一種動態(tài)網(wǎng)頁技術標準。JSP是一種用于開發(fā)包含動態(tài)內(nèi)容的Web頁面的技術,與Servlet一樣,也是一種基于Java的服務器端技術,主要用來產(chǎn)生動態(tài)網(wǎng)頁內(nèi)容。JSP技術具有以下優(yōu)點:一次編寫,各處執(zhí)行簡單快捷組件重用易于部署、升級和維護一個顯示當前服務器系統(tǒng)時間的JSP頁面示例第一個JSP程序<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>第一個JSP頁面</title></head><body> <h1>您好!</h1>

<% java.util.Datedate=newjava.util.Date(); out.println("當前時間是:"+date.toLocaleString()); %></body></html>JSP指令JSP腳本JSP同Servlet一樣,都運行在Servlet容器中。當用戶第一次訪問JSP頁面時,JSP頁面的處理過程:JSP執(zhí)行原理當同一個JSP頁面再次被請求時,只要該JSP文件沒有發(fā)生過改動,容器將直接調(diào)用已裝載的字節(jié)碼文件,而不會再執(zhí)行翻譯和編譯的過程,從而大大提高了服務器的性能。此過程如下:JSP執(zhí)行原理JSP請求執(zhí)行流程圖JSP執(zhí)行原理JSP頁面就是帶有JSP元素的常規(guī)Web頁面,它由模板文本和JSP元素組成。在一個JSP頁面中,所有非JSP元素的內(nèi)容稱為模板文本(templatetext)。模板文本可以是任何文本,如:HTML、XML,甚至可以是純文本。JSP并不依賴于HTML,它可以采用任何一種標記語言。模板文本通常被直接傳遞給瀏覽器。在處理一個JSP頁面請求時,模板文本和JSP元素所生成的內(nèi)容會合并,合并后的結果將作為響應內(nèi)容發(fā)送給瀏覽器。JSP基本結構JSP有三種類型的元素:腳本元素(scriptingelement)、指令元素(directiveelement)和動作元素(actionelement)。JSP基本結構腳本元素允許用戶將小段的代碼(一般情況下是Java代碼)添加到JSP頁面中,例如,可以加入一個if語句,以根據(jù)具體情況產(chǎn)生不同的HTML代碼。腳本元素在頁面被請求時執(zhí)行。JSP腳本元素包括:腳本、表達式、聲明和注釋。腳本元素所謂腳本代碼(Scriptlet),是指JSP中的代碼部分,在這個部分中可以使用幾乎任何Java的語法。語法【示例】判斷語句JSP腳本<%JSP腳本%><% if(Calendar.getInstance().get(Calendar.AM_PM)==Calendar.AM){%>上午好!<% }else{%>下午好!<% }%>JSP中的表達式可以被看做一種簡單的輸出形式,需要注意的是,表達式一定要有一個可以輸出的值。語法【示例】使用JSP表達式顯示當前時間JSP表達式<%=表達式%><%=(newjava.util.Date()).toLocaleString())%>JSP中的聲明用于聲明一個或多個變量和方法,并不輸出任何的文本到輸出流。在聲明元素中聲明的變量和方法將在JSP頁面初始化時進行初始化。語法【示例】聲明變量和方法JSP聲明<%!JSP聲明%><%!inti=0;%><%!publicStringf(inti){ if(i<3) return("…"); return"";}%>JSP聲明變量與普通腳本變量的區(qū)別:聲明變量將做為JSP翻譯生成的Servlet的屬性,所有對該JSP的請求將共享此變量;普通腳本變量將做為JSP翻譯生成的Servlet的_jspService()方法中的局部變量,每個對該JSP的請求將被分配給一個同名的此變量。JSP聲明在JSP頁面中可以使用“<%----%>”的方式來注釋。服務器編譯JSP時會忽略“<%--”和“--%>”之間的內(nèi)容,注釋的內(nèi)容在客戶端不會被看到。示例JSP注釋<%--現(xiàn)在的時間為:--%><%-- Stringdate=java.text.DateFormat.getDateTimeInstance() .format(newjava.util.Date());--%><%--=date--%>JSP指令用來向JSP容器提供編譯信息。指令并不向客戶端產(chǎn)生任何輸出,所有的指令都只在當前頁面中有效。JSP指令元素包括三種:page指令include指令taglib指令指令元素page指令描述了和頁面相關的信息,如:導入所需類包、指明輸出內(nèi)容類型、控制Session等。page指令一般位于JSP頁面的開頭部分,在一個JSP頁面中,page指令可以出現(xiàn)多次,但是在每個page指令中,每一種屬性卻只能出現(xiàn)一次,重復的屬性設置將覆蓋掉先前的設置。語法【示例】page指令page指令<%@page屬性列表%><%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>page指令的屬性及其含義:page指令的屬性屬性名說明language設定JSP頁面使用的腳本語言,默認為Java,目前只可使用Java語言import指定導入的Java軟件包或類名列表,若有多個類,中間用逗號隔開isThreadSafe指定JSP容器執(zhí)行JSP程序的模式。有兩種模式:一種為默認值true,代表JSP容器會以多線程方式運行JSP頁面;另一種模式設定值為false,JSP容器會以單線程方式運行JSP頁面。建議采用isThreadSage="true"模式contentType指定MIME類型和JSP頁面響應時的編碼方式,默認為“text/html;charset=ISO8859-1”pageEncoding指定JSP文件本身的編碼方式,例如pageEncoding="UTF-8"session指定JSP頁面中是否使用session對象,值為“true|false”,默認為trueerrorPage設定JSP頁面發(fā)生異常時重新指向的頁面URL,指向的頁面文件要把isErrorPage設成trueisErrorPage指定此JSP頁面是否為處理異常錯誤的網(wǎng)頁,值為“true|false”,默認falseisELIgnored指定JSP頁面是否忽略EL表達式,值為“true|false”,默認falsebuffer指定輸出流是否需要緩沖,默認值是8kb,與autoFlush一起使用,確定是否自動刷新輸出緩沖,如果設成true,則當輸出緩沖區(qū)滿的時候,刷新緩沖區(qū)而不是拋出一個異常autoFlush如果頁面緩沖區(qū)滿時要自動刷新輸出,則設置為true;否則,當頁面緩沖區(qū)滿時要拋出一個異常,則設置為falseimport屬性用來指定當前JSP頁面中導入的Java軟件包或類名列表。如果需要導入多個類或包,可以在中間使用逗號隔開或使用多個page指令。【示例】使用import屬性導入包和類或import屬性<%@pageimport="java.util.*,com.zkl.ch04.service.CustomerService"%><%@pageimport="java.util.*"%><%@pageimport="com.zkl.ch04.service.CustomerService"%>使用import屬性,可以使JSP腳本代碼中類的使用更加方便。例如,獲得當前系統(tǒng)時間的JSP腳本,未使用import屬性時的代碼如下所示:使用import屬性導入相關類后的代碼如下所示:import屬性<%Stringdate=java.text.DateFormat.getDateTimeInstance() .format(newjava.util.Date());%><%@pageimport="java.text.DateFormat,java.util.Date"%><%Stringdate=DateFormat.getDateTimeInstance().format(newDate());%>contentType用于指定JSP輸出內(nèi)容的MIME類型和字符編碼方式,默認值為:contentType="text/html;charset=ISO-8859-1"。通過設置contentType屬性的MIME類型,可以改變JSP輸出內(nèi)容的處理方式,從而實現(xiàn)一些特殊的功能。例如,可以將輸出內(nèi)容指定為Word、Excel類型的文件、將二進制數(shù)據(jù)生成圖像等。演示將HTML代碼編寫的表格轉換成MicrosoftOfficeExcel類型文件顯示。contentType屬性include指令的作用是在頁面翻譯期間引入另一個文件,被包含的文件可以是JSP、HTML或文本文件。語法【示例】include指令引入一個JSP頁面include指令<%@includefile="文件"%><%@includefile="header.jsp"%>include指令會先將當前JSP和被包含的文件融合到一起形成一個Servlet再進行編譯執(zhí)行;因此包含文件時,必須保證新合并生成的文件符合JSP語法規(guī)則。例如,當前文件和被包含文件的不能同時定義同名的變量,否則當前文件將不能編譯通過,會提示Duplicatelocalvariable錯誤。include指令taglib指令用于指定JSP頁面所使用的標簽庫,通過該指令可以在JSP頁面中使用標簽庫中的標簽。語法其中:uri指定描述這個標簽庫位置的URI,可以是相對路徑或絕對路徑;prefix指定使用標簽庫中標簽的前綴。對上述示例指定的標簽庫,可以使用如下代碼進行標簽的引用:其中“c”為標簽的前綴,在JSP中有些前綴已經(jīng)保留,如果自定義標簽,這些標簽前綴不可使用。保留前綴有:jsp、jspx、java、javax、servlet、sun和sunw。taglib指令<%@tagliburi="標簽庫URI"prefix="標簽前綴"%><c:outvalue="helloworld"/>在JSP中可以使用XML語法格式的一些特殊標記來控制行為,稱為JSP標準動作(StandardAction)。利用JSP動作可以實現(xiàn)很多功能,例如:動態(tài)地插入文件、調(diào)用JavaBean組件、重定向頁面、為Java插件生成HTML代碼等。JSP規(guī)范定義了一系列標準動作,常用有下列幾種:<jsp:include>動作用于在頁面被請求時引入一個文件;<jsp:forward>動作用于把請求轉發(fā)到另一個頁面;<jsp:useBean>動作用于查找或實例化一個JavaBean;<jsp:setProperty>動作用于設置JavaBean的屬性;<jsp:getProperty>動作用于輸出某個JavaBean的屬性。動作元素<jsp:include>用于在頁面運行時引入一個靜態(tài)或動態(tài)的頁面,也稱為動態(tài)包含。當容器把JSP頁面翻譯成Java文件時,并不會把JSP頁面中動作指令include指定的文件與原JSP頁面合并成一個新頁面,而是告訴Java解釋器,這個文件在JSP運行時才被處理。<jsp:include>元素如果包含的文件是普通的文本文件,就將文件的內(nèi)容發(fā)送到客戶端,由客戶端負責顯示;如果包含的文件是JSP文件,JSP容器就執(zhí)行這個文件,然后將執(zhí)行結果發(fā)送到客戶端,由客戶端負責顯示這些結果。<jsp:include><jsp:include>動作可以包含一個或幾個<jsp:param>子動作,用于向要引入的頁面?zhèn)鬟f數(shù)據(jù)。語法或其中:page指定引入文件的地址;flush="true"表示設定是否自動刷新緩沖區(qū),默認為false,可省略;在頁面包含大量數(shù)據(jù)時,為縮短客戶端延遲,可將一部分內(nèi)容先行輸出;name指定傳入包含文件的變量名;value指定傳入包含文件的變量名對應的值。<jsp:include><jsp:includepage="urlSpec"flush="true"/><jsp:includepage="urlSpec"flush="true"> <jsp:paramname="name"value="value"/>

</jsp:include>【示例】include動作<jsp:include><jsp:includepage="show.jsp"> <jsp:paramname="name"value="qst"/> <jsp:paramname="password"value="123"/></jsp:include>include指令元素與include動作元素做如下對比:共同點:include指令元素和include動作元素的作用都是實現(xiàn)包含文件代碼的復用。區(qū)別:對包含文件的處理方式和處理時間不同。include指令元素是在翻譯階段就引入所包含的文件,被處理的文件在邏輯和語法上依賴于當前JSP頁面,其優(yōu)點是頁面的執(zhí)行速度快。include動作元素是在JSP頁面運行時才引入包含文件所產(chǎn)生的應答文本,被包含的文件在邏輯和語法上獨立于當前JSP頁面,其優(yōu)點是可以使用param子元素更加靈活地處理所需要的文件,缺點是執(zhí)行速度要慢一些。include指令元素與include動作元素<jsp:forward>用于引導客戶端的請求到另一個頁面或者另一個Servlet。<jsp:forward>動作可以包含一個或幾個<jsp:param>子動作,用于向所轉向的頁面?zhèn)鬟f參數(shù)。語法或其中:page指定轉發(fā)請求的相對地址;<jsp:param>中的name指定向轉向頁面?zhèn)鬟f的參數(shù)名稱;<jsp:param>中的value指定向轉向頁面?zhèn)鬟f的參數(shù)名稱對應的值;<jsp:forward><jsp:forwardpage="relativeURLSpec"/><jsp:forwardpage="relativeURLSpec"> <jsp:paramname="name"value="value"/>

</jsp:forward>【示例】forward動作注意:<jsp:forward>的功能和Servlet的RequestDispatcher對象的forward方法類似,調(diào)用者和被調(diào)用者共享同一個request對象。<jsp:forward><jsp:forwardpage="second.jsp"> <jsp:paramname="step"value="1"/></jsp:forward><jsp:useBean>是JSP中一個非常重要的動作,使用這個動作,JSP可以動態(tài)使用JavaBean組件來擴充JSP的功能,由于JavaBean在開發(fā)上以及<jsp:useBean>在使用上簡單明了,使得JSP與其它動態(tài)網(wǎng)頁開發(fā)技術有了本質的區(qū)別。語法或其中:id指定該JavaBean實例的變量名,通過id可以訪問這個實例;class指定JavaBean的類名。容器根據(jù)class指定的類調(diào)用其構造方法來創(chuàng)建這個類的實例;scope指定JavaBean的作用范圍,可以使用page、request、session和application。默認值為page。type指定JavaBean對象的類型,通常在查找已存在的JavaBean時使用,這時使用type將不會產(chǎn)生新的對象。<jsp:useBean><jsp:useBeanid="name"class="className"scope="page|request|session|application"/><jsp:useBeanid="name"type="typeName"scope="page|request|session|application"/><jsp:setProperty>動作用于向一個JavaBean的屬性賦值,需要和<jsp:useBean>動作一起使用。語法或其中:name指定JavaBean對象名,與useBean動作中的id相對應;property指定JavaBean中需要賦值的屬性名;value指定要為屬性設置的值;param指定請求中的參數(shù)名(如表單傳值或URL傳值),并將該參數(shù)的值賦給property所指定的屬性。<jsp:setProperty><jsp:setPropertyname="beanName"property="propertyName"value="p

溫馨提示

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

評論

0/150

提交評論