第4章JSP基礎(chǔ)知識(shí)_第1頁(yè)
第4章JSP基礎(chǔ)知識(shí)_第2頁(yè)
第4章JSP基礎(chǔ)知識(shí)_第3頁(yè)
第4章JSP基礎(chǔ)知識(shí)_第4頁(yè)
第4章JSP基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩110頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2023年1月31日1

|海有|壁無(wú)|一切為了學(xué)生。

|納容|立欲|為了學(xué)生一切。

|百乃|千則|豈能事事如意,但求無(wú)愧于心。

|川大|仞剛|把微笑留給世界,讓世界因你微笑!2023年1月31日2溫故而知新!2023年1月31日3第3章HTML與CSS簡(jiǎn)介

3.1HTML頁(yè)面的基本構(gòu)成3.2HTML常用標(biāo)簽

3.2.1列表標(biāo)簽及其應(yīng)用實(shí)例

3.2.2多媒體和超鏈接標(biāo)簽及其應(yīng)用實(shí)例

3.2.3表格標(biāo)簽及其應(yīng)用實(shí)例

3.2.4表單標(biāo)簽及其應(yīng)用實(shí)例

3.2.5框架標(biāo)簽及其應(yīng)用實(shí)例3.3CSS基礎(chǔ)知識(shí)

3.3.1CSS樣式表定義

3.3.2HTML中加入CSS的方法及其應(yīng)用實(shí)例

3.3.3CSS的優(yōu)先級(jí)及其應(yīng)用實(shí)例

3.3.4CSS基本屬性及其應(yīng)用實(shí)例3.4常見(jiàn)問(wèn)題及解決方案

2023年1月31日4第4章JSP基礎(chǔ)知識(shí)4.1JSP頁(yè)面的基本結(jié)構(gòu)4.2JSP三種常用注釋4.3JSP常用腳本元素4.4JSP常用指令4.5JSP常用動(dòng)作4.6常見(jiàn)問(wèn)題及解決方案

2023年1月31日54.1JSP頁(yè)面的基本結(jié)構(gòu)2023年1月31日6【例4-1】頁(yè)面結(jié)構(gòu)實(shí)例(pageStructure.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>JSP頁(yè)面基本結(jié)構(gòu)實(shí)例</title></head><body><%!intsum=0;intx=1;%>2023年1月31日7<%while(x<=10){sum+=x;++x;}%><p>1加到10的結(jié)果是:<%=sum%></p><p>現(xiàn)在的時(shí)間是:<%=newjava.util.Date()%></p></body></html>2023年1月31日8第4章JSP基礎(chǔ)知識(shí)4.1JSP頁(yè)面的基本結(jié)構(gòu)4.2JSP三種常用注釋4.3JSP常用腳本元素4.4JSP常用指令4.5JSP常用動(dòng)作4.6常見(jiàn)問(wèn)題及解決方案

2023年1月31日94.2JSP三種常用注釋4.2.1隱藏注釋及其應(yīng)用實(shí)例4.2.2HTML注釋及其應(yīng)用實(shí)例4.2.3Java注釋及其應(yīng)用實(shí)例2023年1月31日10JSP程序的注釋有3種類(lèi)型:隱藏注釋

HTML注釋

Java語(yǔ)言注釋2023年1月31日11隱藏注釋也是JSP的標(biāo)準(zhǔn)注釋?zhuān)瑢?xiě)在JSP程序中,在發(fā)布網(wǎng)頁(yè)時(shí)完全被忽略,不發(fā)給客戶(hù),當(dāng)希望隱藏JSP程序的注釋時(shí)是很有用的。其語(yǔ)法格式為:<%--comment--%>comment為要添加的文本注釋內(nèi)容。2023年1月31日12【例4-2】隱藏注釋實(shí)例(hideNotes.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>隱藏注釋實(shí)例</title></head><body><h3>本頁(yè)面是演示隱藏注釋的功能,在JSP頁(yè)面中的隱藏注釋不會(huì)發(fā)布到客戶(hù)端!</h3><hr><%--這一行注釋在發(fā)布網(wǎng)頁(yè)時(shí)不會(huì)被看到--%> <hr></body></html>

2023年1月31日132023年1月31日144.2JSP三種常用注釋4.2.1隱藏注釋及其應(yīng)用實(shí)例4.2.2HTML注釋及其應(yīng)用實(shí)例4.2.3Java注釋及其應(yīng)用實(shí)例2023年1月31日154.2.2HTML注釋及其應(yīng)用實(shí)例

發(fā)布網(wǎng)頁(yè)時(shí)可以在瀏覽器源文件窗口中看到HTML注釋?zhuān)谶@種注釋中也可以使用JSP的表達(dá)式。其語(yǔ)法格式為:<!--comment[<%=expression%>]-->其中comment可以是文字說(shuō)明,expression為JSP表達(dá)式。2023年1月31日16【例4-3】HTML注釋實(shí)例(HTMLNotes.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>HTML注釋實(shí)例</title></head><body><h3>本頁(yè)面是演示HTML注釋的功能,在JSP頁(yè)面中的HTML注釋會(huì)在客戶(hù)端源文件中看到,但是不會(huì)發(fā)布到頁(yè)面上!</h3><hr><!--這一行注釋在發(fā)布網(wǎng)頁(yè)時(shí)不會(huì)被看到的,在源文件中可以看到<%=newjava.util.Date()%>--><hr></body></html>2023年1月31日172023年1月31日184.2JSP三種常用注釋4.2.1隱藏注釋及其應(yīng)用實(shí)例4.2.2HTML注釋及其應(yīng)用實(shí)例4.2.3Java注釋及其應(yīng)用實(shí)例2023年1月31日194.2.3Java注釋及其應(yīng)用實(shí)例

在JSP程序中,也可以遵循Java語(yǔ)言本身的注釋規(guī)則對(duì)代碼進(jìn)行注釋?zhuān)@樣的注釋和隱藏注釋相似,在發(fā)布網(wǎng)頁(yè)時(shí)完全忽略,在瀏覽器的源文件窗口中看不到。其語(yǔ)法格式為:<%/*comment*/%>其中comment為要添加的注釋文本。2023年1月31日20【例4-4】Java注釋實(shí)例(JavaNotes.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Java注釋實(shí)例</title></head><body><h3>本頁(yè)面是演示Java注釋的功能,在JSP頁(yè)面中的Java注釋不會(huì)發(fā)布到客戶(hù)端!</h3><hr><%//這一行注釋在發(fā)布網(wǎng)頁(yè)時(shí)不會(huì)被看到的,在源文件中也看不到%><hr></body></html>2023年1月31日212023年1月31日22第4章JSP基礎(chǔ)知識(shí)4.1JSP頁(yè)面的基本結(jié)構(gòu)4.2JSP三種常用注釋4.3JSP常用腳本元素4.4JSP常用指令4.5JSP常用動(dòng)作4.6常見(jiàn)問(wèn)題及解決方案

2023年1月31日234.3JSP常用腳本元素4.3.1變量和方法的聲明及其應(yīng)用實(shí)例4.3.2表達(dá)式和腳本及其應(yīng)用實(shí)例

2023年1月31日244.3.1變量和方法的聲明及其應(yīng)用實(shí)例

在JSP頁(yè)面中可以聲明一個(gè)或者多個(gè)合法的變量和方法,聲明后的變量和方法可以在本JSP頁(yè)面的任何位置使用,并將在JSP頁(yè)面初始化時(shí)被初始化。JSP聲明的語(yǔ)法格式如下:<%!declaration;[declaration;]...%>其中declaration為聲明的變量、方法的名稱(chēng)和內(nèi)容。2023年1月31日25在聲明變量和方法時(shí),需要注意以下幾點(diǎn):聲明以“<%!”開(kāi)頭,以“%>”結(jié)尾。變量聲明必須以";"結(jié)尾。變量和方法的命名規(guī)則與Java中的變量和方法的命名規(guī)則相同??梢灾苯邮褂迷?lt;%@page%>中被包含進(jìn)來(lái)的已經(jīng)聲明的變量和方法,不需要對(duì)它們重新進(jìn)行聲明。一個(gè)聲明僅在一個(gè)頁(yè)面中有效。如果想每個(gè)頁(yè)面都用到一些聲明,最好把它們寫(xiě)成一個(gè)單獨(dú)的文件,然后用<%@include%>或<jsp:include>元素包含進(jìn)來(lái)。2023年1月31日26例如:

<%!inti=0;%><%!intx,y,z,a,b,c,sum;%><%!Stringstr=“中國(guó)加油!我愛(ài)我的祖國(guó)”;%><%!Circlea=newcircle(1.0);%><%!Dateda=newDate();%>2023年1月31日27【例4-5】變量和方法的聲明實(shí)例(declare.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>變量和方法的聲明實(shí)例</title></head><body><%!Stringstr="JSP技術(shù)帶你走進(jìn)動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)時(shí)代!";//變量聲明

%><%!Stringprint(){//方法聲明

returnstr;}%><%=print()%></body></html>2023年1月31日28運(yùn)行效果2023年1月31日294.3JSP常用腳本元素4.3.1變量和方法的聲明及其應(yīng)用實(shí)例4.3.2表達(dá)式和腳本及其應(yīng)用實(shí)例

2023年1月31日304.3.2表達(dá)式和腳本及其應(yīng)用實(shí)例1.表達(dá)式及其應(yīng)用實(shí)例

JSP中的表達(dá)式可以將某個(gè)計(jì)算結(jié)果轉(zhuǎn)換成一個(gè)字符串并直接在網(wǎng)頁(yè)上輸出。表達(dá)式的語(yǔ)法格式如下:

<%=expression%>。JSP的表達(dá)式中沒(méi)有分號(hào),只有在加引號(hào)的字符串部分才使用分號(hào)。注意:在“<%”與“=”之間不要有空格。2023年1月31日31JSP表達(dá)式常用在以下幾種情況:向頁(yè)面輸出內(nèi)容。生成動(dòng)態(tài)的鏈接地址。動(dòng)態(tài)指定Form表單處理頁(yè)面。2023年1月31日32【例4-6】表達(dá)式實(shí)例(expression.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>表達(dá)式實(shí)例</title></head><body><%!Stringname="清華大學(xué)出版社";StringurlAddress=“http://";Stringpage="";%><br>

用戶(hù)名:<%=name%><br><ahref="<%=urlAddress%>">清華大學(xué)出版社網(wǎng)站</a><br><formaction="<%=page%>"></form></body></html>2023年1月31日332023年1月31日342.腳本及其應(yīng)用實(shí)例JSP腳本即Scriptlet,也就是JSP中的代碼部分,是一段Java代碼,幾乎可以使用任何Java語(yǔ)法,它是在請(qǐng)求期間執(zhí)行,可以使用JSP頁(yè)面所定義的變量、方法、表達(dá)式或者JavaBean。腳本定義的變量和方法在當(dāng)前整個(gè)頁(yè)面內(nèi)有效,但不會(huì)被其它線程共享,用戶(hù)對(duì)該變量的作用不會(huì)影響到其它用戶(hù),當(dāng)變量所在頁(yè)面關(guān)閉時(shí)該變量就會(huì)被銷(xiāo)毀。腳本的語(yǔ)法格式為:<%腳本語(yǔ)句%>

2023年1月31日35【例4-7】腳本實(shí)例(scriptlet.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>腳本實(shí)例</title></head><body><%!intx=6;%><table>2023年1月31日36<%if(x==1){%><tr><td>歡迎登錄,您的權(quán)限是管理員!<td/></tr><% }else{%><tr><td>歡迎登錄,您的權(quán)限是普通用戶(hù)!<td/></tr><%}%></table></body></html>

2023年1月31日372023年1月31日38第4章JSP基礎(chǔ)知識(shí)4.1JSP頁(yè)面的基本結(jié)構(gòu)4.2JSP三種常用注釋4.3JSP常用腳本元素4.4JSP常用指令4.5JSP常用動(dòng)作4.6常見(jiàn)問(wèn)題及解決方案

2023年1月31日394.4JSP常用指令4.4.1page指令及其應(yīng)用實(shí)例4.4.2include指令及其應(yīng)用實(shí)例4.4.3taglib指令及其應(yīng)用實(shí)例

2023年1月31日404.4.1page指令及其應(yīng)用實(shí)例page指令用來(lái)定義JSP文件中的全局屬性,它描述了與頁(yè)面相關(guān)的一些信息,其作用域?yàn)樗诘腏SP文件頁(yè)面和其包含的文件。頁(yè)面指令一般位于JSP頁(yè)面的頂端,但是可以放在JSP頁(yè)面的任何地方,無(wú)論把<%@page%>指令放在JSP的文件的哪個(gè)地方,它的作用范圍都是整個(gè)JSP頁(yè)面。為了JSP程序的可讀性以及好的編程習(xí)慣,最好把它放在JSP文件的頂部。在同一個(gè)JSP頁(yè)面中可以有多個(gè)page指令。在使用多個(gè)page指令時(shí),其中的屬性除import屬性外只能使用一次。2023年1月31日41page指令的語(yǔ)法格式如下:<%@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"][errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]"][pageEncoding="pageEncoding"][isErrorPage="true|false"]%>2023年1月31日42language屬性【功能說(shuō)明】language屬性用于指定JSP頁(yè)面中使用的腳本語(yǔ)言,其默認(rèn)值為Java。根據(jù)JSP2.0規(guī)范,目前只可以使用Java語(yǔ)言。例如:<%@pagelanguage="java"%>如果language屬性使用了其它的腳本語(yǔ)言,將會(huì)產(chǎn)生異常。extends屬性【功能說(shuō)明】extends屬性用于指定JSP編譯器父類(lèi)的完整限定名,此JSP頁(yè)面產(chǎn)生的Servlet將由該父類(lèi)擴(kuò)展而來(lái)。例如:<%@pageextends="javax.servlet.http.HttpServlet"%>一般建議不要使用extends屬性。JSP容器可以提供專(zhuān)用的高性能父類(lèi),如果指定父類(lèi),可能會(huì)限制JSP容器本身具有的能力。import屬性【功能說(shuō)明】import屬性用于導(dǎo)入JSP頁(yè)面使用的JavaAPI類(lèi)庫(kù)。import屬性是所有page屬性中唯一可以多次設(shè)置的屬性,用來(lái)指定JSP頁(yè)面中所用到的類(lèi)。2023年1月31日43【例4-8】import屬性實(shí)例(import.jsp)<%@pageimport="java.util.Date"%><%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>import屬性實(shí)例</title></head><body>

<%Datedate=newDate();%><p>page指令的import屬性實(shí)例演示!</p><p>現(xiàn)在的時(shí)間是:<%=date%></p></body></html>2023年1月31日442023年1月31日45session屬性【功能說(shuō)明】session屬性用于指定是否可以使用session對(duì)象,若允許頁(yè)面參與HTTP會(huì)話(huà),就設(shè)置為true,否則設(shè)為false,其默認(rèn)值為true。

buffer屬性【功能說(shuō)明】buffer屬性用于設(shè)定頁(yè)面的緩沖區(qū)大?。ㄗ止?jié)數(shù)),屬性值為none,表示禁用緩沖區(qū),其默認(rèn)值為8KB。例如:設(shè)置頁(yè)面緩沖區(qū)大小為64KB:<%@pagebuffer="64kb"%>禁用緩沖區(qū):<%@pagebuffer="none"%>autoFlush屬性【功能說(shuō)明】autoFlush屬性用于指定JSP頁(yè)面緩沖區(qū)是否自動(dòng)刷新輸出,其默認(rèn)值為true。如果該屬性設(shè)置為true,則頁(yè)面緩沖區(qū)滿(mǎn)時(shí)自動(dòng)刷新輸出;否則,當(dāng)頁(yè)面緩沖區(qū)滿(mǎn)時(shí)拋出一個(gè)異常。例如:<%@pageautoFlush="false"%>2023年1月31日46【例4-9】session屬性實(shí)例(session.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>session屬性實(shí)例</title></head><body><hr>

會(huì)話(huà)ID號(hào)為:<%=session.getId()%><hr></body></html>2023年1月31日472023年1月31日48isThreadSafe屬性【功能說(shuō)明】isThreadSafe屬性用于指定JSP頁(yè)面是否能夠處理一個(gè)以上的請(qǐng)求,如果為true,則該頁(yè)面可能同時(shí)收到JSP引擎發(fā)出的多個(gè)請(qǐng)求;反之,JSP引擎會(huì)對(duì)收到的請(qǐng)求進(jìn)行排隊(duì),當(dāng)前頁(yè)面在同一時(shí)刻只能處理一個(gè)請(qǐng)求。其默認(rèn)值為true。建議將isThreadSafe屬性設(shè)置為true,確保頁(yè)面所用的所有對(duì)象都是線程安全的。例如:<%@pageisThreadSafe="true"%>info屬性【功能說(shuō)明】info屬性用于指定JSP頁(yè)面的相關(guān)信息文本,無(wú)默認(rèn)值。例如:<%@pageinfo="Pagedirectiveproperty:info"%>errorPage屬性【功能說(shuō)明】errorPage屬性用于指定錯(cuò)誤頁(yè)面,無(wú)默認(rèn)值。當(dāng)頁(yè)面出現(xiàn)一個(gè)沒(méi)有被捕獲的異常時(shí),錯(cuò)誤信息將以throw語(yǔ)句拋出,而被設(shè)置為錯(cuò)誤信息網(wǎng)頁(yè)的JSP頁(yè)面,將利用exception隱含對(duì)象,獲取錯(cuò)誤信息。relativeURL默認(rèn)設(shè)置為空,即沒(méi)有錯(cuò)誤處理頁(yè)面。2023年1月31日49isErrorPage屬性【功能說(shuō)明】isErrorPage屬性指定JSP頁(yè)面是否為處理異常錯(cuò)誤的頁(yè)面,其默認(rèn)值為false。如果將isErrorPage屬性設(shè)置為true,則固有的exception對(duì)象腳本元素可用。contentType屬性【功能說(shuō)明】contentType屬性用于指定內(nèi)容MIME類(lèi)型和JSP頁(yè)面的編碼方式。對(duì)于普通JSP頁(yè)面,默認(rèn)的contentType屬性值為"text/html;charset=ISO-8859-1"。對(duì)于JSP文檔,默認(rèn)的contentType屬性值為"text/html;charset=ISO-8859-1"。例如:<%@pagecontentType=content="text/html;charset=UTF-8"%>pageEncoding屬性【功能說(shuō)明】pageEncoding屬性用于指定JSP頁(yè)面的編碼方式,默認(rèn)值為ISO-8859-1,為支持中文可設(shè)置為UTF-8。例如:<%@pagepageEncoding="UTF-8"%>2023年1月31日504.4JSP常用指令4.4.1page指令及其應(yīng)用實(shí)例4.4.2include指令及其應(yīng)用實(shí)例4.4.3taglib指令及其應(yīng)用實(shí)例

2023年1月31日514.4.2include指令及其應(yīng)用實(shí)例include指令用于在JSP編譯時(shí),為頁(yè)面插入一個(gè)靜態(tài)文件,如JSP頁(yè)面、HTML頁(yè)面、文本文件或是一段Java程序。include指令的語(yǔ)法格式如下:<%@includefile=“filename”%>其中filename指被包含的文件的名稱(chēng)。include指令只有一個(gè)file屬性。

2023年1月31日52【例4-10】include指令實(shí)例(include.jsp和hello.jsp)include.jsp代碼如下:<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>include指令實(shí)例</title></head><body>

下面輸出的數(shù)據(jù)是加載的另外一個(gè)頁(yè)面的內(nèi)容!

<hr><%@includefile="hello.jsp"%><hr></body></html>2023年1月31日53hello.jsp代碼如下:<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>JSPPage</title></head><body><h1>HelloWorld!</h1></body></html>2023年1月31日542023年1月31日554.4JSP常用指令4.4.1page指令及其應(yīng)用實(shí)例4.4.2include指令及其應(yīng)用實(shí)例4.4.3taglib指令及其應(yīng)用實(shí)例

2023年1月31日564.4.3taglib指令及其應(yīng)用實(shí)例

taglib指令用來(lái)指定頁(yè)面中使用的標(biāo)簽庫(kù)以及其自定義標(biāo)簽的前綴。taglib語(yǔ)法格式為:<%@tagliburi="tagLibraryURI"prefix="tagPrefix"%>uri屬性:制定標(biāo)簽庫(kù)相對(duì)路徑【功能說(shuō)明】uri(UniformResourceIdentifier,統(tǒng)一資源標(biāo)識(shí)符)屬性用于指定標(biāo)記庫(kù)的存放位置,并告訴JSP引擎在編譯JSP程序時(shí)如何處理指定標(biāo)簽庫(kù)中的標(biāo)簽,無(wú)默認(rèn)值。uri屬性可以是在TLD(標(biāo)記庫(kù)描述符)文件或web.xml文件中定義的標(biāo)記庫(kù)的符號(hào)名,也可以是TLD文件或JAR文件的相對(duì)路徑。prefix屬性:制定標(biāo)記前綴【功能說(shuō)明】prefix屬性用于指定標(biāo)記庫(kù)中所有動(dòng)作元素名中使用的前綴,無(wú)默認(rèn)值。2023年1月31日57例如:<%@taglibprefix="c"uri="/jsp/jstl/core"%>就是在頁(yè)面中導(dǎo)入標(biāo)簽庫(kù),"/jsp/jstl/core"是JSP標(biāo)簽庫(kù)所在的路徑。2023年1月31日58第4章JSP基礎(chǔ)知識(shí)4.1JSP頁(yè)面的基本結(jié)構(gòu)4.2JSP三種常用注釋4.3JSP常用腳本元素4.4JSP常用指令4.5JSP常用動(dòng)作4.6常見(jiàn)問(wèn)題及解決方案

2023年1月31日594.5JSP常用動(dòng)作

4.5.1<jsp:param>動(dòng)作4.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例4.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例2023年1月31日60在客戶(hù)請(qǐng)求JSP頁(yè)面時(shí),JSP動(dòng)作利用XML語(yǔ)法格式的標(biāo)記來(lái)控制Servlet引擎的行為。利用JSP動(dòng)作可以動(dòng)態(tài)地插入文件、重用JavaBean組件、把用戶(hù)重定向到另外的頁(yè)面、為Java插件生成HTML代碼。動(dòng)作元素使用XML語(yǔ)法格式,由一個(gè)開(kāi)始標(biāo)記(可帶有屬性)、動(dòng)作體以及結(jié)束標(biāo)記組成。動(dòng)作元素名和屬性名都是大小寫(xiě)敏感的。2023年1月31日61JSP規(guī)范定義了一系列標(biāo)準(zhǔn)動(dòng)作,使用jsp作為前綴。標(biāo)準(zhǔn)動(dòng)作有:<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:param>、<jsp:include>、<jsp:forward>、<jsp:plugin>、<jsp:fallback>、<jsp:params>、<jsp:param>、<jsp:attribute>、<jsp:body>、<jsp:invoke>、<jsp:doBody>、<jsp:element>、<jsp:text>、<jsp:output>等2023年1月31日62其中常用的動(dòng)作有6種:<jsp:param>、<jsp:include>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:forward>。2023年1月31日634.5.1<jsp:param>動(dòng)作<jsp:param>動(dòng)作可以用于<jsp:include>、<jsp:forward>和<jsp:plugin>動(dòng)作體中,為其它標(biāo)簽提供附加信息。<jsp:param>動(dòng)作的語(yǔ)法格式如下:<jsp:paramname="paramName"value="paramValue"/>name屬性:指定參數(shù)名【功能說(shuō)明】name屬性用于指定參數(shù)名稱(chēng),不可以接受動(dòng)態(tài)值。value屬性:指定參數(shù)值【功能說(shuō)明】value屬性用于指定參數(shù)值,可以接受動(dòng)態(tài)值。2023年1月31日644.5JSP常用動(dòng)作

4.5.1<jsp:param>動(dòng)作4.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例4.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例2023年1月31日654.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例<jsp:include>動(dòng)作用來(lái)把指定文件插入正在生成的頁(yè)面中。<jsp:include>動(dòng)作語(yǔ)法格式如下:<jsp:includepage=“relativeURL”flush=“true”/>或者<jsp:includepage="fileName"flush=“true"><jsp:paramname="paramName"value="paramValue"/></jsp:include>2023年1月31日66page屬性:指定資源相對(duì)路徑【功能說(shuō)明】page屬性指定所包含的資源的相對(duì)路徑,可以接受動(dòng)態(tài)值。flush屬性:指定是否刷新緩沖區(qū)【功能說(shuō)明】flush屬性指定在包含目標(biāo)資源之前是否刷新輸出緩沖區(qū),默認(rèn)值為false。flush屬性不可以接受動(dòng)態(tài)值。2023年1月31日67include指令和include動(dòng)作都能實(shí)現(xiàn)將外部文檔包含到JSP文檔中的功能,名稱(chēng)相似,但也有區(qū)別。(1)include指令include指令可以在JSP頁(yè)面轉(zhuǎn)換成Servlet之前,將JSP代碼插入其中。include指令的語(yǔ)法格式如下:<%@includefile="文件名"%>(2)include動(dòng)作<jsp:include>動(dòng)作是在主頁(yè)面被請(qǐng)求時(shí),將其它頁(yè)面的輸出包含進(jìn)來(lái)。<jsp:include>動(dòng)作的語(yǔ)法格式如下:<jsp:includepage="文件名"flush="true">(3)兩者的區(qū)別和比較<jsp:include>動(dòng)作和include指令之間的根本不同在于它們被調(diào)用的時(shí)間。<jsp:include>動(dòng)作在請(qǐng)求期間被激活,而include指令在頁(yè)面轉(zhuǎn)換期間被激活。兩者之間的差異決定著它們?cè)谑褂蒙系膮^(qū)別。使用include指令的頁(yè)面要比使用<jsp:include>動(dòng)作的頁(yè)面難于維護(hù)。<jsp:include>動(dòng)作相對(duì)于include指令在維護(hù)上有著明顯優(yōu)勢(shì),而include指令仍然能夠得以存在,自然在其它方面有特殊的優(yōu)勢(shì)。這個(gè)優(yōu)勢(shì)就是include指令的功能更強(qiáng)大,執(zhí)行速度也稍快。include指令允許所包含的文件中含有影響主頁(yè)面的JSP代碼,如響應(yīng)內(nèi)容的設(shè)置和屬性方法的定義。2023年1月31日68更詳細(xì)的Include指令和Include行為不同之處可以參考思開(kāi)的文檔或網(wǎng)上:/blog/4139762023年1月31日69【例4-11】<jsp:include>動(dòng)作實(shí)例1(includeAction1.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>動(dòng)作實(shí)例1</title></head><body>

下面輸出的數(shù)據(jù)是使用動(dòng)作指令動(dòng)態(tài)加載的另外一個(gè)頁(yè)面的內(nèi)容!

<hr><jsp:includepage="hello.jsp"/><hr></body></html>

2023年1月31日702023年1月31日71<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>JSPPage</title></head><body><h1>HelloWorld!</h1></body></html>2023年1月31日722023年1月31日73【例4-12】<jsp:include>動(dòng)作實(shí)例2(includeAction2.jsp和hello1.jsp)includeAction2.jsp代碼如下:<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>動(dòng)作實(shí)例2</title></head><body>

以下是hello1.jsp頁(yè)面的內(nèi)容:

<hr><jsp:includepage="hello1.jsp"><jsp:paramname="name"value="QQ"/></jsp:include></body></html>

2023年1月31日74hello1.jsp代碼如下:<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>JSPPage</title></head><body><%=request.getParameter("name")%>你好,歡迎你訪問(wèn)!

</body></html>2023年1月31日752023年1月31日764.5JSP常用動(dòng)作

4.5.1<jsp:param>動(dòng)作4.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例4.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例2023年1月31日774.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例<jsp:useBean>動(dòng)作用來(lái)裝載一個(gè)將在JSP頁(yè)面中使用的JavaBean。這個(gè)功能非常有用,能夠?qū)崿F(xiàn)Java組件重用。<jsp:useBean>語(yǔ)法格式如下:<jsp:useBeanid="beanInstanceName"scope="page|request|session|application"class="package.class"type="package.class"beanName="package.class"/>

2023年1月31日78 id屬性:引用該Bean的變量?!竟δ苷f(shuō)明】id屬性指定該JavaBean的實(shí)例名稱(chēng),不可接受動(dòng)態(tài)值。如果能夠找到id和scope相同的Bean實(shí)例,<jsp:useBean>動(dòng)作將使用已有的Bean實(shí)例而不是創(chuàng)建新的實(shí)例。2023年1月31日79scope屬性:指定Bean的作用域【功能說(shuō)明】scope指定Bean作用域范圍,不可以接受動(dòng)態(tài)值,可選作用域有:page,request,session和application。默認(rèn)值是page,表示該Bean只在當(dāng)前頁(yè)面內(nèi)可用(保存在當(dāng)前頁(yè)面的PageContext內(nèi))。request表示該Bean在當(dāng)前的客戶(hù)請(qǐng)求內(nèi)有效(保存在ServletRequest對(duì)象內(nèi))。session表示該Bean對(duì)當(dāng)前HttpSession內(nèi)的所有頁(yè)面都有效,即會(huì)話(huà)作用域。application表示該Bean在任何使用相同的application的JSP頁(yè)面中使用都Bean,即應(yīng)用作用域。scope之所以很重要,是因?yàn)?lt;jsp:useBean>只有在不存在具有相同id和scope的對(duì)象時(shí)才會(huì)實(shí)例化新的對(duì)象;如果已有id和scope都相同的對(duì)象則直接使用已有的對(duì)象,此時(shí)<jsp:useBean>開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間的任何內(nèi)容都將被忽略。2023年1月31日80class屬性:指定Bean的類(lèi)名【功能說(shuō)明】class指定Bean的類(lèi)路徑和類(lèi)名,不可接受動(dòng)態(tài)值,這個(gè)class不能是抽象的。2023年1月31日81【例4-13】<jsp:useBean>動(dòng)作實(shí)例1(useBeanAction1.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>jsp:useBean動(dòng)作實(shí)例1</title></head><body>jsp:useBean動(dòng)作實(shí)例

<hr><jsp:useBeanid="time"class="java.util.Date"/>

現(xiàn)在時(shí)間:<%=time%></body></html>2023年1月31日822023年1月31日83type屬性:指定Bean的類(lèi)型名稱(chēng)【功能說(shuō)明】type屬性指定引用該對(duì)象的變量的類(lèi)型,它必須是Bean類(lèi)的名字、超類(lèi)名字、該類(lèi)所實(shí)現(xiàn)的接口名字之一。變量的名字是由id屬性指定的。beanName屬性:指定Bean的名字【功能說(shuō)明】beanName屬性用于指定bean的名字,可以接受動(dòng)態(tài)值。beanName屬性必須與type屬性結(jié)合使用,不能與class屬性同時(shí)使用。2023年1月31日84【例4-14】<jsp:useBean>動(dòng)作實(shí)例2(useBeanAction2.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>useBeanAction動(dòng)作實(shí)例2</title></head><body>jsp:useBean動(dòng)作實(shí)例

<hr><jsp:useBeanid="time"type="java.io.Serializable"beanName="java.util.Date"/>

現(xiàn)在時(shí)間:<%=time%></body></html>

2023年1月31日852023年1月31日864.5JSP常用動(dòng)作

4.5.1<jsp:param>動(dòng)作4.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例4.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例2023年1月31日87<jsp:setProperty>動(dòng)作用來(lái)設(shè)置、修改已經(jīng)實(shí)例化的Bean中的屬性值。<jsp:setProperty>語(yǔ)法格式如下:<jsp:setPropertyname="beanInstanceName"property="*"|property="propertyName"[param="parameterName"|value="value"]/>4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例

2023年1月31日88name屬性:指定bean的名稱(chēng)?!竟δ苷f(shuō)明】name屬性是必需的,它表示要設(shè)置屬性的是哪個(gè)Bean,不可接受動(dòng)態(tài)值。property屬性:指定bean的屬性名【功能說(shuō)明】property屬性是必需的。它表示要設(shè)置哪個(gè)屬性。如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請(qǐng)求參數(shù)都將被傳遞給相應(yīng)屬性的set方法。2023年1月31日89param屬性:指定請(qǐng)求參數(shù)名【功能說(shuō)明】param是可選的。它指定用哪個(gè)請(qǐng)求參數(shù)作為Bean屬性的值。如果當(dāng)前請(qǐng)求沒(méi)有參數(shù),則什么事情也不做,系統(tǒng)不會(huì)把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認(rèn)屬性值,只有當(dāng)請(qǐng)求參數(shù)明確指定了新值時(shí)才修改默認(rèn)屬性值。2023年1月31日90【例4-15】<jsp:setProperty>動(dòng)作實(shí)例(setPropertyAction1.jsp)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>jsp:setProperty動(dòng)作實(shí)例1</title></head><body>jsp:setProperty動(dòng)作實(shí)例

<hr><jsp:useBeanid="time"class="java.util.Date"><jsp:setPropertyname="time"property="hours"param="hh"/><jsp:setPropertyname="time"property="minutes"param="mm"/><jsp:setPropertyname="time"property="seconds"param="ss"/></jsp:useBean><br>

設(shè)置屬性后的時(shí)間:${time}<br></body></html>2023年1月31日912023年1月31日92value屬性:指定屬性的值【功能說(shuō)明】value屬性是可選的。該屬性用來(lái)指定Bean屬性的值。2023年1月31日934.5JSP常用動(dòng)作

4.5.1<jsp:param>動(dòng)作4.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例4.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例2023年1月31日944.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例

<jsp:getProperty>動(dòng)作獲取指定Bean屬性的值,轉(zhuǎn)換成字符串,然后輸出。<jsp:getProperty>語(yǔ)法格式如下:<jsp:getPropertyname="beanInstanceName"property="propertyName"/><jsp:getProperty>元素可以獲取Bean的屬性值,并可以將其使用或顯示在JSP頁(yè)面中。在使用<jsp:getProperty>之前,必須用<jsp:useBean>創(chuàng)建它。name屬性:指定bean的名稱(chēng)【功能說(shuō)明】name屬性指定要獲取屬性值的bean的名稱(chēng),不能接受動(dòng)態(tài)值。property屬性:指定要獲取bean的屬性名【功能說(shuō)明】property屬性指定要獲取的bean屬性名,不能接受動(dòng)態(tài)值。2023年1月31日95【例4-16】用戶(hù)注冊(cè)實(shí)例用戶(hù)注冊(cè)是大部分網(wǎng)站提供的功能模塊,本實(shí)例就是模擬用戶(hù)注冊(cè)功能。為簡(jiǎn)化開(kāi)發(fā),假定用戶(hù)注冊(cè)信息包含3個(gè)參數(shù):用戶(hù)名、密碼、年齡。用戶(hù)注冊(cè)頁(yè)面register.html,該頁(yè)面提交后到數(shù)據(jù)處理的頁(yè)面register.jsp,并使用JavaBean即UserRegisterBean類(lèi)保存數(shù)據(jù)。注冊(cè)頁(yè)面register.html代碼如下:2023年1月31日96<html><head><title>用戶(hù)注冊(cè)實(shí)例</title><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"></head><body>

用戶(hù)信息注冊(cè):

<hr> <formmethod="get"action="register.jsp"><tableborder="1"bordercolor="blue"> <tr><td>姓名:<inputname="userName"type="text"size="16"></td></tr>2023年1月31日97<tr><td>密碼:<inputname="password"type="password"size="18"></td></tr> <tr><td>年齡:<inputname="age"type="text"size="16"></td></tr> <tr><td><inputtype=submitvalue="提交"></td></tr></table></form><hr></body></html>

2023年1月31日98數(shù)據(jù)處理的頁(yè)面register.jsp代碼如下:<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>處理用戶(hù)注冊(cè)信息頁(yè)面</title></head><body><jsp:useBeanid="user"scope="page"class="ch04.UserRegisterBean"/><jsp:setPropertyname="user"property="*"/>

注冊(cè)成功:

<hr/>

使用Bean屬性方法:

<br/>2023年1月31日99

用戶(hù)名:<%=user.getUserName()%><br/>

密碼:<%=user.getPassword()%><br/>

年齡:<%=user.getAge()%><hr/>

使用getProperty動(dòng)作:

<br/>

用戶(hù)名:<jsp:getPropertyname="user"property="userName"/><br/>

密碼:<jsp:getPropertyname="user"property="password"/><br/>

年齡:<jsp:getPropertyname="user"property="age"/><br/></body></html>

2023年1月31日100數(shù)據(jù)處理頁(yè)面register.jsp使用UserRegisterBean來(lái)保存數(shù)據(jù)。UserRegisterBean.java代碼如下:packagech04;publicclassUserRegisterBean{privateStringuserName;privateStringpassword;privateintage;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}2023年1月31日101publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}

2023年1月31日1022023年1月31日1032023年1月31日1044.5JSP常用動(dòng)作

4.5.1<jsp:param>動(dòng)作4.5.2<jsp:include>動(dòng)作及其應(yīng)用實(shí)例4.5.3<jsp:useBean>動(dòng)作及其應(yīng)用實(shí)例4.5.4<jsp:setProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.5<jsp:getProperty>動(dòng)作及其應(yīng)用實(shí)例4.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例2023年1月31日1054.5.6<jsp:forward>動(dòng)作及其應(yīng)用實(shí)例<jsp:forward>用于引導(dǎo)客戶(hù)端的請(qǐng)求到另一個(gè)頁(yè)面或者是另一個(gè)Servlet去。<jsp:forward>語(yǔ)法格式如下:<jsp:forwardpage="relativeURL"/><jsp:forward>動(dòng)作可以包含一個(gè)或幾個(gè)<jsp:param>子動(dòng)作,用于向要引導(dǎo)進(jìn)入的頁(yè)面?zhèn)鬟f參數(shù)。需要注意,當(dāng)<jsp:forward>動(dòng)作發(fā)生的時(shí)候,如果已經(jīng)有文本被寫(xiě)入輸出流而且頁(yè)面沒(méi)有設(shè)置緩沖,那么將拋出異常。2023年1月31日106【例4-17】登錄實(shí)例。為了簡(jiǎn)化程序,本例沒(méi)有連接數(shù)據(jù)庫(kù)。假定用戶(hù)名和密碼正確,使用<jsp:forward>動(dòng)作把頁(yè)面跳轉(zhuǎn)到success.jsp頁(yè)面,否則進(jìn)入login.jsp頁(yè)面。三個(gè)頁(yè)面分別是登錄頁(yè)面login.jsp、對(duì)登錄頁(yè)面進(jìn)行數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論