




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JavaWeb網站設計開發(fā)第8章JSP技術基礎內容8.1JSP技術概況8.2JSP基本語法8.3JSP指令8.4JSP動作8.5JavaBean技術8.1JSP技術概況
JSP(JavaServerPages)是由SunMicrosystems公司倡導、許多公司參與一起建立的一種動態(tài)網頁技術標準。JSP技術是將小段的Java程序代碼(Scriptlet)和JSP標簽插入HTML文件中,形成在服務器端運行的JSP文件(通常擴展名為.jsp)。作為基于Java的網站開發(fā)技術,JSP應用程序具有跨平臺等特性,因而在網站項目開發(fā)中得到廣泛應用。JSP與JavaServlet一樣都是在服務器端執(zhí)行的,執(zhí)行的結果通常以HTML文件的形式由Web服務器返回給瀏覽器端。8.1JSP技術概況JSP在的技術優(yōu)勢:(1)跨平臺性。JSP技術支持多種操作系統(tǒng)和硬件平臺,可以在Windows、Linux、Unix中直接部署,代碼無需改動。(2)可伸縮性。JSP可以運行在很小的系統(tǒng)中來支持小規(guī)模的Web服務,也可以運行到多臺服務器中來支持集群和負載均衡機制。(3)開發(fā)工具的多樣性和開放性。目前,已經有了許多優(yōu)秀的開發(fā)工具支持JSP的開發(fā),而且其中有很多是開源產品。廣泛的技術支持為JSP的發(fā)展帶來了巨大的動力。(4)服務器端的可擴展性。JSP支持服務器端組件,JSP可以使用成熟的JavaBean組件來實現(xiàn)復雜商務功能。DEMOJSPHello8.1演示.mp48.2JSP基本語法8.2.1Java腳本在“<%”和“%>”之間可以包含任何符合Java語言語法的程序片段。此標簽中嵌入的代碼段在服務器端被執(zhí)行,真正實現(xiàn)動態(tài)網頁的功能。一個JSP頁面可以嵌入多個程序片,這些程序片被JSP引擎按順序執(zhí)行。下面例子中的程序片(ShowServerTime.jsp)負責顯示服務器的時間:<%Datenow=newDate();DateFormatd1=DateFormat.getDateInstance();Stringstr1=d1.format(now);out.write("用Date方式顯示時間:"+now+"<br>");out.write("用DateFormat.getDateInstance格式化時間后為:"+str1);%>DEMOJava腳本8.2.1演示.mp48.2JSP基本語法8.2.2表達式JSP中表達式經常被用到,在<%=和%>之間可包含任何一個有效的Java表達式。表達式在服務器端經過計算后,將計算結果轉化成字符串插入到該表達式在JSP文件中的位置上。表達式后面不能加分號。下面的例子(expression_test.jsp)使用表達式輸出100的平方根:
100的平方根為
<%=Math.sqrt(100)%>DEMOJSP表達式8.2.2演示.mp48.2JSP基本語法8.2.3聲明
<%!
%>被稱為JSP聲明,用于聲明所生成Servlet類的成員,即變量、方法和類都可以聲明。<%!和%>標簽之間的所有內容都會增加到類中,而且置于_jspService()方法之外。使用該標簽可以聲明靜態(tài)變量和方法,成為頁面級別的共享變量,可被訪問此網頁的所有用戶共享。(1)變量聲明……
<%!intnumber=0;%>……intnumber=0;……out.print(++number);8.2JSP基本語法(2)方法聲明……
<!--下面的代碼聲明一個方法square()--><%!doublesquare(doublex){doubleresult=Math.pow(x,2);returnresult;}%>……
在“<%!”和“%>”之間聲明的方法在整個JSP頁面內有效,但在該方法內定義的變量只在該方法內有效。這些方法將在Java程序片中被調用,當方法被調用時,方法內定義的變量被分配內存,調用完畢即可釋放所占用的內存。當多個客戶同時請求一個JSP頁面,調用方法操作成員變量時,可以在方法前增加“synchronized”實現(xiàn)同步。8.2JSP基本語法(3)類聲明在“<%!”和“%>”之間還可以聲明類,該類在JSP頁面內有效。即JSP頁面中的Java程序片可以調用該類創(chuàng)建對象。def_class.jsp……<%!publicclassSquareRoot{doublenumber; SquareRoot(doublenumber) {this.number=number; } doublecompute() {returnMath.sqrt(number); } }%>……DEMOJSP聲明8.2.3演示.mp48.2JSP基本語法8.2.4JSP中的注釋JSP中的注釋可分為兩種:
(1)HTML注釋:在<!--和-->之間加入注釋內容。<!--注釋內容-->JSP引擎把HTML注釋交給客戶,客戶端通過瀏覽器查看JSP的源文件時,能夠看到HTML注釋。(2)JSP注釋:在<%--和--%>之間加入注釋內容。
<%--注釋內容--%>JSP引擎忽略JSP注釋,即在編譯JSP頁面時忽略該注釋,客戶端無法看到相應的注釋內容。8.3JSP指令JSP指令主要用來提供整個JSP頁面的相關信息并指定JSP頁面的相關屬性。它們是通知JSP引擎的消息,不直接生成輸出。語法格式如下:<%@指令名屬性名=“屬性值”%>常見的編譯指令有如下三個:
page:該指令是針對當前頁面的指令,用于定義頁面的全局屬性。
include:用于指定包含另一個靜態(tài)文件。
taglib:用于定義和訪問自定義標簽。8.3JSP指令8.3.1page指令page指令通常位于JSP頁面的頂端,一個JSP頁面可以使用多條JSP指令。其語法格式如下:<%@page屬性1=“值1”屬性2=“值2”……%>Page指令的常用屬性如下表所示。8.3JSP指令屬性名稱屬性作用language=”java”設定JSP網頁的腳本語言。目前只可以使用Java語言contentType=”contentInfo”設定MIME類型和JSP網頁的編碼方式extends=”parentClass|interface”設定JSP頁面編譯所產生的Java類所繼承的父類,或所實現(xiàn)的接口import=”packageList”引入該網頁中要使用的Java包session=”true|false”設定此JSP網頁是否可以使用session對象,默認值為trueerrorPage=”relativeURL”設定網頁運行發(fā)生錯誤時,轉向的URLisErrorPage=”true|false”設定此JSP頁面是否為處理異常錯誤的頁面buffer=”none|sizekb”設定輸出流是否使用緩沖區(qū),默認值為8KBinfo=”string”設置該JSP頁面的說明信息,可以通過Servlet.getServletInfo()方法獲取該值。如果在JSP頁面中,可直接調用getServletInfo()方法獲取該值。autoFlush=”true|false”設定輸出流的緩沖區(qū)是否要自動清除,緩沖區(qū)滿會產生異常,默認值trueisELIgnored=”true|false”設定在此JSP網頁中是執(zhí)行還是忽略EL表達式。pageEncoding=”characterEncoding”設定生成網頁的編碼字符集DEMOpage指令8.3.1演示.mp48.3JSP指令8.3.2include指令include指令用來在JSP頁面出現(xiàn)該指令的位置處,靜態(tài)插入一個文件(如JSP文件、HTML文件、txt文件等),不能插入用<%=和%>表示的表達式代表的文件。被插入的文件必須是可訪問和可使用的,即該文件必須和當前JSP頁面在同一Web服務目錄中。。include指令的語法格式如下:<%@includefile=”被插入文件URL”%>注意:使用inlude指令插入含有中文的靜態(tài)文件時,必須確保JSP文件和被插入文件的編碼方式一致,可以采用UTF-8、gbk、gb2312等方式,JSP文件可以采用page指令的pageEncoding屬性設置編碼方式,html文件在存儲的時候要選擇其編碼方式。DEMOinclude指令8.3.2演示.mp48.3JSP指令8.3.3taglib指令在JSP中taglib指令用來聲明此JSP文件使用的自定義標簽,同時引用標簽庫,并指定標簽的前綴。語法格式為:<%@tagliburi=”標簽庫的URI”prefix=”標簽前綴”%>taglib指令有兩個屬性值:
uri:指明標簽庫文件的存放位置。
prefix:指明該自定義標簽使用時的前綴。DEMOtaglib指令8.3.3演示.mp48.4JSP動作
JSP動作標簽在JSP頁面運行時執(zhí)行服務器端的任務(例如包含一個文件、頁面跳轉、傳遞參數(shù)等),不需要我們編寫Java代碼。而上一節(jié)提到的JSP指令標簽則在將JSP編譯成Servlet時起作用。我們可以形象地將JSP動作標簽看成動態(tài)的,JSP指令標簽看成靜態(tài)的。
常用的JSP動作標簽有:include:包含一個靜態(tài)的或動態(tài)的文件forward:執(zhí)行頁面跳轉,將請求的處理轉發(fā)到下一個頁面param:為其他標簽提供附加信息,如傳遞參數(shù)plugin:在客戶端瀏覽器中執(zhí)行一個Applet或JavaBeanusebean、setProperty、getProperty8.4JSP動作8.4.1include動作include動作標簽用來在JSP頁面中動態(tài)包含一個文件。所謂動態(tài)即包含頁面程序與被包含頁面的程序是彼此獨立的,互不影響,僅僅在JSP引擎運行包含頁面時執(zhí)行到<jsp:include>標簽,JSP引擎會插入被包含頁面的body內容。include動作標簽的語法格式如下:<jsp:includepage=”{靜態(tài)URL|<%=表達式%>”flush=”true|false”}/>或者<jsp:includepage=”{靜態(tài)URL|<%=表達式%>”flush=”true|false”}><jsp:paramname=”參數(shù)名”value=”{參數(shù)值|<%=表達式%>}”/></jsp:include>8.4JSP動作靜態(tài)包含和動態(tài)包含的區(qū)別如下:(1)靜態(tài)包含是將被包含頁面的代碼完全導入,兩個頁面融合成一個整體Servlet,而動態(tài)包含則在Servlet中使用include方法來引入被包含頁面的內容。(2)靜態(tài)包含時被包含頁面的編譯指令會起作用;而動態(tài)包含是被包含頁面的編譯指令則失去作用,只是插入頁面的body內容。(3)動態(tài)包含還可以向被包含頁面?zhèn)鬟f參數(shù)。DEMOinclude動作8.4.1演示.mp48.4JSP動作8.4.2forward動作
forward動作可以把請求轉發(fā)到同一Web應用中的其他頁面,既可以是靜態(tài)的HTML頁面,也可以是JSP頁面,或一個Servlet。但用戶瀏覽器中的URL地址不會發(fā)生變化,還是轉發(fā)之前的頁面地址。該動作標簽的語法格式如下:<jsp:forwardpage=”{靜態(tài)URL|<%=表達式%>}”/>或者<jsp:forwardpage=”{靜態(tài)URL|<%=表達式%>}”><jsp:paramname=”參數(shù)名”value=”{參數(shù)值|<%=表達式%>}”/></jsp:forward>DEMOforward動作8.4.2演示.mp48.4JSP動作8.4.3param動作Param動作標簽用于設置參數(shù)值,這個標簽本身不能單獨使用。因為單獨的param動作沒有實際意義。它一般和下面三個動作標簽嵌套使用。
jsp:include、jsp:forward、jsp:plugin當與include動作嵌套使用時,param動作設定的參數(shù)值將被傳入被包含的頁面;當與forward動作嵌套使用時,param動作設定的參數(shù)值將傳入跳轉的頁面;當與plugin動作嵌套使用時,參數(shù)值則被傳入Applet實例或JavaBean實例。param動作的語法格式如下:<jsp:paramname=”paramName”value=”paramValue”/>8.5JavaBean技術JavaBean是一種Java語言寫成的可復用組件。它是由一個或多個public方法、屬性和事件組成的組件,可以在各種應用程序中使用,以支持應用程序的可復用性。JavaBean可以通過內省機制(Introspection)來訪問和操縱其內部屬性和方法。8.5JavaBean技術作為一種Java類,必須被定義為public,另外需要遵守一些規(guī)范,主要包括:(1)JavaBean類如果有構造函數(shù),則必須是有一個無參數(shù)的public構造函數(shù),以便讓容器對象在設計時和運行時生成JavaBean實例化對象。(2)JavaBean類可以包含屬性,而屬性的定義是由getXxx和setXxx函數(shù)構成。對于boolean類型的屬性,可以用“is”函數(shù)來代替get函數(shù)。(3)JavaBean類為可串行化(Serializable),使得對象中的屬性和狀態(tài)可以被持久地保存于文件或數(shù)據庫中。DEMOJavaBean類的定義8.5.1演示.mp48.5JavaBean技術如果要在JSP中使用某個JavaBean對象,可以采用useBean動作標簽。useBean的語法格式如下:<jsp:useBeanid=”name”class=”classname”scope=”page|request|session|application”/>其中,id屬性用來定義JavaBean的實例名,class屬性確定JavaBean的實現(xiàn)類。scope屬性用于指定JavaBean實例的作用范圍,該范圍有4種取值。8.5JavaBean技術采用useBean動作聲明的JavaBean實例的有效范圍:(1)page:JSP引擎為每個用戶分配不同的beans,盡管每個用戶的beans功能一樣,但是它們占用不同的內存空間。該beans只在當前頁面有效,當用戶離開該頁面時,JSP引擎取消分配給該用戶的beans。(2)request:該benas的有效范圍是request生命期內。在任何執(zhí)行相同請求的JSP文件中使用該beans,直到頁面執(zhí)行完畢向客戶端發(fā)回響應或轉到另一個文件為止。8.5JavaBean技術(3)session:該beans的有效范圍是會話期間。從創(chuàng)建beans開始,就能在任何使用相同beans的JSP文件中使用該beans注意:在創(chuàng)建beans的JSP文件的page指令中必須指定session為”true”。(4)application:從創(chuàng)建beans開始,就能在任何相同application的JSP文件中使用該beans,它存在于整個application生命周期內,任何共享此application的JSP文件都能使用同一beans。8.5JavaBean技術useBean動作標簽的具體執(zhí)行過程如下:(1)在指定的scope中查找名為name的JavaBean實例。(2)若找到,則創(chuàng)建一個名為name、類型為classname的局部變量,其引用指向該JavaBean;若未找到,則在該scope中創(chuàng)建一個名為name、類型為classname的JavaBean,并創(chuàng)建相應的局部變量指向它。8.5JavaBean技術當在JSP文件中采用useBean動作標簽創(chuàng)建一個JavaBean實例后,使用setProperty動作標簽設置JavaBean的屬性值,具體語法格式如下:<jsp:setPropertyname="beanName"propertyDetails/>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市托管班品牌授權與加盟合同
- 文化產品創(chuàng)意開發(fā)合同
- 工業(yè)管道清洗與維護預案
- 法律咨詢行業(yè)法律服務結果保證書
- 三農行業(yè)三農戶教育培訓計劃
- 農業(yè)種植養(yǎng)殖合同
- 智能圖書館管理系統(tǒng)供應合同
- 大學語文辯論賽故事征文
- 高考語文復習-文言文專題訓練《史記晉世家》
- 會議紀要與重要決策執(zhí)行情況跟蹤表
- 流體輸送實訓裝置操作規(guī)程
- 上市公司組織架構策略
- extreme-sports 極限運動 英文 ppt
- 國際注冊建造師與項目管理師雙資格認證
- 面癱護理查房
- 財政部金融企業(yè)不良資產批量轉讓管理辦法(財金[2012]6號)
- 精品資料(2021-2022年收藏)建筑立面裝飾設計技術導則
- 倉庫管理警示標語
- ISO9001質量管理體系目錄結構
- 5米對數(shù)視力表及E尺寸標準A4
- 十三五全國眼健康規(guī)劃(2016-2020年)終期自評報告
評論
0/150
提交評論