




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1第五章
JSP語法基礎2本節(jié)內容JSP注釋JSP腳本元素JSP指令元素JSP動作元素3JSP的組成:
傳統(tǒng)的html文件加入Java程序片斷(scriptlet)和JSP標記(tag)。45.1JSP注釋注釋有兩方面的作用:一個作用是作為提示,讓人可以從注釋信息中了解某段程序的功能或設計思想,在閱讀/編寫程序時提供參考信息;另一個作用是將未完成的或有錯誤的某個程序塊通過改為注釋而隱藏起來,使其暫時不參與程序的執(zhí)行,這種方式也適用于程序調試,即將調試時編寫的調試語句作為注釋隱藏起來。5JSP中的注釋可以分為兩類:輸出到客戶端的注釋
<!—comment[<%=expression%>]-->
注:Jsp中可以進行動態(tài)注釋。其中的內容可以是表達式、腳本片斷在服務器端的JSP注釋
<%----%>注:在服務器端可見,對于客戶端隱藏。65.1.3案例拓展例5-1testQuote.jsp<%@pagelanguage="java"%><html><head><title>例子3-2</title></head><body><h2>隱藏批注示例</h2><%--這是一個隱藏批注,不會顯示在客戶端--%></body></html>75.2JSP腳本元素5.2.1聲明5.2.2表達式5.2.3腳本程序85.2.1聲明在JSP中使用的變量和方法時:必須先進行聲明。在聲明元素中聲明的變量和方法,將在JSP頁面初始化時進行初始化。JSP中的聲明,用于聲明JSP程序中使用的變量、方法等,其聲明方式與Java相同(因為聲明最終將被發(fā)送到服務器端作為Java語句解釋),其語法格式為:9JSP聲明的語法格式:<%!declaration;[declaration;]……%>使用此種方法在JSP中對變量和方法進行聲明,可以一次聲明多個變量或者多個方法,只要最后以“;”結尾即可。每個聲明僅在當前的JSP頁面中有效。JSP腳本元素10例1:變量的聲明<%!inti=0;%>上面的語句聲明了一個int(整型)變量i,并賦初始值為0。
11例2:方法的聲明
<%!publicStringfun(inti){
…}%>說明:聲明了名為fun的方法。該方法是公開的。參數(shù):int類型,返回值類型:字符串。125.2.2表達式表達式用于將JSP內容轉換為字符串以便于包含在頁面的輸出中。表達式在運行后被自動轉化為字符串,然后插入到這個表達式在JSP文件中的位置顯示。13<%=expression%>
expression部分是表達式的內容,它是一個有計算結果的JSP表達式。注意:表達式一定要有一個可以輸出的值,如數(shù)學計算式子、有返回值的函數(shù)、變量等。不能使用分號“;”來作為表達式的結束符號,但是同樣的表達式用在聲明中就需要用分號來結尾表達式元素能夠包括任何在Java中有效的表達式表達式的格式14例:<%=n%>//顯示變量n的值<b><%=newDate()%></b>//粗體字顯示當前時間155.2.3腳本程序在JSP中稱符合Java語言規(guī)范的程序片斷為程序段,一般把它包括在“<%%>”之間,其基本語法為:
<%codefragment%>程序段也可以用于JSP變量和方法的聲明、顯示表達式以及調用JavaBean等。JSP程序段是完全符合Java語法的,在實際運行時會被轉換成Servlet。16腳本片斷能包含:多個JSP語句、方法、變量和表達式。例:
<body><!–聲明Date型變量d,并設置初始值為當前時間--><%!Dated=newDate();%><!--從下一行開始JSP腳本代碼--><% //輸出當前時間
out.println("現(xiàn)在時間是"); out.println(d);%></body>17例:<body><!--創(chuàng)建Date型變量d,并設置初始值為當前時間--><%!Dated=newDate();%><!--下一行通過表達式輸出變量d--><fontface=“宋體”color=“red”>現(xiàn)在時間是<%=d%></font></body>185.2.4案例拓展例5-3,5-4195.3JSP指令元素指令(Directives)主要用來提供整個JSP網頁相關的信息,并且用來設定JSP網頁的相關屬性,例如:網頁的編碼方式、語法、信息等。起始符號為:<%@終止符號為:%>20指令元素的一般形式如下:<%@directive[attr="value"]%>
其中,directive是指令名稱,
attr是指令的屬性,屬性可以有多個,
value是屬性的取值。21JSP中的指令有:。page:描述與頁面相關的指示信息,include:用于包含文件,taglib:用于指示JSP頁面所使用的標記庫JSP2.0加入表達式語言。簡化JSP開發(fā)。225.3.1Page指令
定義JSP文件中的全局屬性,描述與頁面相關的指示信息。language、import、contentType、session、buffer、auotFlush、isThreadSafe、info
23 <%@page%>指令作用于整個JSP頁面,包括靜態(tài)的包含文件;但是<%@page%>指令不能作用于動態(tài)的包含文件,比如
<jsp:include>。page指令詳說24page指令詳說可以在一個頁面中用上多個“<%@page%>”指令,但是其中的屬性只能用一次,不過也有例外,那就是import屬性。因為import屬性和Java中的import語句類似(參照JavaLanguage,import語句引入的是Java語言中的類),所以此屬性就能多用幾次。25page指令詳說無論把<%@page%>指令放在JSP的文件的哪個地方,它的作用范圍都是整個JSP頁面。為了增強JSP程序的可讀性,以及好的編程習慣,最好還是把它放在JSP文件的頂部。26
page指令可以指定到何處去查找起支持作用的Java類或包。例如:
<%@pageimport="java.util.Date"%>page指令也可以在出現(xiàn)Java運行錯誤時,指示將用戶導向何處。例如:
<%@pageerrorPage="errorPage.jsp"%>page指令詳說27page指令的一般語法格式:<%@page[language="java"][extends="package.class"][import="{package.class|package.*},..."][session="true|false"][buffer="none|8kb|sizekb"][autoFlush="true|false"][isThreadSafe="true|false"][info="text"]28[errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]%>29屬性說明。(1)language=“java”
聲明腳本語言的種類,目前只能用"java"。(2)extends
定義了由JSP頁面產生的servlet的父類。一般來說,這個屬性不會用到,建議初學者先不去使用它。Page指令30(3)import="{package.class|package.*},..."
需要導入的Java核心包的列表,這些包作用于程序段、表達式、以及聲明。下面的包在JSP編譯時已經導入了,所以就不需要再指明了:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*
31例如:<%@pageimport="java.util.*,java.io.*"%>或者:<%@pageimport="java.util.*"%><%@pageimport="java.io.*"%>32(4)session當前頁面是否加入會話期間的管理。其缺省值為true,表明內建對象session存在。如果沒有session對象,則會新建一個,由session來管理會話。如果設session屬性值為false,則內建對象session不存在,這樣頁面中任何使用到session的語句都會產生編譯錯誤。33(5)buffer決定輸出流(out對象)是否需要緩沖區(qū)。缺省值是8KB,也可以設置為none(沒有緩沖區(qū))或所指定大小的緩沖區(qū)。例如:
<%@pagebuffer="12kb"%>
指定輸出流緩沖區(qū)為12KB。buffer屬性通常與autoFlush屬性一起使用。34(6)autoFlushautoFlash屬性用于指定是否自動刷新輸出緩沖,如果設成true,則當輸出緩沖區(qū)滿的時候,自動刷新緩沖區(qū)而不是拋出一個異常,缺省值為true。注意:同時設置autoFlush為false和buffer為
none是不合法的,編譯時將會出錯。35(7)isThreadSafe指示JSP引擎,網頁在處理對象存取時是否要引入ThreadSafe(線程保護)機制。缺省值為true,此時,如果多個客戶向JSP引擎發(fā)送請求,就可以同時被處理。這時JSP程序員要處理同步時的共享狀態(tài),以保證同步確實是安全的。如果isThreadSafe被設成false,則采用單線程模式控制客戶端訪問該頁面。36(8)info設置頁面的說明信息文字??梢酝ㄟ^頁面的Servlet.getServletInfo(
)方法訪問該信息。例如:
<%@pageinfo="JSP教程"%>37(9)ErrorPage指示一個JSP文件的相對路徑,以便在頁面出錯時,轉到這個JSP文件來進行處理。需要將這個JSP文件的isErrorPage屬性設為true。當ErrorPage屬性被設置后,JSP網頁中的異常仍然會產生,只不過此時捕捉到的異常將不由當前網頁進行處理,而是由ErrorPage屬性所指定的網頁去進行處理。38(10)isErrorPage指示一個頁面是否為錯誤處理頁面。設置為true時,JSP頁面中的內建對象exception將被定義,以處理該頁面所產生的錯誤。缺省值為false,此時將不能使用內建對象exception來處理異常,否則將產生編譯錯誤。39(11)ContentType用于設置JSP文件和最終文件的MIME類型和字符集的類型。必須在文件的頂部、任何一個其他字符在文件中出現(xiàn)之前??捎玫腗IME類型有text/plain、text/html、text/html和image/gif、image/jpeg等。ContentType屬性缺省值為
“text/html;charset=ISO8859_1”。
40例如:<%@pagecontentType="text/html;charset=gb2312"%>上面語句設置MIME類型為text/html,網頁所用字符集為簡體中文(國標碼gb2312)。在JSP中,客戶端和服務器端的中文顯示需要使用字符集gb2312,而HTTP傳輸編碼用ISO8859_1字符集。41例:C:\Tomcat5.0\webapps\jspex\4\4-1\page.jsp<%@pagelanguage="java"import="java.util.Date"session="true" buffer="12kb"autoFlush="true"info="atestdirectivejsppage" isErrorPage="false"contentType="text/html;charset=gb2312"%><%@pageerrorPage="error.jsp"%><html><body><h1>使用page指令的測試頁面</h1><%=newjava.util.Date().toLocaleString()%>使用表達式語言:\${4>3}:${4>3}</body></html>425.3.2Include指令 include指令:向當前頁面內靜態(tài)嵌入一個文件的內容。<%@includefile="文件名"%>語法格式如下:<%@includefile="relativeURL"%>或<%@includefile="相對位置"%>43包含的文件的路徑名:一般來說是指相對路徑。如果這個路徑以“/”開頭,那么這個路徑主要是參照相對于包含這個JSP文件的Web應用程序的根目錄,如果路徑是以文件名或目錄名開頭,那么這個路徑就是正在使用的JSP文件的當前路徑。44例5-6Include.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>例子5-6Include.jsp</title></head><body><h2>include指令</h2><%@includefile="Hello.html"%><%out.println("歡迎大家進入JSP的世界");%></body></html>455.3.3Taglib指令
taglib指令是JSP1.1新增進來的功能,能夠讓用戶自定義新的標簽。465.3.4案例拓展在頁面中顯示日期例5-7Date.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.util.Date"%><html><head><title>例子5-7Date.jsp</title></head><body><h2>使用java.util.Date顯示目前時間</h2><%Datedate=newDate();out.println("現(xiàn)在時間:"+date);%></body></html>475.4JSP動作元素
5.4.1Include動作
5.4.2forward動作5.4.3param動作5.4.4plugin動作485.4.1Include動作<jsp:include>元素允許你包含動態(tài)和靜態(tài)文件,這兩種產生的結果是不盡相同的。如果包含進來的只是靜態(tài)文件,那么只是把靜態(tài)文件的內容加到JSP網頁中;如果包含進來的為動態(tài)文件,那么這個被包含的文件也會被JSPContainer編譯執(zhí)行。49<jsp:include>的語法:<jsp:includepage="{urlSpec|<%=expression%>}"flush="true|false"/>或<jsp:includepage="{urlSpec|<%=expression%>}"flush="true|false"><jsp:paramname="PN"value="{PV|<%=expression%>}"/>*</jsp:include>50說明:<jsp:include>有兩個屬性:page和flush。page:可以代表一個相對路徑,即你所要包含進來的文件位置或是經過表達式所運算出的相對路徑。flush:接受的值為boolean,假若為true,緩沖區(qū)滿時,將會被清空。flush的默認值為false。51例子5-8top.html<html><head><title>《JSP程序設計》網站</title></head><body><palign="center"><b><fontsize="5">《JSP程序設計》網站</font></b></p>bottom.html<hr><palign="center"><fontsize="3">@中國鐵道出版社版權所有2004-2008</font><br><fontsize="3">制作人:于靜</font><br><fontsize="3">聯(lián)系方式:qzforyou@163.com</font><br></body></html>includeSample.jsp<%@pagecontentType="text/html;charset=gb2312"%><%@includefile="top.html"%><palign="center"><%out.println("實用、適用,更加方便教學的使用是本教材永遠不變的目標!");%></p><%@includefile="bottom.html"%>525.4.2forward動作<jsp:forward>:將客戶端所發(fā)出來的請求,從一個JSP網頁轉交給另一個JSP網頁。不過有一點要特別注意,<jsp:forward>標簽之后的程序將不能執(zhí)行。<jsp:forward>的語法:<jsp:forwardpage={"relativeURL"|"<%=expression%>"}/>或<jsp:forwardpage={"relativeURL"|"<%=expression%>"}><jsp:paramname="PN"value="{PV|<%=expression%>}"/>*</jsp:forward>53例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于洗煤合同范例
- 臨時財務用工合同范本
- 各種勞務合同范本
- 中國掀起數(shù)字化浪潮的心得體會
- 醫(yī)學三基康復科模擬練習題
- 勞務合同范本務
- 醫(yī)院房屋建設施工合同范本
- 醫(yī)藥廠家銷售合同范本
- 美術基礎習題及參考答案
- 半包家裝合同范本
- 2025年鄂東高三語文2月調研聯(lián)考試卷附答案解析
- 滬教版數(shù)學四年級下冊全冊教案
- 數(shù)字孿生技術 課件 第1、2章 概述;數(shù)字孿生中的物聯(lián)網和人工智能
- 2025年廣東省廣晟控股集團有限公司招聘筆試參考題庫含答案解析
- 2025語文新教材三下全冊8個單元教材解讀分析匯編
- java安全編碼規(guī)范
- 美麗的春天課件
- 2025年山東青島自貿發(fā)展有限公司招聘筆試參考題庫含答案解析
- 液化氣罐的使用和安全防范
- 2025年中考物理總復習《內能》專項測試卷含有答案
- 會計法律法規(guī)答題答案
評論
0/150
提交評論