面向?qū)ο蟪绦蛟O計語言-講義第8章-4javaweb應用開發(fā)jsp技術_第1頁
面向?qū)ο蟪绦蛟O計語言-講義第8章-4javaweb應用開發(fā)jsp技術_第2頁
面向?qū)ο蟪绦蛟O計語言-講義第8章-4javaweb應用開發(fā)jsp技術_第3頁
面向?qū)ο蟪绦蛟O計語言-講義第8章-4javaweb應用開發(fā)jsp技術_第4頁
面向?qū)ο蟪绦蛟O計語言-講義第8章-4javaweb應用開發(fā)jsp技術_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

概JSP(JavaServerPages)是一種與ASP、P類似的Web開發(fā)語言,它能快速地創(chuàng)建和顯示W(wǎng)eb頁面的動態(tài)內(nèi)容。JSPWeb提供了一個簡捷而快速的方法。JSP技術的設計目的是使得構造基于Web的應用程序更加19996月推出的新技術,該技術由Sun公司Java的Web動態(tài)頁面技術。JS19996月推出的新技術,該技術由Sun公司Java的Web動態(tài)頁面技術。JSP秉承了JavaWeb服務器無關,是一種與平臺無關的技術。 據(jù)Sun公司講,JSP85%的WebApache、IS、Netscape等最常用的Web服務器。 簡單來說,JSP是一種服務器 語(ServerSideScript)。提起程序語言,典型代表是Basic、C/C++、Java等等,這些語言通 JSP也是一種語言,它包裝了JavaServlet系統(tǒng)的界面,簡化Java和Servlet的使用難度,同時通過擴展JSP(Tag)提供了網(wǎng)頁動態(tài)執(zhí)行的能力。JSPJava和ServletJSPJSPJava和ServletJSP上可以直接書寫JavaJSPServletJSPWeb服務器(WebServer)上執(zhí)行,并將執(zhí)行結(jié)果輸出到客戶端(Client)瀏覽器,基JSPJSP技術在多個方面加速了動態(tài)Web頁面的使用JSP技術,Web頁面開發(fā) 或者XML標識來設計和格式化最終頁面。使用JSP標識或者 來生成頁面上的動態(tài)內(nèi)容(內(nèi)容書的價格)。生成內(nèi)容的代碼被封裝在Servlet和JavaBean組件中,并且結(jié)合在 HTMLWeb JSPJSP標識和程序,生成所請求的內(nèi)容(例如,通過JavaBeanJDBCHTMLWeb JSP技術封裝了許多功能: 和實例化JavaBean Applet以及執(zhí) 此外,JSP技術可以通過開發(fā)定制的標識庫進行擴展。因此,第開發(fā)和其他可以為常用功能創(chuàng)建自己的標識庫。這使得Web頁面開發(fā)的組件來工作。JSP不僅能生成HTML,而且能產(chǎn)在無線上網(wǎng)變得越來越流行的情況下,JSP甚至可以用來生成無線標識語言(WML),來實現(xiàn)手提 現(xiàn)在流行的制現(xiàn)在流行的制頁的語言主要有ASP,PHP和JSP,它們之間互有優(yōu)ASP ASP的開發(fā)在短時間流行全球,風靡一時。但是它的一個重要缺點是只能運行在微軟公司的Windows制作語言之一。它還借助于C++的形式, Sina、ChinaRen的開發(fā),主要 級執(zhí)行的通病。Sun公司借助自己 JSP的頁面結(jié)構與運行機JSPJSPJSP頁面的結(jié)JSP的運行機JSP頁面看上去像標準的HTML頁面,并附JSP引擎能夠處理和解析執(zhí)行的代碼與組件。通常, 通常來說,JSPJSP頁面結(jié) 除JSP以外,包括了JSP的所有其它語法JSP頁面的結(jié)JSP的運行機JSP一個JSP2JSP引擎進一步將該java源文件編譯成class字節(jié)碼Servlet字節(jié)碼進行3Servlet字節(jié)碼進行 字節(jié)碼存放在Tomcat安裝 6.0\work\Catalina\localhost\ex8-7\org\apaches”“FirstPage_s.class (該包是JSPAPI),其它兩個類的Date和了or.a了or.aache.aser.runtime.HttJsBase類, (1)publicvoid(2)publicvoid該方法執(zhí)行時,會自動調(diào)用JSPAPI中定義的(2)publicvoidjavax.servlet.http.HttpServletResponseresponse)throwsjavax.servlet.ServletException, e. 的注釋轉(zhuǎn)換來的的注釋轉(zhuǎn)換來的JSP運行 JSP的頁面結(jié)構與運行機JSPJSPJSP JSP JSP “XML”語法的JSP元素一般來說都有一個包含有元素項,和一個結(jié)束標志。當然,JSP JSP JSP JSPJSPJSP指令(directive)的作用是告知服務器如JSP頁面,以指示服務器將JSPServletJSP指令用“<%@”和“%>”標記封閉,語<%@指令名指令屬性=“JSPJSPServlet 實現(xiàn)的接口、Servlet擴展的類、Servlet導入JSPJSPServletPageJSPPageimport屬importPage指令的基本語法格式如page_directive_attr_list::={language="{extends="{import="{contentType="ctinfo"{contentType="ctinfo"{isThreadSafe="true|false"{info="info_text"{errorPage="error_url"language=extends=extends=extendsJSP頁面產(chǎn)生的servlet的父import=“package.*,例如:例如:<%@page同樣,它總是被放在JSPimport變量session=“true|sessiontrue,表示當前頁面中將會話是HTTPHTTP決定輸出流(out對象)是否需要緩沖,缺省值是8kbautoFlush一起決定輸出流(out對象)是否需要緩沖,缺省值是8kbautoFlush一起使這個屬性的最簡單的值 none,在這種情況下,沒有任緩沖區(qū),所有輸出都被直接輸出該屬性值還可以是以千字節(jié)為單位的緩沖區(qū)大小。 大小被指定時,頁 何處理取決于autoFlush屬性的值。autoFlush=“true|確定是否自動刷新輸如果該屬性的值為“true”,緩沖區(qū)在每次滿時都被如果該屬性的值為“false”,則當緩沖區(qū)溢出時增加小如果設置buffer="none"而且autoFlush="false生一個錯誤isThreadSafe=“true|isThreadSafeJSPtrue”,則通知容器,它可true”,則通知容器,它可 true”true”true”info=“text”,例如:pagecontentType="text/html;

info="此網(wǎng)頁將示范網(wǎng)頁指令中,page<TITLE>info<FONTSIZE5COLORBLUE>info屬性的使用<!--下面的語句將取得網(wǎng)頁指令所設置的info<%getSrvletInfo()在實際應用中不必將這樣的信息包含在Web頁面中。但是,有可能會將這些信息寫入日志。<%getSrvletInfo()ErrorPage=“pathToErrorJSPJSP徑處理例外的那個JSP處理例外的那個JSP文件要把isErrorPage設成trueisErrorPage=“true|<%@pageinfo="BadPage"<%@pageinfo="BadPage"<%@pageerrorPage="errorpage.jsp"<title>PageWith<%booleantf=if(tf){Stringinfo=thrownewException("Exceptionin"+info);處理錯誤的頁面<%@pageisErrorPage="true"<h1>ERROR!!</h1><h2><%=exception.getMessage()</h2>Exception沒有catch語句,Exception對象被傳送到errorpage.jsp,該頁被設計為errorPage。ContentType=“text/HTML;charset=ISO-8859-ContentType=“text/HTML;charset=ISO-8859-或contentType=“text/html;JSPHTMLISO-8859-1,contentType屬ISO-8859-1,contentType屬 使用errorPage屬性和isErrorPage屬性跳轉(zhuǎn)至 誤顯示出來,以便根據(jù)500出錯的具體原因,再 <%@includefile=在這個指令中應該使例例<%@pagecontentType="text/html;charset=GB2312"<TITLE>include指令的使用<FONTSIZE5COLORBLUE>include指令的使用<!--下面的語句將載入heading.inc<!--下面的語句將載入heading.inc<%@includefile="heading.inc"JSP引擎可解釋的標識集合可以進行擴展,它可以包含有自義的自定義標識。這樣的集合被稱為“taglib指令用于指明當前頁面中使用了自定義的,并告訴JSP引擎在編譯JSP頁面時,到哪里能找到這些的定義。同時為避免自定義重名,還指明的前綴,保證了在編譯JSP頁面時能惟一地識別出它使用的?;A語<%@tagliburi="tagLibraryURI"prefix="tagPrefix" <%@taglib /supertags"prefix="myPrefix"<myPrefix</myPrefix<%@taglib%>指令 此JSP文件使用了自定義的標 其實等于JSP元素。JSP元素是JSP語法的一部分,和XML一樣有開始標識和結(jié)束標第一種是標準動作,它定義的是無論在什么版本的JSP擎或Web服務器下總是可用的動第二種是自定義動作,它通過使用taglib指令來實JSP:useBean:用 對一個JavaBean組件實例的使用JSP:setProperty:用于在組件的實例中設置一個JSP:getPropertyJSP:setProperty:用于在組件的實例中設置一個JSP:getProperty將其轉(zhuǎn)化為字符串,并且將它放入隱含對象“out”除此外還有JSP:include,JSP:forward,JSP:plugin等標 【例8.8】JSP指令的使用本例由三個JSP頁面組成MainPage.jsp為主頁面,其page指令指定了由ErrorPage.jsp–Included.jsp頁面包括進來,完成頁面的–Included.jsp頁面包括進來,完成頁面的顯示,如果有請數(shù),則模擬拋出一個異常,交由ErrorPage.jsp頁面處IcldedjSe接rIaiisErrorPage屬性被指定為true。該頁面中的操isErrorPage屬性被指定為true。該頁面中的操作一個是顯示出page指令中指定的info信–注意:ErrorPage.jsp頁面不受MainPage.jsp頁面page指令的影響,它獲得的info信息為“JasperJSP2.1Engine”,這是頁面缺省者向后者發(fā)請求)JSP JSP JSPJSP 用于定義合法的變量和方法。與任何語言相同,JSP語言使用變量來保存數(shù)據(jù)。這些變量用declaration元素 當頁面被初始化的時候,JSP頁面中的所有 <%!inti=1;<%!inta,b,c;<%!PointP=new在當頁面被初始化的時候,JSP頁中的所有都被初始化。在初始化之后,的變量能在編程語除了簡單的變量,方法也能被,例如<%!publicStringf(inti)if}不對當前輸 的變量和方法用“<%!”和“%>”標記封在JSP程序中的所有變量和方法在使用前都必 的變和方法,不需要在對它們重新進 一 僅在一個頁面中有效。如果想在每個頁面中共用 ,可以把它們單獨寫成一個文件,然后用<%@ 它們都include了,那么就會發(fā)生錯誤了。 SJaaJSP面應Sre,在內(nèi)多瀏包不的器瀏在 , 的同r例,JSP中 客端共。因個 值后的 到是改的。屬性(成員變量)<%@pagecontentType="text/html;charset=GB2312"inti=voidchagevalue(int{i=}<FONTSIZE5COLORBLUE調(diào)用函數(shù)前,<Fontcolorred>iintinput10; 調(diào)用函數(shù)后,<Font調(diào)用函數(shù)后,<Fontcolorred>i靜態(tài)屬性定義的實例(//定義靜態(tài)屬staticinti=<TITLE>靜態(tài)屬性的使<TITLE>靜態(tài)屬性的使用<FONTSIZE5COLORBLUE>靜態(tài)屬性的使用<%i++;除非重新啟服務器,否則i<Fontcolor=red>i除非重新啟服務器,否則i<%@pagecontentType="text/html;charset=GB2312"doubleCircleArea(double{doublePI3.1415926 returnPI*Radius*Radius;<FONTSIZE5COLORBLUE>doubleArea=for(inti=1;i<=5;{<FONTCOLOR=BLUE><%=i<FONTCOLOR=}JSP JSP JSPJSP表達式的作用向客戶端輸出結(jié)果,用“<%=”和“%>”標記封閉。語法為:<%=Java字面量|已賦值的Java變量|具有返回值的java表達式 out.print(Java字面量|已賦值的Java變量|具有返回值的java表達式 <%=5<%=x+y<%=<%=(newjava.util.Date()).toString() (不以“;”結(jié)束) JSP JSP JSP

<% 編譯JSP頁面時,“<%”和“%>”中間的內(nèi)容被原樣地轉(zhuǎn)換到Servlet的_jspService()方法中,因此,其中的變量和方法僅在_jspService()在代碼段中的變量和方法是局部變量和不是所有的服務器都支持在程序段中的,有的服務器不支持,還有的服務器要求在的同時必用“%\>”代替必須記住,一個JSP頁中的所有程序段在連接中Java用“%\>”代替用“<\%”代正如Java源代碼中允許將較長語句分成多行,對于較長的Java語句也可以寫到幾個JSP <%%>標記內(nèi),前提是這些JSP代碼段的 if(authorif(author!=null)out.write();}作者:<%=author%><br<%if(title!=null)<%if(author!=null)

if(title!=null){}(2)if(title!=nullif(title!=null)}if(author!=null)>"}<%if(title!=null)}if(author!=null)>"}JSP JSP JSP JSP:顯式注釋在JSP頁面的代碼中可見,它由JSP將處理后的注釋發(fā)往HTML(顯式注釋<!--說明性文字 |JSP表達式|JSP程序段]--這種注釋與HTML果其中以在注釋中任意加入JSP表達式,只要這個表達式是合法 <!--其他注釋內(nèi)容intout.rintintout.rint %>-- 本頁加載時間:FriJul1315:53:08CST2012 隱式釋--容通過這種方法加入的注JSP下面是JSP本身的注釋語法的例JSP–T”實際上,由于在JSP的“代碼”部分中,”*這是一個Scriptlet中的注釋* **這也是一個Scriptlet中的注釋,可 JSP<!--ThisisaHTML<!--ThisisaHTMLcomment--<%@page<title>ACommentSamle!<<h3><center>AComment<%--ThisisaJSPcomment--我們可以看到,HTML我們可以看到,HTMLJSPJSP JSP JSPJSP在JSP頁面中,用符合XML規(guī)范的來指示頁面執(zhí)行某種動作,這些稱為動作。一類是標準動作,由JSP規(guī)范中定義, 動作用于執(zhí)行影響輸出的文本流,使用、編輯、建立常用的JSP標準動 用于引入一個靜態(tài)或動態(tài)的頁面到一個JSP文件<jsp:include>動作可以包含一個或幾JSPparam<jsp:includepage=“url”<jsp:includepage=“url”或<jsp:includepage=“url”若用<jsp:paramname=“..”value=“…”/>傳參數(shù)時request.getParameter()獲得與<%@includeinclude編譯指令是在JSP程序的轉(zhuǎn)換時期時就file譯載入,file所指定的JSP程序并不會被單獨編include動態(tài)的編譯載入,而page所指定的JSP程序會被個別的編譯轉(zhuǎn)換成另一個Servlet類。這就提高嚴格地說,<jsp:includeinclude()的響應會并入include()的響應會并入已有的<jsp:forward> saram本例包括兩個JSP頁DispatcherDemo.jsp是對DispatcherDemo.java的改 JSP的頁面結(jié)構與運行機JSPJSPJSPJSP基于Java語言,面向?qū)ο笠彩撬囊淮?組件對象??梢哉f,對象是JSP編程技術的

aapiaoSrltoteapplication對象是一個很重要的一些公用的數(shù)每個Web應用程序有一個application對象,application對象是容請求Web頁的全部用戶可請求Web頁的全部用戶可以共量application對象的作用域為整個Web程序。一旦創(chuàng)建,它就會持由 在 對象中的數(shù)值可以被應用程序的所有用,所以application applicationsetAttribute(Stringname,Object用object來初始化某個屬性,該屬性由name指返回由name返回由name指定名字的application對象屬性的值,這是Object返回所有applicationEnumeration(枚舉)getInitParameter(String返回application這個屬性的初始值,此屬性由name獲得獲得當前版本Servlet例<%@pagecontentType="text/html;charset=GB2312"<FONTSIZE5COLORblue>application變量的使用ObjectobjObjectobj=intNum=if(strNum!=null)",));//=<Font<Fontcolor=red><%=Numsession對象被定義成HttpSession類型,封裝 用戶在Web應用程序中 之間跳轉(zhuǎn)時, 在session對象中的變量也不會清除,當然也可以使用session方法顯式session對象需要與page指令配合使<%@page<%@pagepaeesioesioeo如果當page指令中的session屬性設為false,JSP不過,可以使用request對象的etSession 提供不過,可以使用request對象的etSession session法法 回 起至今的毫秒獲得session對象的生存時間,默認為30分鐘 每生成一session對象,服務器都會給其一個不會返回session對象中 的第一個屬性對象,結(jié)果集返回該session對象創(chuàng)建的時間,以毫秒計,從重復 ,此方法返回當前sessionSession%@pagecontentType="text/html;<FONTSIZE5COLORblue>session變量的使用intNum=Objectobj=//從session對象取得Numif(obj=={//設定session//設定session對象的Num}{Num=//取得session對象中的Num//設定session對象的Num}=<Fontcolor=red><%=Numrequest對象是HttpServletRequest類我們可以通過這個對象來取得有關客戶端的請求信息。JSP網(wǎng)頁時,JSP引擎會將客戶端的request對象中,請求信息的內(nèi)容包括請求的頭標(Header)、信息(如瀏覽器的版本信息、語言和編碼方式等)、請求的方式(如HTTP方法:GET、我們可以通過這個對象來取得有關客戶端的請求信息。 返回客戶端 對象,結(jié)果是一 數(shù)(小甜餅 技術首次出現(xiàn)在NetscapeNavigatorIE與Netscape兩大主流瀏覽器都支 時,讓Web 記錄的,而在ServletAPI中提供了一個 c= ("username", 對象的關鍵字,John為對應的值getHeader(Stringrae返回name返回request返回request對象所有屬性的名字,結(jié)果集是一Enumeration(枚舉)(枚舉)類的實例getHeaders(String返回所有requestheader(枚舉)類的實例getHeaders(String獲得客戶端向服務器端傳送數(shù)據(jù)的方法有GET、POSTPUT等類型獲得客戶獲得客戶端傳送給服務器端的參數(shù)值,該參數(shù)由name arameterNames獲得客戶端傳送給服個Enumeration(枚舉)類的實例獲得指定參數(shù)所有獲得查詢字符串,該串由客戶端以GET方法向服務器端送獲得發(fā)出請求字符串獲得客戶端所請求設定名字為name的request參數(shù)值,該值由Object類型的o定獲得

溫馨提示

  • 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

提交評論