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

下載本文檔

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

文檔簡介

JSP應用程序設計濟南大學信息學院劉鹍liukun@22內(nèi)容回顧JSP的中文含義JSP的基本原理JSP的開發(fā)環(huán)境JSP程序的開發(fā)Web服務目錄3內(nèi)容回顧3翻譯階段編譯階段請求處理階段Server存儲的JSP文件(*.jsp)(抽象)請求(抽象)響應(抽象)會話JavaServet實現(xiàn)代碼(*.java)Java翻譯工具翻譯轉(zhuǎn)換JavaServet實現(xiàn)類(*.class)Java編譯工具編譯JavaServet實現(xiàn)對象JSP容器激活請求準備請求響應會話JSP基本原理4回顧從最簡單的JSP頁面我們已經(jīng)知道:JSP是服務器端的技術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標記6第二章JSP頁面與JSP標記主要內(nèi)容JSP頁面的基本結構變量和方法的聲明Java程序片表達式JSP中的注釋JSP指令標記JSP動作標記難點Java程序片的運行原理Include指令標記與include動作標記關鍵實踐編寫包含5種基本元素的JSP頁面編寫含有JSP指令標記和動作標記的JSP頁面6第二章JSP頁面和JSP標記2.1JSP頁面的基本結構2.2變量和方法的聲明2.3Java程序片2.4表達式2.5JSP中的注釋2.6JSP指令標記2.7JSP動作標記82.1JSP頁面的基本結構JSP頁面的基本結構模板元素靜態(tài)HTML/XML內(nèi)容JSP元素腳本元素(聲明、表達式、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頁面的基本結構JSP頁面可由5種元素組合而成:①普通的HTML標記符;②JSP標記,如指令標記、動作標記;③變量和方法的聲明;④Java程序片;⑤Java表達式;<%@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頁面的基本結構JSP頁面的運行原理:把JSP頁面中普通的HTML標記符號,交給客戶的瀏覽器執(zhí)行顯示。

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

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

第二章JSP頁面和JSP標記2.1JSP頁面的基本結構2.2變量和方法的聲明2.3Java程序片2.4表達式2.5JSP中的注釋2.6JSP指令標記2.7JSP動作標記122.2變量和方法的聲明1.JSP頁面的成員變量:2.在JSP頁面的標記符“<%!”和“%>”之間聲明方法。該方法在整個JSP頁面有效。<%!%>第二章JSP頁面和JSP標記2.1JSP頁面的基本結構2.2變量和方法的聲明2.3Java程序片2.4表達式2.5JSP中的注釋2.6JSP指令標記2.7JSP動作標記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標記2.1JSP頁面的基本結構2.2變量和方法的聲明2.3Java程序片2.4表達式2.5JSP中的注釋2.6JSP指令標記2.7JSP動作標記172.4表達式“

<%=”和“%>”之間可以是一個Java表達式。表達式的值由服務器負責計算,并將計算結果用字符串形式發(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表達式思考:<%=%>與<%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標記2.1JSP頁面的基本結構2.2變量和方法的聲明2.3Java程序片2.4表達式2.5JSP中的注釋2.6JSP指令標記2.7JSP動作標記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小結:JSP語法JSP數(shù)據(jù)定義JSP程序塊JSP表達式JSP注釋<%!

變量聲明

%><% Java片段代碼%><%=Java表達式%><%--注釋內(nèi)容--%><!--注釋內(nèi)容[<%=表達式%>]-->23課堂交流JSP與Java24第二章JSP頁面與JSP標記主要內(nèi)容JSP頁面的基本結構變量和方法的聲明Java程序片表達式JSP中的注釋JSP指令標記JSP動作標記難點Java程序片的運行原理Include指令標記與include動作標記關鍵實踐編寫包含5種基本元素的JSP頁面編寫含有JSP指令標記和動作標記的JSP頁面24第二章JSP頁面和JSP標記2.1JSP頁面的基本結構2.2變量和方法的聲明2.3Java程序片2.4表達式2.5JSP中的注釋2.6JSP指令標記2.7JSP動作標記2.6JSP指令標記JSP指令(directive)是為JSP引擎而設計的并不直接產(chǎn)生任何可見輸出只是告訴引擎如何處理JSP頁面中的其余部分在JSP2.0規(guī)范中共定義了三個指令:page指令Include指令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指令標記JSP指令的基本語法格式:舉例:

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

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

,也可以使用多個page指令分別為每個屬性指定值。page指令的作用對整個JSP頁面有效,與其書寫的位置無關,習慣把page指令寫在JSP頁面的最前面。page指令屬性languageimportbuffererrorPageisErrorPagelanguage–定義要使用的腳本語言import–將包和方法導入ScriptletisErrorPage–表示當前頁面能否作為錯誤頁面errorPage–定義處理異常的JSP頁面buffer–設置用來存儲客戶端請求的緩沖區(qū)的大小302.6.1page指令contentType屬性contentType屬性值確定JSP頁面響應的MIME(多功能Internet郵件擴充服務,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是指服務器發(fā)送給客戶端時的內(nèi)容編碼JSP要經(jīng)過兩次的“編碼”,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網(wǎng)頁,用的是contentType。第一階段是JSP編譯成Java第二階段是由Javac的Java源碼至JavabyteCode的編譯第三階段是Tomcat(或其的applicationcontainer)載入和執(zhí)行階段二的來的Java二進制碼3233小結屬性含義默認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)頁的相關信息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表達式true使用page指令解決JSP中文亂碼JSP程序存在中文亂碼問題輸出響應正文時出現(xiàn)的中文亂碼問題讀取瀏覽器傳遞的參數(shù)信息時出現(xiàn)的中文亂碼問題JSP引擎將JSP頁面翻譯成Servlet源文件時也可能導致中文亂碼問題JSP引擎將JSP源文件翻譯成的Servlet源文件默認采用UTF-8編碼,而JSP開發(fā)人員可以采用各種字符集編碼來編寫JSP源文件,因此,JSP引擎將JSP源文件翻譯成Servlet源文件時,需要進行字符編碼轉(zhuǎn)換。如果JSP文件中沒有說明它采用的字符集編碼,JSP引擎將把它當作默認的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指令標記include指令標記的作用是在JSP頁面出現(xiàn)該指令的位置處,靜態(tài)插入一個文件。其語法格式如下:注:如果該文件和當前JSP頁面在同一Web服務目錄中,那么“文件的URL”就是文件的名字;如果該文件在JSP頁面所在的Web服務目錄的一個子目錄中,比如fileDir子目錄中,那么“文件的URL”就是“fileDir/文件的名字”。

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

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

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

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

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

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

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

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

變量聲明

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

溫馨提示

  • 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

提交評論