第二章 JSP頁面與JSP標(biāo)記new_第1頁
第二章 JSP頁面與JSP標(biāo)記new_第2頁
第二章 JSP頁面與JSP標(biāo)記new_第3頁
第二章 JSP頁面與JSP標(biāo)記new_第4頁
第二章 JSP頁面與JSP標(biāo)記new_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JSP應(yīng)用程序設(shè)計濟(jì)南大學(xué)信息學(xué)院劉鹍liukun@22內(nèi)容回顧JSP的中文含義JSP的基本原理JSP的開發(fā)環(huán)境JSP程序的開發(fā)Web服務(wù)目錄3內(nèi)容回顧3翻譯階段編譯階段請求處理階段Server存儲的JSP文件(*.jsp)(抽象)請求(抽象)響應(yīng)(抽象)會話JavaServet實現(xiàn)代碼(*.java)Java翻譯工具翻譯轉(zhuǎn)換JavaServet實現(xiàn)類(*.class)Java編譯工具編譯JavaServet實現(xiàn)對象JSP容器激活請求準(zhǔn)備請求響應(yīng)會話JSP基本原理4回顧從最簡單的JSP頁面我們已經(jīng)知道:JSP是服務(wù)器端的技術(shù)JSP頁面中有基本的HTMLJSP頁面中還有JSP特有的東西,它們是……4<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYBGCOLOR=cyan><h3>這是一個簡單的JSP頁面</h3>

<%inti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}%><h5>1到100的連續(xù)和是:

<%=sum%></h5></BODY></HTML>第二章JSP頁面與JSP標(biāo)記6第二章JSP頁面與JSP標(biāo)記主要內(nèi)容JSP頁面的基本結(jié)構(gòu)變量和方法的聲明Java程序片表達(dá)式JSP中的注釋JSP指令標(biāo)記JSP動作標(biāo)記難點Java程序片的運行原理Include指令標(biāo)記與include動作標(biāo)記關(guān)鍵實踐編寫包含5種基本元素的JSP頁面編寫含有JSP指令標(biāo)記和動作標(biāo)記的JSP頁面6第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記82.1JSP頁面的基本結(jié)構(gòu)JSP頁面的基本結(jié)構(gòu)模板元素靜態(tài)HTML/XML內(nèi)容JSP元素腳本元素(聲明、表達(dá)式、Scriptlet)指令元素動作元素注釋8<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><h3>這是一個簡單的JSP頁面</h3>

<%inti,sum=0;for(i=1;i<=100;i++){sum=sum+i;}%><h5>1到100的連續(xù)和是:

<%=sum%></h5></BODY></HTML>92.1JSP頁面的基本結(jié)構(gòu)JSP頁面可由5種元素組合而成:①普通的HTML標(biāo)記符;②JSP標(biāo)記,如指令標(biāo)記、動作標(biāo)記;③變量和方法的聲明;④Java程序片;⑤Java表達(dá)式;<%@pagecontentType="text/html;charset=GBK"%><%@pageimport="java.util.Date"%>

<%!

Datedate;intsum;publicintgetFactorSum(intn){for(inti=1;i<n;i++){if(n%i==0)sum=sum+i;}returnsum;}%><HTML><BODYbgcolor=cyan>

<FONTsize=4><P>程序片創(chuàng)建Date對象:

<%date=newDate();

out.println("<br>"+date+"<br>");

intm=100;%>

<%=m%>

的因子之和是(不包括<%=m%>):

<%=getFactorSum(m)%></FONT></BODY></HTML>

102.1JSP頁面的基本結(jié)構(gòu)JSP頁面的運行原理:把JSP頁面中普通的HTML標(biāo)記符號,交給客戶的瀏覽器執(zhí)行顯示。

JSP標(biāo)記、數(shù)據(jù)和方法聲明、Java程序片由Tomcat服務(wù)器負(fù)責(zé)執(zhí)行,將需要顯示的結(jié)果發(fā)送給客戶的瀏覽器。

Java表達(dá)式由Tomcat服務(wù)器負(fù)責(zé)計算,將結(jié)果轉(zhuǎn)化為字符串,交給客戶的瀏覽器負(fù)責(zé)顯示。

第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記122.2變量和方法的聲明1.JSP頁面的成員變量:2.在JSP頁面的標(biāo)記符“<%!”和“%>”之間聲明方法。該方法在整個JSP頁面有效。<%!%>第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記142.3Java程序片在“<%”和“%>”之間插入Java程序片。程序片中聲明的變量稱為JSP頁面的局部變量。多個客戶請求一個JSP頁面時,Java程序片將被執(zhí)行多次,分別在不同的線程中執(zhí)行。152.2變量和方法的聲明成員變量與局部變量:<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4>

<%!inti=0;%><%intj=0;i++;j++;%><P>您是第<%=i%>(i)個訪問本站的客戶。<P>您是第<%=j%>(j)個訪問本站的客戶。</FONT></BODY></HTML>第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記172.4表達(dá)式“

<%=”和“%>”之間可以是一個Java表達(dá)式。表達(dá)式的值由服務(wù)器負(fù)責(zé)計算,并將計算結(jié)果用字符串形式發(fā)送到客戶端顯示。<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4>

<%!inti=0;%><%intj=0;i++;j++;%><P>您是第<%=i%>(i)個訪問本站的客戶。<P>您是第<%=j%>(j)個訪問本站的客戶。</FONT></BODY></HTML>2.4表達(dá)式思考:<%=%>與<%System.out.println(“”)%>有區(qū)別嗎?18<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4><%!inti=0;%><%i++;System.out.println("System.out.println:"+i);%><P>您是第

<%=i%>

個訪問本站的客戶。</FONT></BODY></HTML>第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記202.5JSP中的注釋1.HTML注釋格式:2.JSP注釋格式:

注:程序片中的注釋//<!--注釋內(nèi)容--><%--注釋內(nèi)容--%>212.5JSP中的注釋思考:<!--注釋內(nèi)容-->

和<%--注釋內(nèi)容--%>有什么區(qū)別?<%@pagecontentType="text/html;charset=GB2312"%><HTML><BODYBGCOLOR=cyan>測試注釋的區(qū)別,請查看頁面源碼。<!--現(xiàn)在時間是:<%=(newjava.util.Date()).toLocaleString()%>--><%--現(xiàn)在時間是:<%=(newjava.util.Date()).toLocaleString()%>--%></FONT></BODY></HTML>22小結(jié):JSP語法JSP數(shù)據(jù)定義JSP程序塊JSP表達(dá)式JSP注釋<%!

變量聲明

%><% Java片段代碼%><%=Java表達(dá)式%><%--注釋內(nèi)容--%><!--注釋內(nèi)容[<%=表達(dá)式%>]-->23課堂交流JSP與Java24第二章JSP頁面與JSP標(biāo)記主要內(nèi)容JSP頁面的基本結(jié)構(gòu)變量和方法的聲明Java程序片表達(dá)式JSP中的注釋JSP指令標(biāo)記JSP動作標(biāo)記難點Java程序片的運行原理Include指令標(biāo)記與include動作標(biāo)記關(guān)鍵實踐編寫包含5種基本元素的JSP頁面編寫含有JSP指令標(biāo)記和動作標(biāo)記的JSP頁面24第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記2.6JSP指令標(biāo)記JSP指令(directive)是為JSP引擎而設(shè)計的并不直接產(chǎn)生任何可見輸出只是告訴引擎如何處理JSP頁面中的其余部分在JSP2.0規(guī)范中共定義了三個指令:page指令I(lǐng)nclude指令taglib指令回顧:上節(jié)課例子<%@pagecontentType="text/html;charset=GBK"%>27<%@pagecontentType="text/html;charset=GBK"%><HTML><BODYBGCOLOR=cyan><FONTsize=4><%!inti=0;%><%i++;%><P>您是第

<%=i%>

個訪問本站的客戶。</FONT></BODY></HTML>2.6JSP指令標(biāo)記JSP指令的基本語法格式:舉例:

如果一個指令有多個屬性,這多個屬性可以寫在一個指令中,也可以分開寫。

<%@指令屬性名="值"%><%@pagecontentType="text/html;charset=gb2312"%>JSP指令pageincludetaglib292.6.1page指令page指令用來定義整個JSP頁面的一些屬性和屬性的值。屬性值用單引號或雙引號括起來??梢杂靡粋€page指令指定多個屬性的值

,也可以使用多個page指令分別為每個屬性指定值。page指令的作用對整個JSP頁面有效,與其書寫的位置無關(guān),習(xí)慣把page指令寫在JSP頁面的最前面。page指令屬性languageimportbuffererrorPageisErrorPagelanguage–定義要使用的腳本語言import–將包和方法導(dǎo)入ScriptletisErrorPage–表示當(dāng)前頁面能否作為錯誤頁面errorPage–定義處理異常的JSP頁面buffer–設(shè)置用來存儲客戶端請求的緩沖區(qū)的大小302.6.1page指令contentType屬性contentType屬性值確定JSP頁面響應(yīng)的MIME(多功能Internet郵件擴(kuò)充服務(wù),MultipurposeInternetMailExtention)類型和JSP頁面字符的編碼。注:不允許兩次使用page指令給contentType屬性指定不同的屬性值。pageEncoding屬性JSP網(wǎng)頁的編碼方式。<%@pagecontentType="text/html;charset=GB2312"%><%@pagecontentType="application/msword"%><%@

page

pageEncoding="GBK"%>

2.6.1page指令JSP2.0規(guī)范中定義的page指令的完整語法:<%@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="relative_url"] [isErrorPage="true|false"]

[contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]

[pageEncoding="characterSet|ISO-8859-1"] [isELIgnored="true|false"]%>2.6.1page指令pageEncoding是JSP文件本身的編碼contentType的charset是指服務(wù)器發(fā)送給客戶端時的內(nèi)容編碼JSP要經(jīng)過兩次的“編碼”,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網(wǎng)頁,用的是contentType。第一階段是JSP編譯成Java第二階段是由Javac的Java源碼至JavabyteCode的編譯第三階段是Tomcat(或其的applicationcontainer)載入和執(zhí)行階段二的來的Java二進(jìn)制碼3233小結(jié)屬性含義默認(rèn)language="scriptingLanguage"容器要用什么語言編譯JSP網(wǎng)頁javaextends="ClassName"此JSP網(wǎng)頁產(chǎn)生的Servlet繼承哪個父類import="importList"此JSP網(wǎng)頁使用哪些JAVAAPIsession="true|false"JSP網(wǎng)頁是否使用session對象truebuffer="none|sizeinkb"輸出流是否有緩沖區(qū)8KBautoFlush="true|false"輸出流的緩沖區(qū)是否要自動清除trueisThreadSafe="true|false"網(wǎng)頁是否能處理超過一個以上的請求trueinfo="text"此JSP網(wǎng)頁的相關(guān)信息errorPage="error_url"發(fā)生異常時網(wǎng)頁被重新指向那一個URLisErrorPage="true|false"此JSP網(wǎng)頁是否是處理異常錯誤的網(wǎng)頁falsecontentType="ctinfo"MIME類型和JSP網(wǎng)頁的編碼方式text/htmlISO-8859-1pageEncoding="ctinfo"JSP網(wǎng)頁的編碼方式ISO-8859-1isELlgnored="true|false"此JSP網(wǎng)頁是否忽略EL表達(dá)式true使用page指令解決JSP中文亂碼JSP程序存在中文亂碼問題輸出響應(yīng)正文時出現(xiàn)的中文亂碼問題讀取瀏覽器傳遞的參數(shù)信息時出現(xiàn)的中文亂碼問題JSP引擎將JSP頁面翻譯成Servlet源文件時也可能導(dǎo)致中文亂碼問題JSP引擎將JSP源文件翻譯成的Servlet源文件默認(rèn)采用UTF-8編碼,而JSP開發(fā)人員可以采用各種字符集編碼來編寫JSP源文件,因此,JSP引擎將JSP源文件翻譯成Servlet源文件時,需要進(jìn)行字符編碼轉(zhuǎn)換。如果JSP文件中沒有說明它采用的字符集編碼,JSP引擎將把它當(dāng)作默認(rèn)的ISO-8859-1字符集編碼處理。如何解決JSP引擎翻譯JSP頁面時的中文亂碼問題通過page指令的contentType屬性說明JSP源文件的字符集編碼page指令的pageEncoding屬性說明JSP源文件的字符集編碼使用page指令解決JSP中文亂碼回顧:page指令的pageEncoding和contentType屬性回顧JSP工作原理回顧:JSP要經(jīng)過兩次的“編碼”第一階段會用pageEncoding第二階段會用utf-8至utf-8第三階段就是由Tomcat出來的網(wǎng)頁,用的是contentType35362.6.2include指令標(biāo)記include指令標(biāo)記的作用是在JSP頁面出現(xiàn)該指令的位置處,靜態(tài)插入一個文件。其語法格式如下:注:如果該文件和當(dāng)前JSP頁面在同一Web服務(wù)目錄中,那么“文件的URL”就是文件的名字;如果該文件在JSP頁面所在的Web服務(wù)目錄的一個子目錄中,比如fileDir子目錄中,那么“文件的URL”就是“fileDir/文件的名字”。

注:靜態(tài)插入,就是當(dāng)前JSP頁面和插入的文件合并成一個新的JSP頁面,然后JSP引擎再將這個新的JSP頁面轉(zhuǎn)譯成Java文件。<%@includefile="文件的URL"%>2.6.2include指令標(biāo)記include指令用于引入其它JSP頁面,如果使用include指令引入了其它JSP頁面,那么JSP引擎將把這兩個JSP翻譯成一個servlet。所以include指令引入通常也稱之為靜態(tài)引入。語法:

其中的file屬性用于指定被引入文件的相對路徑。

file屬性的設(shè)置值必須使用相對路徑,如果以“/”開頭,表示相對于當(dāng)前WEB應(yīng)用程序的根目錄(注意不是站點根目錄),否則,表示相對于當(dāng)前文件。細(xì)節(jié):被引入的文件必須遵循JSP語法。被引入的文件可以使用任意的擴(kuò)展名,即使其擴(kuò)展名是html,JSP引擎也會按照處理jsp頁面的方式處理它里面的內(nèi)容,為了見明知意,JSP規(guī)范建議使用.jspf(JSPfragments)作為靜態(tài)引入文件的擴(kuò)展名。由于使用include指令將會涉及到2個JSP頁面,并會把2個JSP翻譯成一個servlet,所以這2個JSP頁面的指令不能沖突(除了pageEncoding和導(dǎo)包除外)。<%@includefile="relativeURL"%>taglib指令雖然我們希望JSP頁面僅用作數(shù)據(jù)顯示模塊,不要嵌套任何Java代碼引入任何業(yè)務(wù)邏輯,但在實際開發(fā)中不引入一點業(yè)務(wù)邏輯是不可能的,但引入業(yè)務(wù)邏輯會導(dǎo)致頁面出現(xiàn)難看Java代碼,怎么辦?Sun公司(Oracle公司)允許用戶開發(fā)自定義標(biāo)簽封裝頁面的Java代碼,以便Jsp頁面不出現(xiàn)一行Java代碼。Taglib指令用于在JSP頁面中導(dǎo)入標(biāo)簽庫。<%@tagliburi=“標(biāo)簽庫表述符文件”prefix=“前綴名”%>第二章JSP頁面和JSP標(biāo)記2.1JSP頁面的基本結(jié)構(gòu)2.2變量和方法的聲明2.3Java程序片2.4表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動作標(biāo)記2.7JSP動作標(biāo)記JspAction(JSP動作)元素也稱之為JSP標(biāo)簽,它用于在JSP頁面中提供業(yè)務(wù)邏輯功能。Sun公司(Oracle公司)在JSP頁面中內(nèi)置了一些標(biāo)簽(這些標(biāo)簽叫做JSP標(biāo)簽),開發(fā)人員使用這些標(biāo)簽可以完成頁面的一些常用業(yè)務(wù)邏輯。JSP常用標(biāo)簽:JSP動作元素jsp:forwardjsp:includejsp:pluginjsp:useBeanjsp:getPropertyjsp:setProperty412.7JSP動作標(biāo)記include動作標(biāo)記<jsp:include>標(biāo)簽用于把另外一個資源的輸出內(nèi)容插入進(jìn)當(dāng)前JSP頁面的輸出內(nèi)容之中,這種在JSP頁面執(zhí)行時的引入方式稱之為動態(tài)引入。語法格式:

或注:include動作標(biāo)記是在JSP頁面運行時才處理文件,被處理的文件在邏輯和語法上獨立于當(dāng)前JSP頁面。page屬性用于指定被引入資源的相對路徑,它也可以通過執(zhí)行一個表達(dá)式來獲得。flush屬性指定在插入其他資源的輸出內(nèi)容時,是否先將當(dāng)前JSP頁面的已輸出的內(nèi)容刷新到客戶端。<jsp:includepage="文件的URL">param子標(biāo)記</jsp:include><jsp:includepage="relativeURL|<%=expression%>"flush="true|false"/>2.7JSP動作標(biāo)記

思考:<jsp:include>與include指令的比較<jsp:include>標(biāo)簽是動態(tài)引入,<jsp:include>標(biāo)簽涉及到的2個JSP頁面會被翻譯成2個servlet,這2個servlet的內(nèi)容在執(zhí)行時進(jìn)行合并。而include指令是靜態(tài)引入,涉及到的2個JSP頁面會被翻譯成一個servlet,其內(nèi)容是在源文件級別進(jìn)行合并。不管是<jsp:include>標(biāo)簽,還是include指令,它們都會把兩個JSP頁面內(nèi)容合并輸出,所以這兩個頁面不要出現(xiàn)重復(fù)的HTML全局架構(gòu)標(biāo)簽,否則輸出給客戶端的內(nèi)容將會是一個格式混亂的HTML文檔。<jsp:include>標(biāo)簽:使用page屬性指定被引入資源。include指令:使用file屬性指定被引入資源。432.7JSP動作標(biāo)記forward動作標(biāo)記該指令的作用是:從該指令處停止當(dāng)前頁面的繼續(xù)執(zhí)行,而轉(zhuǎn)向執(zhí)行page屬性指定的JSP頁面。

語法格式:<jsp:forwardpage="relativeURL|<%=expression%>"/>或

<jsp:forwardpage="要轉(zhuǎn)向的頁面">param子標(biāo)記</jsp:forward>442.7JSP動作標(biāo)記plugin動作標(biāo)記該動作標(biāo)記指示JSP頁面加載Javaplugin插件。該插件由用戶負(fù)責(zé)下載,并使用該插件來運行Javaapplet小程序。語法格式:

<jsp:plugintype="applet"code="小程序的字節(jié)碼文件"jreversion="java虛擬機(jī)版本號"width="小程序?qū)挾戎?height="小程序高度值"><jsp:fallback>提示信息:用來提示用戶的瀏覽器是否支持插件下載</jsp:fallback></jsp:plugin>452.7JSP動作標(biāo)記useBean動作標(biāo)記該標(biāo)記用來創(chuàng)建并使用一個Javabean,是非常重要的一個動作標(biāo)記,我們將在第4章詳細(xì)討論。Sun公司的倡導(dǎo)是:用HTML完成JSP頁面的靜態(tài)部分,用Javabean完成動態(tài)部分,實現(xiàn)真正意義上的靜態(tài)和動態(tài)分離。46總結(jié):JSP頁面和JSP標(biāo)記JSP數(shù)據(jù)定義JSP程序塊JSP表達(dá)式JSP指令JSP動作JSP注釋<%!

變量聲明

%><% Java片段代碼%><%@page|include|taglib屬性=""%><%=Java表達(dá)式%><JSP:動作屬性=""%><%--注釋內(nèi)容--%><!--注釋內(nèi)容[<%=表達(dá)式%>]-->補(bǔ)充:jspInit()與jspDestroy()jspInit()與jspDestr

溫馨提示

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

評論

0/150

提交評論