JSP運行機制與基本語法_第1頁
JSP運行機制與基本語法_第2頁
JSP運行機制與基本語法_第3頁
JSP運行機制與基本語法_第4頁
JSP運行機制與基本語法_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章JSP運行機制與基本語法第三篇JSPWeb數(shù)據(jù)庫應用開發(fā)1

JSPJSP的基本語法與使用方法;JSP內(nèi)置對象,熟練掌握JDBC接口技術,熟練掌握數(shù)據(jù)庫連接技術,熟練掌握

JSP數(shù)據(jù)庫信息發(fā)布技術,熟練掌握

JSP應用知識點與技術要求:主要知識點及要求:2Web應用程序目錄結構

Web應用程序HTML文件圖像ServletJSP頁面JavaBeanJar文件Applet標簽文件標簽庫描述符文件部署描述器.war文件文檔根目錄Web應用程序目錄結構index.html,login.jsp,contactus.jspViewBooks.jsp,logo.jpgbook1.jpgAddBook.class,DeleteBook.class

mbase.jar,msqlserver.jar,msutil.jarDisplayBook.tag

web.xml,books.tld

文檔根目錄靜態(tài)文件(html,images……)WEB-INFJSP類庫標簽.tld,web.xml3Web應用程序目錄結構4Web服務器常用的Web服務器ApacheIISTomcatResinIBMWebSpareBEAWebLogicTomcat安裝與配置Tomcat的目錄介紹MyEclipse中Tomcat的配置5JSP概述JSP(JavaServerPage)JSP是由Sun公司倡導、許多別的公司參與一起建立的一種新動態(tài)網(wǎng)頁技術標準,類似其他技術標準,如ASP、PHP等等。JSP技術是一個純Java平臺的技術,它主要用來產(chǎn)生動態(tài)網(wǎng)頁內(nèi)容,包括:HTML、DHTML、XHTML和XML在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標簽,構成了JSP網(wǎng)頁(*.jsp)6JSP程序示例<%@pagecontentType="text/html;charset=GBK"%><html><head><title>第一個JSP頁面</title></head><bodybgcolor="#ffffff"><%

java.util.Datenow=newjava.util.Date();

out.println("當前時間是:"+now);%><h1>你好,這就是一個JSP頁面,簡單不?</h1></body></html>演示示例17JSP頁面組成元素JSP頁面的元素靜態(tài)內(nèi)容指令表達式ScriptletJSP頁面<%Java代碼%><%=Java表達式%>HTML靜態(tài)文本以“<%@”開始,以“%>”結束。比如:<%@includefile="

Filename"%>聲明動作<%!函數(shù)或方法%>以“<jsp:動作名”開始,以“</jsp:動作名>”結束比如:<jsp:includepage="Filename"/>注釋<!--這是注釋,但客戶端可以查看到--><%--這也是注釋,但客戶端不能查看到--%>8JSP頁面組成元素<%@pagecontentType="text/html;charset=GBK"language="java"import="java.util.Calendar"%><%!StringgetHello(Stringname){return"Hi,"+name+"!";}%><%Calendarnow=Calendar.getInstance();%>JSP聲明JSPScriptletJSP指令9JSP頁面組成元素<html><head><title>JSP頁面構成</title></head><!--這是注釋,但客戶端可以察看到--><%--這也是注釋,但客戶端不能察看到--%><body><h1align="center">JSP頁面構成</h1><%=getHello("朋友")%><%if(now.get(Calendar.AM_PM)==Calendar.AM){%>早上好!<%}else{%>下午好!<%}%><br><br><jsp:includeflush="false"page="welcome.jsp"><jsp:paramname="str"value="參數(shù)"/></jsp:include></body></html>靜態(tài)內(nèi)容JSP表達式JSP注釋演示示例2JSP動作10JSP程序執(zhí)行過程客戶端發(fā)出請求(request)JSPContainer將JSP轉(zhuǎn)譯成Servlet

的源代碼將產(chǎn)生的Servlet

的源代碼經(jīng)過編譯后生成.class文件,并加載到內(nèi)存執(zhí)行把結果響應(response)至客戶端11JSP程序執(zhí)行過程在執(zhí)行JSP網(wǎng)頁時,通??煞譃閮蓚€時期:轉(zhuǎn)譯時期(TranslationTime)和請求時期(RequestTime)。轉(zhuǎn)譯時期:JSP網(wǎng)頁轉(zhuǎn)譯成Servlet

類。請求時期:Servlet

類執(zhí)行后,響應結果至客戶端。補充:轉(zhuǎn)譯期間主要做了兩件事情:將JSP網(wǎng)頁轉(zhuǎn)譯為Servlet

源代碼(.java),此段稱為轉(zhuǎn)譯時期(Translationtime);將Servlet

源代碼(.java)編譯成Servlet

類(.class),此段稱為編譯時期(Compilationtime)。12JSP技術的優(yōu)點WriteOnce,RunAnywhere特性作為Java平臺的一部分,JSP技術擁有Java語言“一次編寫,各處執(zhí)行”的特點。搭配可重復使用的組件JSP技術可依賴于重復使用跨平臺的組件(如:JavaBean或EnterpriseJavaBean組件)來執(zhí)行更復雜的運算、數(shù)據(jù)處理。開發(fā)人員能夠共享開發(fā)完成的組件,或者能夠加強這些組件的功能,讓更多用戶或是客戶團體使用?;谏萍永媒M件的方法,可以加快整體開發(fā)過程,也大大降低公司的開發(fā)成本和人力。JSP頁面1靜態(tài)內(nèi)容動態(tài)內(nèi)容JSP頁面2靜態(tài)內(nèi)容動態(tài)內(nèi)容JSP頁面3靜態(tài)內(nèi)容動態(tài)內(nèi)容JavaBean多個JSP頁面使用相同的JavaBean13使用MyEclise開發(fā)Web應用MyEclispse介紹MyEclipse是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate,Spring等技術。MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴展,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應用程序服務器的整合方面極大的提高工作效率。安裝MyEclipse配置MyEclipse使用MyEclipse開發(fā)JSP應用示例14Web應用程序的部署為什么要部署Web應用程序?Web應用程序不能獨立運行,必須放在WebServer環(huán)境中,由WebServer來管理和運行在Tomcat中部署Web應用文件夾方式部署WAR文件方式部署利用MyEclipse進行部署自定義虛擬目錄,示例如下:<Contextpath="/exam"docBase="D:\Workspace\exam\WebRoot"reloadable="true"/>15JSPJSP頁面結構

JSP文件由兩部分組成:(1)<%……%>標記以外的部分(2)在<%……%>標記內(nèi)的代碼,標記內(nèi)的代碼即為JSP代碼。JSP代碼由JSP引擎處理。

16JSPJSP基本語法

JSP頁面組成

JSP常用的語句主要有以下五種類型:(1)注釋:<%--注釋內(nèi)容--%>(2)聲明:<%!預定義內(nèi)容%>(3)表達式:<%=表達式%>(4)腳本段Scriptlet:<%代碼%>(5)指令:<%@指令%>(6)動作:<jsp:動作>17JSP注釋

JSP中的注釋分為兩種:(1)發(fā)送到客戶端,在客戶端可見的注釋,稱為HTML注釋;(2)發(fā)送到服務器端,在客戶端不可見的注釋,稱為隱藏注釋。

18JSP2.HTML注釋

JSP引擎對HTML注釋不作任何解釋,直接送交客戶端瀏覽器,用戶可以在客戶端瀏覽器中,查看到HTML注釋。HTML注釋的語法規(guī)則如下:<!—注釋<%=表達式%>-->

例如,<!--<%=str%>-->,<!--HTML注釋-->等如果在注釋中應用了表達式,所有嵌入的JSP代碼仍在服務器端編譯執(zhí)行,并將執(zhí)行結果返回客戶端的源代碼中。例如,

注釋語句:<!--頁面訪問時間:<%=(newjava.util.Date()).toLocaleString()%>-->在客戶端見到的源代碼是:<!--頁面訪問時間:2004-8-1921:21:35-->19JSP3.JSP注釋

JSP注釋在客戶端見不到,也稱隱藏注釋。隱藏注釋寫在JSP代碼中,不發(fā)送到客戶端,在客戶端的源文件中見不到隱藏注釋。隱藏注釋的語法規(guī)則如下:<%--注釋--%>

JSP引擎編譯時忽略“<%--”和“--%>”之間的語句。隱藏注釋是給編程人員看的,屬于內(nèi)部資料,他們即不在客戶端瀏覽器中顯示,也不能在客戶端的“查看源文件”中看到。例如注釋語句:<%--服務器端注釋--%>在客戶端的源文件中被空白行代替。20JSP聲明在“<%”和“%>”標記之間聲明變量和方法,在整個JSP頁面有效,內(nèi)存空間在服務器關閉后才被釋放。多個用戶請求同一個JSP頁面時,JSP引擎為每個用戶啟動一個線程,這些線程由JSP引擎管理。這些用戶共享JSP頁面的成員變量。利用用戶共享成員變量的特點,可以制作計數(shù)器等功能。1.聲明的語法規(guī)則<%!聲明;[聲明;]……%>例如:<%!inti=6;%><%!int

a,b,c;doubled;%><%!Circlea=newCircle(6.0);%>等。21JSP2.使用注意事項

?可以一次聲明多個變量和方法,以“;”號結尾?一個聲明只在一個頁面有效。對于每個頁面都要用到一些聲明,最好把這些聲明寫成一個單獨的文件,然后用<%include%>或<jsp:include>指令包含進來;?可以直接使用在<%@page%>中被包含進來、已經(jīng)聲明了的變量和方法,不需要重新聲明。

22JSP3.應用示例例:聲明1個int類型的變量num,用來統(tǒng)計訪客人數(shù),2個String變量,和一個時間對象。因為JSP聲明不產(chǎn)生任何輸出,所以需要和JSP表達式及JSP腳本結合起來使用,把他們輸出到頁面上。當有多個用戶訪問該頁面時,所有用戶共享變量num。23JSP表達式表達式將JSP生成的數(shù)值嵌入HTML頁面,直接輸出Java代碼值.1.語法規(guī)則“<%=”和“%>”之間插入JSP表達式。語法:<%=

表達式%>例如:<%=“<fontsize=4color=red>字體由小變大顯示</font>”%>

24JSP2.應用注意事項

不能用“;”號做表達式的結束標志,但是同樣的表達式在scriptlet中需要用分號作為結束符;“<%=”是一個完整的標記,中間不能有空格;

表達式元素包括任何在JavaLanguageSpecification(即Java語言規(guī)范)中有效的表達式;

有時表達式也可以成為其他JSP元素的屬性值。一個表達式可以由一個或多個表達式組成,按從左到右的順序求值。例:<%=str1%><%=num%><%=str2%><%=MyDate.toLocaleString()%>25JSPJSP腳本段1.JSP腳本元素語法規(guī)則

(1)腳本段是一個代碼片段,界定在“<%”和“%>”之間,在服務器處理請求過程中被執(zhí)行。

(2)JSP腳本段可以包含任意行合法腳本語句,在服務器端被腳本引擎編譯執(zhí)行,執(zhí)行結果嵌入HTML后一起發(fā)送到瀏覽器端。

(3)一個JSP頁面可以有多個腳本段,被JSP引擎順序執(zhí)行。

(4)在一個腳本段中聲明的變量是JSP頁面的局部變量,在JSP頁面的所有腳本段和表達式部分有效。當腳本段被調(diào)用時,局部變量被分配內(nèi)存空間;調(diào)用結束后,局部變量占有的內(nèi)存空間被釋放。在多個用戶請求同一個頁面時,JSP引擎為每個用戶啟動一個線程,為不同用戶的局部變量分配不同的內(nèi)存空間,所以某個用戶對局部變量的操作,不會影響另一個用戶的局部變量。語法:<%代碼%>26JSP例如:<% //控制文字大小的循環(huán)語句

for(inti=4;i>1;i--)

out.println("<h"+i+">Web技術應用教程</h"+i+">");%>27JSP2.腳本元素的功能

和頁面的靜態(tài)元素(例如HTML或XML)組合在一起生成動態(tài)頁面。一個Scriptle能夠包含多個JSP語句、方法、變量和表達式。

聲明將要用到的方法和變量;

編寫JSP表達式;

編寫JSP語句;

使用任何隱含對象和用<jsp:useBean>聲明過對象;

填寫任何文本和HTML標記。

顯示內(nèi)容被存放在out對象中。例如:out.println("<h"+i+">Web技術應用基礎</h"+i+">")把文字輸出到頁面上。28JSPJSP基本語法應用案例例7.4:瀏覽器根據(jù)Web服務器系統(tǒng)的時間,向用戶顯示不同時間段的問候。

29JSPJSP指令JSP指令功能

(1)通知JSP引擎如何處理JSP頁面,不直接產(chǎn)生任何可見輸出。

(2)“<%@”開始,“%>”結束,<%@pagelanguage=“java”%>。

(3)兩個主要的指令是:include和page。其它如:import、errorPage和session也是JSP常用指令。<%@includefile=〝filename.jsp〞%>,指出被包含的文件。<%@pageimport=〝java.util.Date〞%>,指定在哪里找到支持的Java類。<%@pageerrorPage=〝errorPage.jsp〞%>,指出如果發(fā)生Java錯誤事件,將信息發(fā)送到哪個錯誤頁面。<%@pagesession=〝true〞%>,指示是否需要為使用者管理會話期的信息。30JSPinclude指令1.include指令應用的語法規(guī)則<%@includefile=〝相對位置〞%>或<%@includefile=〝relativeURL〞%>2.include指令功能

加載需要插入的文本或代碼,它把文件插入當前位置后合并成一個新的JSP頁面,再由JSP引擎轉(zhuǎn)譯成Java文件。被插入的文件可以是JSP文件、HTML文件或其他文本文件。31JSP3.include指令應用案例

例5:ex7-05.jsp文件插入ex7-05_1.jsp文件

32JSPpage指令1.page指令功能定義整個JSP文件要使用的屬性和屬性值,在JSP程序編譯時將這些屬性傳遞給JSP引擎。page指令可以用來指定所用所使用的腳本語言、JSP代表的Servlet實現(xiàn)的接口,導入指定的類及軟件包等。33JSP2.page指令的語法規(guī)則<%@page屬性1=〝屬性值1〞屬性2=〝屬性值2〞……%>或<%@page[language="java"][import="{package.class|package.*},…"][extends="package.class"][session="true|false"][buffer="none|8kb|sizekb"][autoFlush="true|false"][isThreadSafe="true|false"][info="text"][errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]%>34JSP例:<%@pagelanguage="java"%>//使用的腳本語言是Java<%@pageimport="java.util.*"%>//導入java.util包<%@pagesession="true"%><%@pagecontentType="text/html;charset=gb2312"%><%@pagebuffer="15kb"autoFlash="false"%>//緩沖區(qū)15k,溢出時拋出異常<%@pageerrorPage="error.jsp“//定義當前未撲獲的異常處理頁面35JSPtaglib指令1.功能

定義一個標記庫以及標記的前綴。

語法規(guī)則<%@taglib

uri="URIToTagLibrary"prefix="tagPrefix"%>(1)聲明使用自定義標記,引用標記庫,指定庫中標記的前綴。例:定義前綴public,前綴public將一個標記庫引入到這個頁面,并使其值生效。假設該標記庫包括一個在本頁面使用的loop元素。注意,不能為兩個不同的標記庫定義同樣的前綴。<%@taglib

uri="http:///tags"prefix="public"%><public:loop>……</public:loop>36JSP屬性說明:

uri="URIToTagLibrary"UniformResourceIdentifier(URI)根據(jù)標記前綴對自定義標記進行唯一的命名,URI可以是以下內(nèi)容:

UniformResourceLocator(URL)UniformResourceName(URN)

一個相對或絕對路徑

prefix=“tagPrefix”自定義標記前的前綴,例如<public:loop>中的public。如果不寫public是不合法的。不能使用jsp、jspx、java、javax、servlet、sun和sunw做前綴,這些前綴已經(jīng)被sun公司聲明保留。37JSPJSP指令應用案例例6:

page指令session應用方法,在頁面上輸出一個sessionID。38JSPJSP動作JSP動作功能

控制JSP引擎的行為,執(zhí)行標準常用的JSP頁面的動作,動態(tài)插入文件、重用JavaBeans控件、導向另一個頁面、或為Java插件(Plugin)生成HTML代碼等。JSP動作使用XML語法格式,例如:<jsp:includepage="bottom.jsp">。動作有:jsp:include:在頁面得到請求時包含一個文件;jsp:forward:引導請求者進入新的頁面;jsp:plugin:插入一個applet或Bean。39JSPjsp:include動作1.jsp:include動作功能

在即將生成的頁面上動態(tài)地插入文件,是頁面運行時才將文件插入,對被插入文件進行處理。jsp:include動作與include指令的區(qū)別:jsp:include動作是動態(tài)的,include指令是靜態(tài)的。jsp:include動作插入文件時,JSP引擎不把插入文件和原JSP文件合并成一個新的JSP文件,在運行時把被插入文件包含進來。

include指令是靜態(tài)的,把被插入文件插到當前位置后再進行編譯。

40JSP2.jsp:include動作語法規(guī)則<jsp:includepage="文件名"flush="true"/>或<jsp:includepage="文件名"flush="true"><jsp:paramname="參數(shù)名1"value="參數(shù)值1"/><jsp:paramname="參數(shù)名2"value="參數(shù)值2"/>……</jsp:include>(1)page="文件名"

需要插入文件的URL,是相對路徑或代表相對路徑的表達式。(2)flush=“true”,默認值是false。(3)<jsp:param><jsp:param>子句把一個或多個參數(shù)傳送到要插入的文件中去,一個頁面可以使用多個<jsp:param>傳遞多個參數(shù)。傳遞參數(shù)時,被插入文件用以下語句獲取傳入的參數(shù):request.getParameter("參數(shù)名")41JSP3.應用舉例(1)例7:網(wǎng)上書店的新書展示欄目,為每一本新書制作一個文件,每個文件是一本新書介紹,在

代碼中插入了4個文件。如果新書書目改變,只需要改變這4個文件中的相關內(nèi)容就可以了。42JSP(2)例8:

應用<jsp:include>動作插入求階乘的文件,并把求階乘所需要的參數(shù)傳遞給原文件。43JSPjsp:forward

動作1.jsp:forward動作功能

停止當前頁面的執(zhí)行,轉(zhuǎn)向到另一個HTML或JSP頁面。在執(zhí)行中JSP引擎不再處理當前頁面剩下的內(nèi)容,緩沖區(qū)被清空。使得用戶在客戶端看到的是A頁面的地址,而實際顯示的是B頁面的內(nèi)容。forward動作在控制型的JSP頁面中經(jīng)常使用。44JSP3.應用舉例(1)例9:將頁面從新導向到另一個頁面。第一個文件

中的兩行文字沒有在瀏覽器中顯示,瀏覽器地址欄目中顯示的是第一個文件的URL,而頁面顯示的是第二個文件的內(nèi)容。45JSP(2)例7.10:

在用戶輸入圖書信息后,可以有兩個選擇,如果選擇“詳細信息”單選鈕,單擊“確定”按鈕后頁面導向詳細信息頁面;如果選擇“圖書購買”單選鈕,則定向到圖書購買頁面。它由四個程序組成:ex7-10.html:讀者登錄時在界面中可以選擇重新定向的不同頁面;ex7-10_1.jsp:判斷讀者選擇的頁面,根據(jù)讀者的選擇確定目標頁面;ex7-10_2.jsp和ex7-10_3.jsp:目標頁面。46JSPjsp:plugin動作1.jsp:plugin動作功能動態(tài)下載服務器端的Java小應用程序(Applet)或JavaBean組件到瀏覽器端去執(zhí)行,相當于在客戶端瀏覽器插入Java插件。

jsp:plugin動作指定對象是applet還是Bean,同時也會指定字節(jié)碼文件(.class)的名稱與位置。47JSP2.jsp:plugin動作的語法規(guī)則<jsp:plugin type="bean|applet" code="保存類的文件名"

codebase="類路徑" [name="對象名"] [archive="相關文件路徑"] [align="bottom|top|middle|left|right"]//對齊方式

[height="displayPixels"]//高度

[width="displayPixels"]//寬度

[hspace="leftRightPixels"]//水平間距

[vspace="topBottomPixels"]//垂直間距

[jreversion="Java環(huán)境版本"] [nspluginurl="供NC使用的plugin加載位置"] [iepluginurl="供IE使用的plugin加載位置"]>

48JSP<jsp:params>

<jsp:paramname="參數(shù)名1"

value="參數(shù)值1"/><jsp:paramname="參數(shù)名2"

value="參數(shù)值2"/>……

</jsp:params>[<jsp:fallback>錯誤信息</jsp:fallback>]</jsp:plugin>49JSP屬性:(1)type="bean|applet"

指定\插件對象的類型是Bean還是Applet。(2)code="保存類的文件名"指定要執(zhí)行的字節(jié)碼(JavaClass)文件名字。(3)codebase="類路徑"JavaClass文件的目錄(或是路徑),如果沒有提供該項屬性,那么默認為:使用<jsp:plugin>動作的JSP文件的路徑。(4)name="對象名"bean或applet實例的名字,可在JSP其他地方調(diào)用。50JSP(5)archive="相關文件路徑"

逗號分開的路徑名,預裝將要使用的class。(6)Align="bottom|top|middle|left|right"圖形、對象和Applet的位置:bottom:位于底部;top:位于頂部;middle:位于中間;left:位于左邊;right:位于右邊。(7)height="displayPixels"width="displayPixels"Applet或Bean的長與寬,以像素為單位。(8)hspace="leftrightPixels"

vspace="topbottomPixels"Applet或Bean在屏幕左、右、上、下需要留下空間,像素為單位。(9)jreversion="Java環(huán)境版本"運行Applet或Bean所需要的JaveRuntimeEnvironment(JRE)的版本,默認值是1.1。

51JSP(10)iepluginurl="供IE使用的plugin加載位置"IE用戶能夠使用的JRE的下載地址,是一個標準的URL。例如,http://www.asp.cm/jsp。(11)<jsp:params> 需要向applet

溫馨提示

  • 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

提交評論