JSP語法的知識點有哪些

這篇文章給大家分享的是有關JSP語法的知識點有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)長期為上1000家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為尋烏企業(yè)提供專業(yè)的網站設計制作、網站建設,尋烏網站改版等技術服務。擁有十載豐富建站經驗和眾多成功案例,為您定制開發(fā)。

1.JSP指令

使用JSP 指令(在<%@ 和 %>內的)來指定所使用的腳本語言、Servlet 實現(xiàn)的接口、Servlet 擴展的類、Servlet 導入的軟件包。JSP 指令的一般語法形式為:<%@ 指令名 ="值" %>。其中有效的指令名為:

(1) language:文件中所使用的腳本語言。此時對于 Java 程序設計語言來說,僅Java 為有效值和缺省值。該指令作用于整個文件。當多次使用該指令時,只有***次使用是有效的。示例如下:<%@ language ="java" %>。

(2) Method:由嵌入的 Java 代碼(scriptlet)生成的方法的名稱。生成的代碼會成為指定方法名的主體。缺省的方法是service。當多次使用該指令時,只有***次使用是有效的。示例如下:<%@ method ="doPost" %>。

(3) Import:Servlet 導入的 Java 語言軟件包名或類名列表,該列表是用逗號分隔的。在 JSP 文件中,可以多次指定該指令來導入不同的軟件包。示例如下:<%@ import ="java.io.*,java.util.Hashtable" %>。

(4) content_type :生成的響應的 MIME 類型。缺省值為 text/html。當多次使用該指令時,只有***次使用是有效的。 該指令可用以指定在其中對頁面進行編碼的字符集。示例如下:<%@ content_type ="text/html; charset=gb2312" %>。

(5) mplements:用于生成 Servlet 實現(xiàn)的 Java 語言接口列表,該列表是用逗號分隔的。可以在一個 JSP 文件中多次使用該命令,以實現(xiàn)不同的接口。示例如下:<%@ implements = "javax.servlet.http.HttpSessionContext" %>。

(6) extends:Servlet 擴展的 Java 語言類的名稱。該類必須是有效的,且不能是一個 Servlet 類。該指令作用于整個 JSP 文件。當多次使用該指令時,只有***次使用是有效的。示例如下:<%@ extends ="javax.servlet.http.HttpServlet" %>。

2.class-wide 變量和方法

使用 <SCRIPT> 和 </SCRIPT> 標記來說明 Servlet 類的 class-wide 變量和 class-wide 方法。一般語法如下:

<script runat=server>。  // class-wide 變量和方法的代碼  </script>

屬性 runat=server 是必需的,它表明該標記是用于服務器端處理的。指定 class-wide 變量和方法的示例如下:

<script runat=server>   // class-wide 變量  init i = 0;  String foo = "Hello";   // class-wide 方法  private void foo() {  // 該方法的代碼   }  </script>

3.訪問JavaBean

JSP語法對 JavaBean 的支持使您能通過 Web 站點重復使用組件。JavaBean 可以是類文件或串行化Bean,也可由 Servlet 動態(tài)生成。請使用 <BEAN> 標記來創(chuàng)建一個 Bean 實例,以使從JSP文件的任何地方都可對該實例進行訪問。標記 <BEAN> 的語法為:

<bean name="Bean_name" varname="local_Bean_name" type ="class_or_interface_name" introspect="yes|no" beanName="ser_filename" create="yes|no" scope="request|session|userprofile" > <param property_name="value"> </bean>

其中的屬性及其含義如下:

(1) name:用于在相應的范圍(由 scope 屬性指定)內查找 Bean 的名稱。例如,這可能是用于存儲 Bean 的會話(session)關鍵值。該值是分大小寫的。

(2) varname:用于在 JSP 文件中的任何地方引用 Bean 的名稱。該屬性是可選的。缺省值為 name 屬性值。該值是分大小寫的。

(3) type:Bean 的類文件名。該名稱用于以代碼說明 Bean 實例。缺省值為 Object 類型。該值是分大小寫的。

(4) Introspect:當該值為真時,JSP 處理器檢查將所有的請求屬性,并調用與請求屬性匹配的 set 屬性方法集(該屬性是在 BeanInfo 中傳遞的)。該屬性的缺省值為是。

(5) BeanName:Bean 的 .class 文件名、Bean 軟件包名或包含 Bean 的串行化文件(.ser 文件)的文件名。(該名稱是給 Bean 實例程序的)。僅當 Bean 不在指定的范圍中,且創(chuàng)建屬性被設置成是時,才使用該屬性。該值是分大小寫的。文件路徑必須在應用服務器的Java 類路徑中指定,除非文件在 applicationserver_root\servlets 目錄下。

(6) Create:當該值為真時,如果處理器在指定的范圍內沒有找到 Bean,則 JSP 將創(chuàng)建一個 Bean 實例。缺省值為真。

(7)Scope:Bean 的生命期。該屬性是可選的,其缺省值為 request 。有效值為:

request - 由 Servlet 將 Bean 設置成請求的上下文,該 Servlet 使用 JSP API 中描述的 API 調

用JSP文件。如果Bean不是請求上下文的一部分,則將創(chuàng)建該 Bean,并將其存儲在請求上下文中,除非創(chuàng)建屬性已設置為否。

session - 如果當前對話中存在 Bean,則 Bean 已被重用。如果不存在 Bean,且創(chuàng)建屬性設置

為是,則它已被創(chuàng)建并作為會話的一部分存儲起來。

userprofile - 由Servlet 請求對象檢索、造型成指定的類型,并進行內省的用戶簡要表文件。(在

IBM WebShere應用服務器中,缺省類型為 com.ibm.servlet.personalization.userprofile.UserProfile)。

(8) param:屬性和值配對的列表。屬性是在 Bean 中用內省自動設置的。只在實例化 Bean 時,才對屬性進行設置。

除了使用 <param> 屬性來設置Bean屬性外,還可以使用其它三種方法:***,在請求包含Bean的Web頁面(JSP 文件)的 URL 時,指定查詢參數(shù)。必須將內省屬性設置成“是”。其示例如下:http://www.myserver.com/signon.jsp?name=jones&password=d13x,其中 Bean 屬性名將設置為 jones。第二種方法,將屬性指定成由 HTML <FROM> 標記提交的參數(shù)。必須將 mothod 屬性設置成 post。將action 屬性設置成調用Bean 的JSP文件的URL。必須將 introspect 屬性設置成“是”。其示例如下:

<form action="http://www.myserver.com/SearchSite" method="post"> <input type="text" name="Search for: "> <input type="submit"> </form>

第三中方法是使用JSP語法設置Bean屬性。

在指定了 <BEAN> 標記后,就可以 JSP文件中的任何地方訪問 Bean。這里有三種訪問 Bean 屬性的方法:使用 JSP scriptlet、使用JSP表達式、使用 <INSERT> 標記(如同 變量數(shù)據(jù)的 HTML 模板語法中所說明的)。請參閱JSP示例(DisplayData.jsp 文件)以獲取三個訪問 Bean 方法的每個方法示例。

4.直接插入的Java代碼(scriptlet)

可以在JSP 文件的 <% 和 %> 標記間直接嵌入任何有效的Java語言代碼。這樣嵌入的代碼稱為scriptlet。如果沒有指定 method 指令,則生成的代碼將成為 service 方法的主體。用于 Servlet 的scriptlet 可以使用一個預定義的變量集,該變量集符合基本的Servlet、輸出和輸入類:

(1) request:由 javax.servlet.http.HttpServletRequest 定義的Servlet 請求類

(2) responses:由 javax.servlet.http.HttpServletRequest 定義的Servlet 響應類

(3) out:由 java.io.PrintWriter 定義的輸出轉錄程序類

(4) in:由 java.io.BufferedReader 定義的輸入閱讀程序類

其示例如下:

<%  foo = request.getParameter("Name");  out.println(foo);  %>

5.變量數(shù)據(jù)的 HTML 模板語法

當頁面被返回給瀏覽器時,應用服務器HTML 模板語法使您能將變量字段放在 HTML 頁面上,并使 Servlet 和 JavaBean 可利用數(shù)據(jù)庫的值動態(tài)地替換變量。該功能是 JSP 的一個 IBM 擴展,它使引用變量數(shù)據(jù)變得十分容易。該語法只能用于 JSP 文件中。HTML 模板語法包括:

基本 HTML 模板語法;

替代 HTML 模板語法;

<REPEAT>標記。

這些標記通過 HTML 編寫工具被設計成傳遞交互操作的標記。每一個標記有一個相應的結束標記。每一個標記是分大小寫的,它們的一些屬性也是分大小寫的。IBM WebSphere Studio 使開發(fā) JSP 文件以包含 HTML 模板語法變得更為容易。

(1) 基本 HTML 模板語法

<INSERT> 標記是用于指定變量字段的基本標記。一般的語法為:

<insert requestparm=pvalue requestattr=avalue bean=name property=property_name(optional_index).subproperty_name(optional_index)  default=value_when_null> </insert>

其中的屬性及其含義如下:

requestparm:要在請求對象內進行訪問的參數(shù)。該屬性是分大小寫的,并且不能與Bean 和property屬性一起使用。

Requestattr:要在請求對象內進行訪問的屬性。屬性應使用 setAttribute 方法設置。該屬性是分大小寫的,并且不能與 Bean 和property屬性一起使用。

Bean:由 <BEAN> 標記在 JSP 文件中說明的 JavaBean 名。請參閱訪問 JavaBean 以獲得 <BEAN> 標記的解釋。該屬性的值是分大小寫的。當指定了 Bean 屬性,但未指定property屬性時,在替換中將使用完整的 Bean 。例如,如果 Bean 是類型 String 且未指定屬性,則將替代 string 的值。

Property:訪問替換的 Bean 的屬性。該屬性的值是分大小寫的,并且是屬性的獨立場所名。該屬性不能與 requestparm 屬性一起使用。

Default:當 Bean 屬性值為空時,顯示可選的字符串。如果字符串包含多個字,則該字符串必須包含在一對雙引號中(例如 "HelpDesk number")。該屬性的值是分大小寫的。如果未指定值,則當屬性值為空時,用空字符串替代。

基本JSP語法的示例如下:

<insert bean=userProfile property=username></insert> <insert requestparm=company default="IBM Corporation"></insert> <insert requestattr=ceo default="Company CEO"></insert> <insert bean=userProfile property=lastconnectiondate.month></insert>

在大多數(shù)情況下,property屬性的值就是屬性名。但是,可以通過指定property屬性的全格式來訪問屬性的某一屬性(子屬性)。這個全格式也提供選擇項給您來指定索引屬性的一個索引。該可選的索引可以是一個常數(shù)(例如 2)或如重復設置 HTML 標記中描述的索引。使用屬性標記的全格式示例如下:

<insert bean=staffQuery property=address(currentAddressIndex)></insert> <insert bean=shoppingCart property=items(4).price></insert> <insert bean=fooBean property=foo(2).bat(3).boo.far></insert>

(2) 替代HTML 模板語法

HTML 標準不允許在 HTML 標記中嵌入 HTML 標記。因而,就無法在另一個 HTML 標記中嵌入<INSERT>標記。作為代替,請使用 HTML 模板替代語法。要使用替代語法:

請使用<INSERT>和</INSERT>來包含 HTML 標記,在該標記中指出替代內容。

指定Bean 和property屬性:

要指定Bean 和屬性特性,請使用下列格式:$(bean=b property=p default=d),其中b、p 和 d

作為描述基本語法的值。

要指定requestparm 屬性,請使用下列格式:$(requestparm=r default=d),其中r 和d 作為

描述基本語法的值。

要指定requestattr 屬性,請使用下列格式:$(requestattr=r default=d),其中r 和d 作為描述

基本JSP語法的值。

替代HTML 模板語法的示例如下:

<insert> <img src=$(bean=productAds property=sale defaultdefault=default.gif)> </insert> <insert> <a href="http://www.myserver.com/map/showmap.cgi?country=$(requestparm=country default=  usa )   &city$(requestparm=city default="Research Triangle Park")&email=  $(bean=userInfo property=email)>Show map of city</a> </insert>

(3) <REPEAT>標記

<REPEAT>標記的語法為:

<repeat index=name start=starting_index end=ending_index> </repeat>

其中:

index:是用于標識該重復數(shù)據(jù)塊的一個可選的名稱。該值是分大小寫的。

Start:是用于該重復數(shù)據(jù)塊的一個可選的開始索引值。缺省值為 0 。

End:是用于該重復數(shù)據(jù)塊的一個可選的結束索引值。***值是 2,147,483,647。如果結束屬性的值小于開始屬性的值,則忽略結束屬性。

下面的示例 1、2 和 3 顯示了如何使用<REPEAT>標記。如果所有的索引屬性擁有 300 個或更少的元素,則這些示例將產生相同的輸出。如果擁有的元素多于 300 個,示例 1 和示例 2 將顯示所有的元素,而示例 3 將只顯示前 300 個元素。示例 1 用缺省開始和結束索引顯示了隱式索引:使用最小索引屬性數(shù)的 bean 限制了循環(huán)重復的次數(shù)。

<table> <repeat> <tr><td><insert bean=serviceLocationsQuery property=city></insert></tr></td> <tr><td><insert bean=serviceLocationsQuery property=address></insert></tr></td> <tr><td><insert bean=serviceLocationsQuery property=telephone></insert></tr></td> </repeat> </table> 示例 2 顯示了索引、開始索引和結束索引:   <table> <repeat index=myIndex start=0 end=2147483647> <tr><td><insert bean=serviceLocationsQuery property=city(myIndex)></insert></tr></td> <tr><td><insert bean=serviceLocationsQuery property=address(myIndex)></insert></tr> </td>   <tr><td><insert bean=serviceLocationsQuery property=telephone(myIndex)></insert></tr> </td>   </repeat> </table>

示例 3 用隱式開始索引顯示了顯式索引和結束索引。雖然指定了索引屬性,仍可對索引過的屬性城市進行隱式索引,因為不需要(i)。

<table> <repeat index=myIndex end=299> <tr><td><insert bean=serviceLocationsQuery property=city></insert></tr></td> <tr><td><insert bean=serviceLocationsQuery property=address(myIndex)></insert></tr> </td>   <tr><td><insert bean=serviceLocationsQuery property=telephone(myIndex)></insert></tr> </td>   </repeat> </table>

可以嵌套<REPEAT>數(shù)據(jù)塊。獨立索引每個數(shù)據(jù)塊。該能力對交叉兩個 bean 上的交錯屬性或含有子屬性的屬性非常有用。在示例中,將兩個<REPEAT>數(shù)據(jù)塊嵌套,用以顯示用戶購物手推車上每一張壓縮光盤上的歌曲列表。

<repeat index=cdindex> <h2><insert bean=shoppingCart property=cds.title></insert></h2> <table> <repeat> <tr><td><insert bean=shoppingCart property=cds(cdindex).playlist></insert> </td></tr> </table> </repeat> </repeat>

6.變量數(shù)據(jù)的Java表達式

當處理 JSP 文件時,要指定分解一個 Java 語言表達式,請使用 JSP 表達式標記 <%= 和 %>。該表達式被評估和轉換成一個字符串,并加以顯示。原語類型,如 int 和 float 都自動轉換成字符串表示法。在該示例中,foo 是在 <SCRIPT> 中加以說明的 class-wide 變量,示例請見 Class-wide 變量和方法:

<p>翻譯歡迎辭<%= foo %>.</p>

感謝各位的閱讀!關于“JSP語法的知識點有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

名稱欄目:JSP語法的知識點有哪些
本文路徑:http://bm7419.com/article14/gipdde.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站維護、定制開發(fā)企業(yè)網站制作、做網站網頁設計公司、網站收錄

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設