JSP頁面主要由指令標籤、HTML標記語言、註釋、嵌入的JAVA代碼、JSP動作標籤等組成。所有的JSP頁面在執行之前會被服務器解析成servlet。
1.JSP指令標籤
指令標籤不會產生任何的輸出內容到頁面中,主要用來定義整個頁面的相關信息。語法格式如下:
<%@directive attribute="value"......>
其中:directive:指令的名稱,可以爲page、include和taglib其中的之一。
attribute:屬性名稱,不同的指令有不同的屬性。
value:指定屬性的屬性值。
1.1 page指令
page指令用來定義整個頁面的相關屬性,語法爲<%@page attribute1="value1" attribute2="value" .......%>
attribute1和attribute2的屬性主要包含以下內容(具體有15個之多):
1)屬性language,用來設置JSP頁面的使用的語言。
例如:<%@page language="java"%>
2)import設置JSP導入的類包。
<%@page import="java.util.Date"%>
3)extends屬性:設置JSP頁面繼承的Java類,該屬性並不常用,有可能影響服務器的性能優化。
4)pageEncoding屬性
該屬性用來定義JSP頁面的編碼格式,指定文件的編碼。JSP頁面中的所有代碼都使用該屬性指定的字符集。例如:
<%@page pageEncoding="UTF-8" %>
5) contentType屬性
該屬性定義JSP頁面的MIME(Multipurpose Internet Mail Extensions)類型和字符編碼,瀏覽器會根據該屬性顯示網頁內容。
<%@page contentTpye="text/html;charset=UTF-8" %>
6)session 屬性
指定JSP頁面是否使用http的session會話對象。屬性值是boolean類型的。默認值是true。
<%@page session="false" %>該例子中不使用session對象,任何對session的引用都會發生錯誤。
7)buffer屬性
該屬性用來設置out對象的使用緩衝區的大小,默認大小爲8kb,且單位只能使用KB.<%@page buffer="12kb" %>
8)autoFlush屬性
用於設置JSP頁面緩存滿時,是否自動刷新緩存,默認值爲true。
9)info屬性
該屬性用來設置jsp頁面的相關信息,該信息可以在servlet接口的getServletInfo()方法中獲取。
10)errorPage屬性
該屬性用來處理當前頁面錯誤的指定頁面,其屬性值是一個url字符串,指定的錯誤處理頁面的isErrorPage屬性必須設置成true。
<%@page errorpage="xxxx/xxx.jsp" %>
如果使用該屬性,在web.xml中定義的錯誤處理頁面都將被忽略,優先使用該屬性定義的錯誤處理頁面。
11)isErrorPage屬性
該屬性將當前頁面設置成處理另一個頁面的錯誤。
<%@page isErrorPage="true" %>
12)IsELIgnored屬性
該屬性用於定義Jsp頁面是否忽略EL表達式的使用。
1.2 include指令
該指令用於文件包含,它僅支持靜態包含,在當前頁面中更包含另一個文件的內容。如:
<%@ include file="XXX.jsp" %>
被包含的文件會直接使用包含文件的設置。源文件和被包含文件的變量和方法的名稱不要衝突,因爲會生成一個文件,重名會導致錯誤發生。
1.3 taglib指令
該指令用來加載用戶自定義的標籤,格式如下:
<%@taglib prefix="XXX" uri="taglibUriValue.tld" %>
prefix:設置自定義標籤的前綴。
uri:用於自定義標籤的描述文件位置。
2.註釋
2.1 HTML註釋
2.2 JSP註釋
2.3 動態註釋
3.嵌入的Java代碼
3.1 嵌入java代碼片段
格式:<% 編寫的java code %>每行代碼中使用分號,於編寫Java類代碼格式相同。
例如:<%
out.println("hello,world");
String str="hello";
out.println(str);
%>
3.2 JSP表達式
表達式可以直接把結果輸出到頁面中,表達式的最終運算結果都將被轉換成字符串,因爲在網頁中顯示的文字都是字符串。
例如:<%= express %>
3.3 jsp 聲明
語法格式:<%! 聲明的變量 %>
該變量是可以在整個jsp頁面被訪問的,具有全局性。
例如:
聲明全局變量:<%! long couter=0; %>
聲明全局方法:<%! int getConter(){
return counter;
}
%>