- Java EE程序設計與開發實踐教程
- 馮志林編著
- 1394字
- 2021-10-27 17:05:27
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實例的屬性值。
- PHP動態網站程序設計
- Mastering JavaScript Functional Programming
- Spring 5.0 By Example
- Learning SAP Analytics Cloud
- 從程序員到架構師:大數據量、緩存、高并發、微服務、多團隊協同等核心場景實戰
- GitLab Repository Management
- 正則表達式經典實例(第2版)
- OpenShift在企業中的實踐:PaaS DevOps微服務(第2版)
- Learning Material Design
- C陷阱與缺陷
- C#程序設計基礎入門教程
- Python應用開發技術
- Building Microservices with Go
- 趣學數據結構
- Splunk Developer's Guide(Second Edition)