Java Web編程技術(shù):JSP語(yǔ)法基礎(chǔ)_第1頁(yè)
Java Web編程技術(shù):JSP語(yǔ)法基礎(chǔ)_第2頁(yè)
Java Web編程技術(shù):JSP語(yǔ)法基礎(chǔ)_第3頁(yè)
Java Web編程技術(shù):JSP語(yǔ)法基礎(chǔ)_第4頁(yè)
Java Web編程技術(shù):JSP語(yǔ)法基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩80頁(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)介

JSP語(yǔ)法基礎(chǔ)【知識(shí)目標(biāo)】理解Web服務(wù)器對(duì)JSP源文件的處理流程和JSP源代碼的構(gòu)成要素。掌握J(rèn)SP的三種注釋方法。掌握J(rèn)SP三類腳本元素的語(yǔ)法格式及使用。掌握page、include指令的語(yǔ)法格式及使用。掌握useBean、setProperty、getProperty、include、forward和param動(dòng)作的語(yǔ)法格式及使用?!灸芰δ繕?biāo)】能閱讀JSP源代碼,并選擇恰當(dāng)?shù)淖⑨尫绞綄?duì)JSP源代碼進(jìn)行注釋。能靈活運(yùn)用JSP腳本元素編寫JSP源代碼。能靈活使用JSP指令編寫JSP源代碼。能靈活使用JSP動(dòng)作編寫JSP源代碼。JSP語(yǔ)法基礎(chǔ)4.1JSP源代碼的構(gòu)成4.2注釋4.3腳本元素4.4指令元素4.5動(dòng)作元素4.1JSP源代碼的構(gòu)成<%--JSP注釋--%><%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html>

<head><title>JSP頁(yè)面的基本構(gòu)成</title></head>

<body>

<jsp:includepage="index.jsp"></jsp:include>

<%!intn=5;%>

<%

intmul=1; for(inti=1;i<=n;i++) mul=mul*i; out.print(n+"!=");%>

<%=mul%>

</body></html>靜態(tài)部分動(dòng)態(tài)部分JSP注釋:是在JSP源文件中用來(lái)向讀者解釋說(shuō)明的部分。JSP腳本:指的是在JSP文件中插入的Java代碼,主要用來(lái)進(jìn)行業(yè)務(wù)邏輯處理,通過(guò)<%%>來(lái)定義。JSP腳本在服務(wù)器端按從上到下的順序執(zhí)行。4.1JSP源代碼的構(gòu)成<%!

intn=5;%><%

intmul=1;for(inti=1;i<=n;i++) mul=mul*i;out.print(n+"!=");%><%=mul%>

<%--JSP注釋--%>JSP指令:為JSP服務(wù)器設(shè)計(jì)的,用來(lái)設(shè)置與整個(gè)JSP頁(yè)面相關(guān)屬性的命令。JSP指令在整個(gè)頁(yè)面范圍內(nèi)有效,且不在客戶端產(chǎn)生任何可見輸出。JSP動(dòng)作:是為了簡(jiǎn)化JSP中的業(yè)務(wù)邏輯而簡(jiǎn)化的一組操作,實(shí)際上就是已封裝好的Java腳本,使用它們可以動(dòng)態(tài)的引用文件、使用JavaBean組件、傳遞參數(shù)、請(qǐng)求轉(zhuǎn)發(fā)等。4.1JSP源代碼的構(gòu)成<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><jsp:includepage="index.jsp"></jsp:include>JSP指令:為JSP服務(wù)器設(shè)計(jì)的,用來(lái)設(shè)置與整個(gè)JSP頁(yè)面相關(guān)屬性的命令。JSP指令在整個(gè)頁(yè)面范圍內(nèi)有效,且不在客戶端產(chǎn)生任何可見輸出。JSP動(dòng)作:是為了簡(jiǎn)化JSP中的業(yè)務(wù)邏輯而簡(jiǎn)化的一組操作,實(shí)際上就是已封裝好的Java腳本,使用它們可以動(dòng)態(tài)的引用文件、使用JavaBean組件、傳遞參數(shù)、請(qǐng)求轉(zhuǎn)發(fā)等。4.1JSP源代碼的構(gòu)成<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><jsp:includepage="index.jsp"></jsp:include>JSP指令:為JSP服務(wù)器設(shè)計(jì)的,用來(lái)設(shè)置與整個(gè)JSP頁(yè)面相關(guān)屬性的命令。JSP指令在整個(gè)頁(yè)面范圍內(nèi)有效,且不在客戶端產(chǎn)生任何可見輸出。JSP動(dòng)作:是為了簡(jiǎn)化JSP中的業(yè)務(wù)邏輯而簡(jiǎn)化的一組操作,實(shí)際上就是已封裝好的Java腳本,使用它們可以動(dòng)態(tài)的引用文件、使用JavaBean組件、傳遞參數(shù)、請(qǐng)求轉(zhuǎn)發(fā)等。4.1JSP源代碼的構(gòu)成<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><jsp:includepage="index.jsp"></jsp:include>JSP的注釋:在JSP源文件中出現(xiàn)的、用來(lái)解釋說(shuō)明JSP源代碼的部分。注釋的目的:幫助讀者快速了解這段程序的功能。要求:書寫清楚易懂。類型:HTML注釋JSP注釋Java注釋4.2注釋4.2.1HTML注釋4.2.2JSP注釋4.2.3Java代碼注釋4.2注釋功能:注釋JSP頁(yè)面中Java腳本之外的部分。當(dāng)客戶端通過(guò)瀏覽器請(qǐng)求某JSP頁(yè)面時(shí),該類型的注釋會(huì)和HTML代碼一起從服務(wù)器端發(fā)送到客戶端,雖然注釋的內(nèi)容并不會(huì)顯示在瀏覽器中,但能在源代碼中看到這部分注釋。語(yǔ)法格式:4.2.1HTML注釋<!--HTML注釋-->【例4-2-1】:一個(gè)包含HTML注釋的JSP源文件<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><!--以下內(nèi)容將發(fā)送到客戶端--><html><head><title>HTML注釋演示</title></head><body>本頁(yè)面包含HTML注釋<br>可在源代碼中看到。</body></html>HTML注釋未顯示在客戶端網(wǎng)頁(yè)中HTML注釋顯示在了客戶端源代碼文件中功能:用于注釋Java腳本之外的部分。這種類型的注釋僅對(duì)當(dāng)前JSP源文件有意義,在JSP源文件轉(zhuǎn)譯成后綴為.java的Servlet文件時(shí)會(huì)被忽略,既不會(huì)保留在Servlet文件中,也不會(huì)發(fā)送到客戶端。語(yǔ)法格式:4.2.2JSP注釋<%--JSP注釋--%>【例4-2-2】:一個(gè)包含JSP注釋的JSP源文件<%--當(dāng)前文件是使用Java腳本語(yǔ)言的網(wǎng)頁(yè)文件,使用gb2312字符集--%><%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html>

<head>

<title>JSP注釋演示</title>

</head>

<body>JSP注釋不會(huì)發(fā)送到客戶端

</body></html>JSP注釋未顯示在客戶端網(wǎng)頁(yè)中JSP注釋未顯示在客戶端源代碼文件中JSP注釋未顯示在Servlet文件中功能:用于注釋Java腳本中的內(nèi)容。Java代碼注釋位于Java腳本中,分為單行注釋和多行注釋。這種類型的注釋在JSP源文件轉(zhuǎn)譯成Servlet時(shí)會(huì)保留在Servlet中,但不會(huì)發(fā)送到客戶端。語(yǔ)法格式:4.2.3Java代碼注釋①//單行注釋②/*

多行注釋*/

【例4-2-3】:一個(gè)包含Java注釋的JSP源文件<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><title>Java注釋演示</title></head>

<body>

<%

/*在服務(wù)器端循環(huán)計(jì)算n的階乘*/

intmul=1,n=5;for(inti=1;i<=n;i++)mul=mul*i; out.print(n+"!="+mul);//將結(jié)果輸出到客戶端

%>

</body></html>Java注釋未顯示在客戶端源代碼文件中Java注釋顯示在Servlet文件中Java注釋未顯示在客戶端網(wǎng)頁(yè)中JSP腳本是指在JSP文件中插入的Java代碼,在服務(wù)器端運(yùn)行。JSP腳本元素可以分為三類:JSP腳本段:用于處理JSP頁(yè)面所涉及功能的業(yè)務(wù)邏輯JSP表達(dá)式:用于在JSP頁(yè)面中輸出表達(dá)式的值JSP聲明:用于在JSP頁(yè)面中定義變量和方法4.3腳本元素4.3.1JSP腳本段4.3.2JSP表達(dá)式4.3.3JSP聲明4.3腳本元素JSP腳本段是一段在客戶端請(qǐng)求時(shí)需要先被Web服務(wù)器執(zhí)行的Java代碼,它可以是一段流程控制語(yǔ)句,也可以產(chǎn)生輸出,并把輸出合并在已有的靜態(tài)代碼中一起發(fā)送到客戶。語(yǔ)法格式:4.3.1JSP腳本段<%合法的java代碼

%>【例4-3-1】:使用一段JSP腳本段輸出一個(gè)多行表格<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html>

<head><title>JSP的腳本段</title></head>

<body>

<tableborder="1"style="width:100;text-align:center;">

<% Stringcolor; for(inti=1;i<=4;i++){ if(i%2==0)color="#FF9600"; elsecolor="#00EE00"; out.println("<trbgcolor=\""+color+"\"><td>"+i+"</td></tr>"); }

%>

</table></body></html>在一個(gè)JSP頁(yè)面中我們可以編寫任意數(shù)量的腳本段,這些代碼片段可以根據(jù)需要,夾插在HTML標(biāo)簽或其他的JSP元素中,當(dāng)某一JSP源文件收到到客戶端請(qǐng)求時(shí),腳本段就會(huì)在服務(wù)器端按順序從上到下依次自動(dòng)執(zhí)行。4.3.1JSP腳本段【例4-3-2】:使用多段JSP腳本段輸出一個(gè)多行表格<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html>

<head><title>JSP的腳本段</title></head>

<body>

<tableborder="1"style="width:100;text-align:center;">

<% Stringcolor; for(inti=1;i<=4;i++){ if(i%2==0)color="#FF9600"; elsecolor="#00EE00";%>

<trbgcolor="<%out.print(color);%>">

<td><%out.print(i);%></td>

</tr>

<% }%>

</table>

</body></html>注意:JSP腳本段中只能使用out.print()系列方法來(lái)向客戶端輸出信息,如果使用System.out.print()系列方法,則輸出的信息只能顯示在服務(wù)器端的控制臺(tái)窗口中。JSP腳本段中只能是Java語(yǔ)句的集合,不能包含完整的方法或類。4.3.1JSP腳本段功能:是將該表達(dá)式的值作為一個(gè)字符串輸出到客戶端。語(yǔ)法格式:注意:由于JSP表達(dá)式不是完整的java語(yǔ)句,所以JSP表達(dá)式中不能包含語(yǔ)句結(jié)束符“;”,更不能在一個(gè)JSP表達(dá)式中包含多條Java語(yǔ)句。4.3.2JSP表達(dá)式<%=Java表達(dá)式%><%out.print(Java表達(dá)式);

%>【例4-3-3】:使用JSP表達(dá)式輸出動(dòng)態(tài)信息<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html>

<head><title>JSP的腳本段</title></head>

<body>

<tableborder="1"style="width:100;text-align:center;">

<% Stringcolor; for(inti=1;i<=4;i++){ if(i%2==0)color="#FF9600"; elsecolor="#00EE00";

%>

<trbgcolor="<%=color%>"><td><%=i%></td></tr>

<% }%>

</table>

</body></html>功能:用來(lái)定義程序中使用的實(shí)體,這些實(shí)體可以是變量、方法和類。語(yǔ)法格式:示例:4.3.3JSP聲明<%!

變量/方法/類的聲明

%><%!Stringstr="歡迎";%><%!

public

intadd(intx,inty){ returnx+y;}%><%!

public

class

Student{

Stringname;

Student(Stringname){

this.name=name;

}}%>當(dāng)JSP源文件被翻譯成Servlet時(shí),JSP聲明中的變量、方法和類將成為Servlet類的內(nèi)部成員,特別是JSP聲明中的變量和方法相當(dāng)于此頁(yè)面文件中的全局變量和方法,因此在所有運(yùn)行于該JSP程序的線程中這些聲明的變量和方法都有效,在服務(wù)器被關(guān)閉時(shí)才會(huì)釋放。注意:JSP聲明中因?yàn)椴荒苁褂脙?nèi)置對(duì)象,因此,無(wú)論是聲明方法還是類都不能使用out對(duì)象調(diào)用print()系列方法做輸出操作。4.3.3JSP聲明【例4-3-4】:在JSP聲明中聲明變量和在JSP腳本段中聲明變量<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><title>全局變量和局部變量</title></head><body><%!intn=0;%><%intm=0;n++;m++;out.print("第"+n+"次加載頁(yè)面!");%><br><br>m=<%=m%></body></html>全局變量局部變量功能:在JSP文件中設(shè)置頁(yè)面的屬性,不產(chǎn)生輸出,在整個(gè)頁(yè)面范圍內(nèi)有效。語(yǔ)法格式:注意:<%@與%>都是完整標(biāo)記,中間不能添加空格指令名和屬性名大小寫是敏感的4.4指令元素<%@指令名

屬性1="值1"……屬性n="值n"%>4.4.1page指令4.4.2include指令4.4.3taglib指令4.4指令元素功能:用于定義整個(gè)JSP頁(yè)面的相關(guān)屬性,這些屬性在JSP文件被Web服務(wù)器轉(zhuǎn)譯成Servlet文件時(shí)會(huì)轉(zhuǎn)換為相應(yīng)的Java程序代碼。語(yǔ)法格式:示例:4.4.1page指令<%@page屬性1="值1"……屬性n="值n"%><%@pagelanguage="java"contentType="text/html;charset=gb2312"%>常用屬性4.4.1page指令屬性功能屬性功能language指定JSP使用的腳本語(yǔ)言info定義JSP頁(yè)面的描述信息errorPage指定當(dāng)前頁(yè)面運(yùn)行異常時(shí)調(diào)用的頁(yè)面isErrorPage說(shuō)明當(dāng)前頁(yè)面是否為其他頁(yè)面的異常處理頁(yè)面。import導(dǎo)入使用的Java包isELIgnored指定是否忽略EL表達(dá)式session指定在當(dāng)前頁(yè)中是否允許session操作buffer指定處理頁(yè)面輸出內(nèi)容時(shí)的緩沖區(qū)大小contentType設(shè)置返回瀏覽器網(wǎng)頁(yè)的內(nèi)容類型和字符編碼格式autoFlush指定當(dāng)緩沖區(qū)滿時(shí)是否自動(dòng)清空pageEncoding指定JSP頁(yè)面的字符編碼isThreadSafe指定是否線程安全說(shuō)明:使用page指令時(shí),并非一定要設(shè)置所有屬性的值,而是根據(jù)需要,選擇設(shè)置其中一個(gè)或多個(gè)屬性的值,對(duì)于沒(méi)有顯式設(shè)置值的屬性,其值自動(dòng)設(shè)置為系統(tǒng)默認(rèn)值。一個(gè)JSP頁(yè)面可以只包含一條page指令,在這條page指令中包含所有要設(shè)置的屬性及其值,也可以將這些屬性及其值分散在多條page指令中。示例:4.4.1page指令<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><%@pagelanguage="java"%><%@pagecontentType="text/html;charset=gb2312"%>作用:用于設(shè)置JSP腳本會(huì)用到的包和類的路徑。JSP文件會(huì)默認(rèn)載入javax.servlet.jsp.*、javax.servlet.http.*、javax.servlet.*、java.lang.*這4個(gè)包,如果JSP腳本用到的類不在這4個(gè)包中,則必須在import屬性中設(shè)置它們的訪問(wèn)路徑,否則會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。4.4.1page指令

1、import屬性語(yǔ)法錯(cuò)誤,當(dāng)前頁(yè)面找不到Date類【例4-4-1】:在JSP文件中導(dǎo)入指定類<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><%@pageimport="java.util.Date"%><html><head><title>顯示服務(wù)器當(dāng)前時(shí)間</title></head><body>現(xiàn)在時(shí)間是:<%=newDate().toLocaleString()%></body></html>導(dǎo)入Date類說(shuō)明:import屬性是page指令中唯一可以多次出現(xiàn)的屬性,其他屬性若多次出現(xiàn)則會(huì)編譯錯(cuò)誤。4.4.1page指令

1、import屬性<%@pageimport="java.text.*,java.util.Date"%><%@pageimport="java.util.Date"import="java.text.*"%><%@pageimport="java.util.Date"%><%@pageimport="java.text.*"%>作用:用于定義JSP源文件中代碼的編碼格式,默認(rèn)值為"ISO-8859-1"。支持中文的編碼格式有"gb2312"、"GBK"、"UTF-8"等。示例:4.4.1page指令

2、pageEncoding屬性<%@pagepageEncoding="gb2312"%>功能:用于指定JSP頁(yè)面的MIME類型及字符編碼,瀏覽器將根據(jù)此屬性值解析發(fā)送到客戶端的信息。語(yǔ)法格式:

MIME類型:text/html(默認(rèn))、image/gif等字符編碼:ISO-8859-1(默認(rèn))、UTF-8等示例:4.4.1page指令

3、contentType屬性<%@pagecontentType="MIME類型;charset=字符編碼"%><%@pagecontentType="text/html;charset=gb2312"%>注意:contentType屬性與pageEncoding屬性雖然都涉及到字符編碼集的設(shè)置,但這兩個(gè)屬性作用的階段不同,pageEncoding屬性作用于JSP源文件轉(zhuǎn)譯為Servlet文件階段,而contentType屬性作用于服務(wù)器端將JSP文件處理結(jié)果發(fā)送到客戶端這一階段。實(shí)際上,這兩個(gè)屬性值只要任意設(shè)置了其中一個(gè)的字符編碼集,另一個(gè)即會(huì)與此保持一致。4.4.1page指令

3、contentType屬性作用:用于指定當(dāng)前頁(yè)面出現(xiàn)異常時(shí)要跳轉(zhuǎn)的頁(yè)面,其值為異常處理頁(yè)面的URL。示例:4.4.1page指令

4、errorPage屬性<%@pagecontentType="text/html;charset=UTF-8"errorPage="error.jsp"%>作用:設(shè)置當(dāng)前JSP文件是否為另一個(gè)JSP文件的錯(cuò)誤處理頁(yè),其值為布爾類型,默認(rèn)值為false,表示當(dāng)前JSP文件不是其他JSP文件的錯(cuò)誤處理頁(yè)。說(shuō)明:該屬性是否設(shè)置為true不影響當(dāng)前錯(cuò)誤處理頁(yè)面的執(zhí)行,但設(shè)置為true后,服務(wù)器會(huì)根據(jù)原頁(yè)面錯(cuò)誤類型將相應(yīng)http狀態(tài)碼返回到客戶端,否則將返回執(zhí)行正常的狀態(tài)碼。4.4.1page指令

5、isErrorPage屬性【例4-4-2】:為JSP文件設(shè)置異常處理頁(yè)<%@pagecontentType="text/html;charset=UTF-8"errorPage="error.jsp"%><html><head><title>page指令:errorPage屬性</title></head><body><%!

int[]a={1,2,3};%>

第3個(gè)數(shù)組元素:<%=a[3]%></body></html>PDErrorPage.jsp<%@pagecontentType="text/html;charset=UTF-8"isErrorPage="true"%><html><head><title>異常信息顯示</title></head><body>頁(yè)面運(yùn)行出錯(cuò)!</body></html>error.jsp地址欄仍顯示原頁(yè)面地址而非錯(cuò)誤處理頁(yè)地址錯(cuò)誤處理頁(yè)內(nèi)容注意:如果使用IE瀏覽器訪問(wèn)JSP文件發(fā)生異常,有時(shí)會(huì)顯示上圖所示的IE默認(rèn)錯(cuò)誤界面而非自定義的錯(cuò)誤處理頁(yè)面,此時(shí),只需要在如右圖所示的Internet屬性窗口(通過(guò)命令“Internet選項(xiàng)”→“高級(jí)”打開)中將“顯示友好HTTP錯(cuò)誤消息”選項(xiàng)設(shè)置為不選中即可解決。4.4.1page指令

5、isErrorPage屬性作用:用于指定JSP頁(yè)面的腳本語(yǔ)言,默認(rèn)值為java。說(shuō)明:目前JSP支持的腳本語(yǔ)言只有java,因此若將該屬性的值設(shè)置為其他語(yǔ)言,編譯時(shí)會(huì)出現(xiàn)異常。4.4.1page指令

6、language屬性作用:用來(lái)向當(dāng)前JSP文件指定位置插入另一個(gè)文件,被插入的文件可以是一個(gè)HTML的靜態(tài)文件,也可以是一個(gè)JSP文件。語(yǔ)法格式:4.4.2include指令<%@includefile="被包含文件的URL"%>【例4-4-3】:在JSP文件中使用include指令插入其它文件<%@pagecontentType="text/html;charset=UTF-8"%><html><head><title>include指令示例</title></head><body><%@includefile="head.jsp"%><h1>這是主體內(nèi)容</h1><%@includefile="foot.jsp"%></body></html>content.jsp<%@pagecontentType="text/html;charset=UTF-8"%><%out.print("<h2>這是頭部</h2>");%>head.jsp<%@pagecontentType="text/html;charset=UTF-8"%><%out.print("<h2>這是尾部</h2>");%>foot.jsp【例4-4-3】中content.jsp的等價(jià)形式content.jsp<%@pagecontentType="text/html;charset=UTF-8"%><html><head><title>include指令示例</title></head><body><%@pagecontentType="text/html;charset=UTF-8"%><%out.print("<h2>這是頭部</h2>");%><h1>這是主體內(nèi)容</h1><%@pagecontentType="text/html;charset=UTF-8"%><%out.print("<h2>這是尾部</h2>");%></body></html>head.jsp的代碼foot.jsp的代碼說(shuō)明:include指令在編譯時(shí)將對(duì)于文件包含到本頁(yè)面,等價(jià)于代碼復(fù)制。include指令的缺點(diǎn):在編寫主體文件和插入文件時(shí)需要彼此兼顧,否則會(huì)發(fā)生相互干擾甚至是語(yǔ)法沖突。4.4.2include指令注意:使用include指令時(shí),屬性file的值必須是字符串常量而不能采用變量的形式。4.4.2include指令<%Stringurl="head.jsp";%><%@includefile="<%=url%>"%><%--語(yǔ)法錯(cuò)誤--%>功能:在JSP文件中使用JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)時(shí),用來(lái)導(dǎo)入需要使用的標(biāo)簽庫(kù)并定義該標(biāo)簽庫(kù)的前綴。語(yǔ)法格式:4.4.3taglib指令<%@tagliburi="標(biāo)簽庫(kù)的URI"prefix="標(biāo)簽前綴"%>JSTL推薦前綴URI范例核心標(biāo)簽庫(kù)chttp///jsp/jstl/core<c:out>I18N標(biāo)簽庫(kù)fmthttp///jsp/jstl/<fmt:formatDate>SQL標(biāo)簽庫(kù)sqlhttp///jsp/jstl/sql<sql:query>XML標(biāo)簽庫(kù)xhttp///jsp/jstl/xml<x:forBach>函數(shù)標(biāo)簽庫(kù)fnhttp///jsp/jstl/function<fn:split>【例4-4-4】:在JSP文件中使用JSTL輸出信息<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><%--導(dǎo)入JSP的核心標(biāo)簽庫(kù),并為其起別名c--%><%@tagliburi="/jsp/jstl/core"prefix="c"%><html><head><title>taglib指令示例</title></head><body><c:outvalue="taglib指令示例"/><%--使用JSTL核心標(biāo)簽庫(kù)out標(biāo)簽輸出指定信息--%></body></html>注意:使用JSTL必須在項(xiàng)目文件夾\WEB-INF\lib中放入standard.jar和jstl.jar文件,否則會(huì)因無(wú)法識(shí)別標(biāo)簽庫(kù)和JSTL中的標(biāo)簽而導(dǎo)致語(yǔ)法錯(cuò)誤。4.4.3taglib指令JSP的動(dòng)作相當(dāng)于預(yù)定義的Java腳本,主要為請(qǐng)求處理階段提供信息,能夠影響輸出流和對(duì)象的創(chuàng)建、使用、修改等,它按照XML語(yǔ)法進(jìn)行書寫,利用標(biāo)簽來(lái)控制Servlet引擎的行為。優(yōu)點(diǎn):簡(jiǎn)化常用操作,以提高代碼的可重用性。語(yǔ)法格式:4.5動(dòng)作元素<jsp:動(dòng)作名

屬性1="值1"

…屬性n=

"值n"

/><jsp:動(dòng)作名屬性1="值1"

…>子標(biāo)簽/子內(nèi)容

</jsp:動(dòng)作名>JSP2.0中的標(biāo)準(zhǔn)動(dòng)作4.5動(dòng)作元素類型動(dòng)作名與存取JavaBean有關(guān)的動(dòng)作<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>基本動(dòng)作<jsp:include>、<jsp:forward>、<jsp:param>、<jsp:plugin>、<jsp:params>、<jsp:fallback>與JSPDocument有關(guān)的動(dòng)作<jsp:root>、<jsp:declaration>、<jsp:scriptlet>、<jsp:expression>、<jsp:text>、<jsp:output>動(dòng)態(tài)生成XML元素標(biāo)簽值的動(dòng)作<jsp:attribute>、<jsp:body>、<jsp:element>用于TagFile的動(dòng)作<jsp:invoke>、<jsp:dobody>4.5.1JavaBean的編寫4.5.2useBean動(dòng)作4.5.3setProperty動(dòng)作4.5.4getProperty動(dòng)作4.5.5include動(dòng)作4.5.6forward動(dòng)作4.5.7param動(dòng)作4.5動(dòng)作元素JavaBean就是一種Java的組件技術(shù),它將Java代碼與HTML代碼分離,單獨(dú)封裝成一個(gè)處理某種業(yè)務(wù)邏輯的類,然后在JSP頁(yè)面中調(diào)用此類。JavaBean的作用:降低HTML代碼與Java代碼的耦合度,簡(jiǎn)化JSP頁(yè)面,提高Java代碼的重用性和靈活性。在JavaBean中,可以將控制邏輯、值、數(shù)據(jù)庫(kù)訪問(wèn)和其他對(duì)象進(jìn)行封裝,并且其可以被其他應(yīng)用來(lái)調(diào)用。4.5.1JavaBean的編寫JavaBean包括兩種類型:廣義的JavaBean(工具JavaBean):指普通的Java類,通常用于封裝業(yè)務(wù)邏輯、數(shù)據(jù)操作等。狹義的JavaBean(值JavaBean):指嚴(yán)格按照J(rèn)avaBean規(guī)范編寫的Java類,通常用于封裝表單數(shù)據(jù),作為信息的容器。4.5.1JavaBean的編寫public

classTools{publicStringchange(Stringstr){str=str.replace("<","<");str=str.replace(">",">");return

str;}}值JavaBean的編寫一般要滿足以下要求:必須是公共類。類中必須包含一個(gè)公共的無(wú)參構(gòu)造方法,可顯式寫在類體中,也可由系統(tǒng)默認(rèn)生成。類的所有屬性都是私有的。必須定義一組公共的存取方法,get開頭的方法完成對(duì)屬性的讀,而set開頭的方法完成對(duì)屬性的寫。4.5.1JavaBean的編寫【例4-5-1】:一個(gè)用于存放用戶信息的值JavaBeanpackagebean;publicclassUser{

privateStringname;

privateStringpassword;

publicStringgetName(){ returnname;}publicvoidsetName(Stringname){ this.name=name;}publicStringgetPassword(){ returnpassword;}publicvoidsetPassword(Stringpassword){

this.password=password;}}公共類私有屬性一組讀/寫屬性的getter/setter公有方法系統(tǒng)自動(dòng)生成默認(rèn)的無(wú)參構(gòu)造方法注意:get/set方法的命名必須規(guī)范,get/set之后應(yīng)跟上要讀寫的屬性名,且屬性名首字母必須大寫。若屬性類型為boolean,則讀屬性時(shí)要將get方法改為is方法。4.5.1JavaBean的編寫publicclassUser{ private

boolean

vip;privateStringname;publicStringgetName(){returnname;}public

boolean

isVip(){return

vip;}……}step1:右鍵單擊項(xiàng)目名稱,在快捷菜單中選擇“New”→“Class”,打開“創(chuàng)建Java類”窗口。在Eclipse中創(chuàng)建Java源文件的過(guò)程右擊項(xiàng)目名稱step2:在“創(chuàng)建Java類”窗口中輸入此JavaBean文件所在包的名稱和JavaBean類的名稱,保持界面中其他信息不變,點(diǎn)擊【Finish】按鈕。在Eclipse中創(chuàng)建Java源文件的過(guò)程輸入包名,

JavaBean必須放在非默認(rèn)包中輸入JavaBean類名功能:創(chuàng)建一個(gè)JavaBean實(shí)例。語(yǔ)法格式:示例:4.5.2useBean動(dòng)作<jsp:useBeanid="對(duì)象名"class="類名"scope="范圍類型"type="對(duì)象類型"/><jsp:useBeanid="user"class="bean.User"scope="page"type="bean.User"/><jsp:useBeanid="user"class="bean.User"/>功能:為JavaBean對(duì)象的屬性賦值。語(yǔ)法格式:4.5.3setProperty動(dòng)作<jsp:setPropertyname="對(duì)象名"property="屬性名"value="屬性值"/><jsp:setPropertyname="對(duì)象名"property="屬性名"param="參數(shù)名"/><jsp:setPropertyname="對(duì)象名"property="屬性名"/><jsp:setPropertyname="對(duì)象名"property="*"/>【例4-5-2】:使用JSP動(dòng)作創(chuàng)建對(duì)象并使用setProperty動(dòng)作的第一種格式實(shí)現(xiàn)賦值處理<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><html><head><title>注冊(cè)處理</title></head><body><%--創(chuàng)建User類對(duì)象user--%><jsp:useBeanid="user"class="bean.User"/>

<%--設(shè)置user對(duì)象的name屬性值為字符串”Lily”--%><jsp:setPropertyname="user"property="name"value="Lily"/><%--設(shè)置user對(duì)象的password屬性值為字符串”123”--%><jsp:setPropertyname="user"property="password"value="123"/>

用戶名:<%=user.getName()%><br>密碼:<%=user.getPassword()%></body></html>registerHandle1.jsp【例4-5-3】:使用setProperty動(dòng)作的第二種格式提取請(qǐng)求參數(shù)并實(shí)現(xiàn)賦值處理<html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>用戶注冊(cè)</title></head><body>

<formmethod="post"action="registerHandle2.jsp">

名稱:<inputtype="text"name="name"><br>

密碼:<inputtype="password"name="password"><br>

<inputtype="submit"value="提交">

<inputtype="reset"value="重置">

</form></body></html>register.html【例4-5-3】:使用setProperty動(dòng)作的第二種格式提取請(qǐng)求參數(shù)并實(shí)現(xiàn)賦值處理<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><html><head><title>注冊(cè)處理</title></head><body><jsp:useBeanid="user"class="bean.User"/>

<%--用傳入的請(qǐng)求參數(shù)name的值為user對(duì)象的name屬性賦值--%><jsp:setPropertyname="user"property="name"param="name"/><%--用傳入的請(qǐng)求參數(shù)password的值為user對(duì)象的password屬性賦值--%><jsp:setPropertyname="user"property="password"param="password"/>

用戶名:<%=user.getName()%><br>密碼:<%=user.getPassword()%></body></html>registerHandle2.jsp【例4-5-4】:使用setProperty動(dòng)作的第三種格式提取請(qǐng)求參數(shù)并實(shí)現(xiàn)賦值處理<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><html><head><title>注冊(cè)處理</title></head><body><jsp:useBeanid="user"class="bean.User"/>

<%--用傳入的請(qǐng)求參數(shù)name的值為user對(duì)象的name屬性賦值--%><jsp:setPropertyname="user"property="name"/><%--用傳入的請(qǐng)求參數(shù)password的值為user對(duì)象的password屬性賦值--%><jsp:setPropertyname="user"property="password"/>

用戶名:<%=user.getName()%><br>密碼:<%=user.getPassword()%></body></html>registerHandle3.jsp【例4-5-5】:使用setProperty動(dòng)作的第四種格式提取請(qǐng)求參數(shù)并實(shí)現(xiàn)賦值處理<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><html><head><title>注冊(cè)處理</title></head><body><jsp:useBeanid="user"class="bean.User"/>

<%--用傳入的請(qǐng)求參數(shù)的值為user對(duì)象的所有同名屬性賦值--%><jsp:setPropertyname="user"property="*"/>

用戶名:<%=user.getName()%><br>密碼:<%=user.getPassword()%></body></html>registerHandle4.jsp功能:讀取JavaBean對(duì)象的指定屬性并輸出到客戶端。語(yǔ)法格式:4.5.4getProperty動(dòng)作<jsp:getPropertyname="對(duì)象名"property="屬性名"/>【例4-5-6】:使用getProperty動(dòng)作讀取并輸出JavaBean對(duì)象屬性的值<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><html><head><title>注冊(cè)處理</title></head><body><jsp:useBeanid="user"class="bean.User"/><jsp:setPropertyname="user"property="*"/>

<%--讀取并輸出user對(duì)象name屬性的值--%>用戶名:<jsp:getPropertyname="user"property="name"/><br><%--讀取并輸出user對(duì)象password屬性的值--%>密碼:<jsp:getPropertyname="user"property="password"/></body></html>registerHandle5.jsp功能:在JSP文件中動(dòng)態(tài)地包含其他文件。語(yǔ)法格式:示例:4.5.5include動(dòng)作<jsp:includepage="資源文件的URL"flush="true|false"/><jsp:includepage="資源文件的URL"flush="true|false">……</jsp:include><jsp:includepage="head.jsp"flush="false"/><jsp:includepage="head.jsp"/>【例4-5-7】:在JSP文件中使用include動(dòng)作插入其它文件<%@pagecontentType="text/html;charset=UTF-8"%><html><head><title>include動(dòng)作示例</title></head><body><jsp:includepage="head.jsp"/><h1>這是主體內(nèi)容</h1><jsp:includepage="foot.jsp"/></body></html>includeAction.jsp<%@pagecontentType="text/html;charset=UTF-8"%><%out.print("<h2>這是頭部</h2>");%>head.jsp<%@pagecontentType="text/html;charset=UTF-8"%><%out.print("<h2>這是尾部</h2>");%>foot.jsp區(qū)別include指令include動(dòng)作包含時(shí)間主頁(yè)面編譯時(shí)主頁(yè)面運(yùn)行時(shí)包含內(nèi)容資源文件的實(shí)際內(nèi)容資源文件的執(zhí)行結(jié)果編譯的Servlet主頁(yè)與資源文件編譯成1個(gè)Servlet主頁(yè)與資源文件分別編譯成各自獨(dú)立的多個(gè)Servlet編譯時(shí)間較慢,每次編譯當(dāng)前頁(yè)面,資源文件都需被編譯較快,每次編譯當(dāng)前頁(yè)面,資源文件無(wú)需再次編譯執(zhí)行時(shí)間較快,每次運(yùn)行當(dāng)前頁(yè)面,資源文件無(wú)需再次解析較慢,每次運(yùn)行當(dāng)前頁(yè)面,資源文件都需被解析是否可影響主頁(yè)可以不可以資源文件更改時(shí)是否需要更改主頁(yè)需要不需要靈活性資源文件名稱固定資源文件名稱可以動(dòng)態(tài)指定4.5.5include動(dòng)作結(jié)論1:當(dāng)我們希望在被包含文件中編寫的代碼對(duì)主文件產(chǎn)生直接影響時(shí),需要選擇include指令。4.5.5include動(dòng)作結(jié)論2:如果被包含文件URL在代碼編寫階段不能確定,而必須在主文件運(yùn)行時(shí)才能確定,則需要選擇include動(dòng)作。結(jié)論3:當(dāng)兩種方式都能達(dá)到同樣效果時(shí),最好選擇維護(hù)代價(jià)更小的include動(dòng)作。4.5.5include動(dòng)作功能:將客戶請(qǐng)求轉(zhuǎn)發(fā)到新文件,即停止執(zhí)行當(dāng)前的JSP文件,轉(zhuǎn)而執(zhí)行動(dòng)作指定的新文件,并最后將新文件的執(zhí)行結(jié)果返回客戶端。語(yǔ)法格式:4.5.6forward動(dòng)作<jsp:forwardpage="跳轉(zhuǎn)頁(yè)的URL"/><jsp:forwardpage="跳轉(zhuǎn)頁(yè)的URL">……</jsp:forward>【例4-5-8】:在JSP文件中使用forward動(dòng)作進(jìn)行頁(yè)面跳轉(zhuǎn)login.html<html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>登錄</title></head><body>

<formmethod="post"action="loginHandle.jsp">

名稱:<inputtype="text"name="name"><br>

密碼:<inputtype="password"name="password"><br>

<inputtype="submit"value="確定

溫馨提示

  • 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)論