官术网_书友最值得收藏!

3.2 JSP頁面結構

第3章任務3

JSP頁面結構包括下面8個構成要素:

● 靜態內容,即HTML代碼。

● JSP腳本。

● JSP聲明。

● JSP表達式。

● JSP注釋。

● JSP指令。

● JSP動作。

● 內置對象。

1.JSP腳本

腳本是Java程序的一段代碼,格式是:<% Java代碼 %>。只要符合Java語法的語句都可寫在腳本中,腳本中的代碼最終將被放到Servlet的_jspService方法中,在有HTTP請求時執行。

所有在腳本中聲明的變量都是局部變量,將在_jspService方法中被定義,也只能在該方法中使用。

2.JSP聲明(declaration)

用于聲明生成的Servlet類的成員,即成員變量和方法,格式是:

<%!和 %>間的部分將被添加到Servlet的_jspService方法之外。

【例3-2】 采用腳本和聲明定義的變量,觀察在Servlet類中定義的位置。

新建Web工程JSPTest2,在WebRoot目錄下新建一個JSP文件(counter.jsp),代碼如下:

啟動Web工程,多次刷新后(如2次),頁面顯示內容如圖3-3所示。

圖3-3 多次運行頁面結果

可以看到,計數器3的值和計數器2的值一樣,每次刷新后將加1顯示。

下面分析產生結果的原因。Tomcat服務器在運行時,將把counter.jsp轉換成一個繼承HttpServlet類的Counter_jsp類,代碼如下:

從上面代碼可以看出:由于count3變量在_jspService方法外定義,每次調用該方法時,count3變量將保留原值,而count1變量在_jspService方法內定義,每次調用該方法時,count1變量將清零。

JSP聲明者定義的變量具有靜態變量count2的效果。

不論是采用腳本定義和申明定義的變量,都隸屬于下面4種JSP定義的作用域:

1)page。在引用對象的JSP頁面中提供對象。

2)Request。提供在所有請求頁面中可用的對象。

3)Session。提供在會話中JSP頁面上可用的所有對象。

4)Application。提供對象以訪問給定應用程序中的所有網頁。例如,用戶訪問一個網站,并通過訪問其他鏈接打開網站中的其他頁面。網站中的所有網頁形成一個應用程序作用域。

3.JSP表達式

用于向頁面輸出表達式結果,格式是:<%= … %>。由于JSP表達式在運行時將自動作為out.print()方法的參數,因此,一個返回值為void的函數是不能作為表達式的。

例如,<%=count1%>就等價于<%out.println(count1);%>

4.JSP注釋

用于對代碼進行注釋,有兩種格式:

1)<!--客戶端注釋,客戶端可以看到-->;。

2)<%--服務器端注釋,客戶端不能查看到--%>;。

5.JSP指令

JSP指令用來給JSP容器一個解釋說明,格式是:<%@…%>。

共有下面三種JSP指令:

1)page:指明與頁面相關的屬性。

JSP2.0為page定義了13種屬性,常用的3種屬性如下:

● import。定義將在生成的Servlet類中添加的Java import語句。

例如,<%@page import="zjc.*"%>將導入一個zjc包,導入多個包時將用“,”分隔,<%@page import="zjc.*, java.util.*"%>。默認情況下自動加入:java.lang,javax.Servlet,javax.Servlet.http,javax.Servlet.jsp。

● contentType。定義JSP響應的MIME類型。

● pageEncoding。定義JSP頁面的字符編碼。默認值為:"ISO-8859-1",其他支持中文的值有"GB2312"、"gbk"和"UTF-8"等。

2)include:包含另外一個文件,在當前頁面被解析時需加入其中,以增強代碼復用性。

include指令用于通知容器,將指定位置上的資源內容包含進來。被包含的文件內容可以被JSP解析,這種解析發生在JSP文件編譯期間。利用include命令,可以把一個頁面分成不同的部分,最后再合成為一個完整的文件,從而實現頁面的模塊化。例如,<%@include file="head.jsp"%>。

3)taglib:定義JSP可以使用的標簽庫。

聲明此JSP文件使用了自定義的標簽,同時引用標簽庫,也指定了這些標簽的前綴。可以使用taglib來包含Structs、JSF等標簽庫,以及用戶自定義標簽庫。例如,<%@taglib uri="/struts-tags"prefix="s"%>用于使用Struts基本標簽庫。

6.JSP動作

動作指令與編譯指令不同,編譯指令時通知Servlet引擎的處理消息,而動作指令只是運行時的動作。編譯指令在將JSP編譯成Servlet時起作用,而處理指令通常可替換成JSP腳本,它只是JSP腳本的標準化寫法。

● JSP:forward:執行頁面轉向,將請求的處理轉發到下一個頁面。

● JSP:param:用于傳遞參數,必須與其他支持參數的標簽一起使用。

● JSP:include:用于動態引入一個JSP頁面。

● JSP:plugin:用于下載JavaBean或者Applet到客戶端執行。

● JSP:useBean:創建一個JavaBean實例。

● JSP:setProperty:設置JavaBean實例的屬性值。

● JSP:getProperty:獲取JavaBean實例的屬性值。

主站蜘蛛池模板: 昭觉县| 平定县| 镇赉县| 郁南县| 高密市| 太原市| 沂源县| 千阳县| 海盐县| 恩施市| 同德县| 吉林省| 永仁县| 嘉荫县| 和平县| 灵石县| 灵山县| 万州区| 虹口区| 贵德县| 内黄县| 东方市| 金华市| 砀山县| 云林县| 石景山区| 南京市| 张家口市| 乌兰察布市| 连州市| 射洪县| 海丰县| 怀宁县| 平果县| 怀远县| 威宁| 班玛县| 安仁县| 虎林市| 白水县| 新兴县|