HTML 注釋
在用戶端顯示一個注釋.
JSP 文法
<!-- comment [ <%= expression %> ] -->
例子 1
<!-- This file displays the user login screen -->
在用戶端的HTML原始碼中產生和上面一樣的資料:
<!-- This file displays the user login screen -->
例子 2
<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
在用戶端的HTML原始碼中顯示為:
<!-- This page was loaded on January 1, 2000 -->
描述
這種注釋和HTML中很像,也就是它可以在"查看原始碼"中看到。
唯一有些不同的就是,你可以在這個注釋中用運算式(例子2所示)。這個表達示是不定的,由頁面不同而不同,你能夠使用各種運算式,只要是合法的就行。
隱藏注釋 :寫在JSP程式中,但不是發給客戶。
JSP 文法
<%-- comment --%>
例子:
<%@ page language="java" %>
<html>
<head><title>A Comment Test</title></head>
<body>
<h2>A Test of Comments</h2>
<%-- This comment will not be visible in the page source --%>
</body>
</html>
描述
用隱藏注釋標記的字元會在JSP編譯時間被忽略掉。這個注釋在你希望隱藏或注釋你的JSP程式時是很有用的。
JSP編譯器不是會對<%--and--%>之間的語句進行編譯的,它不會顯示在客戶的瀏覽器中,也不會在原始碼中看到在<%-- --%>之間,你可以任意寫備註陳述式,但是不能使用 "--%>",如果你非要使用請用"--%/>".
聲明 :在JSP程式中聲明合法的變數和方法
JSP 文法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
描述
聲明你將要在JSP程式中用到的變數和方法。你也必須這樣做,不然會出錯.
你可以一次性聲明多個變數和方法,只要以";"結尾就行,當然這些聲明在Java中要是合法的。
當你聲明方法或變數時,請注意以下的一些規則:
聲明必須以";"結尾(Scriptlet有同樣的規則,但是 運算式就不同了).
你可以直接使用在<% @ page %>中被包含進來的已經聲明的變數和方法,不需要對它們重新進行聲明.
一個聲明僅在一個頁面中有效。如果你想每個頁面都用到一些聲明,最好把它們寫成一個單獨的檔案,然後用<%@ include %>或<jsp:include >元素包含進來。
運算式 :包含一個符合JSP文法的運算式
JSP 文法
<%= expression %>
例子
<font color="blue"><%= map.size() %></font>
<b><%.g= numguessetHint() %></b>.
描述
運算式元素表示的是一個在指令碼語言中被定義的運算式,在運行後被自動轉化為字串,然後插入到這個表達示在JSP檔案的位置顯示。因為這個運算式的值已經被轉化為字串,所以你能在一行文本中插入這個運算式(形式和ASP完全一樣).
當你在JSP中使用運算式時請記住以下幾點:
你不能用一個分號(";")來作為運算式的結束符.但是同樣的運算式用在scriptlet中就需要以分號來結尾了!查看Scriptlet 這個運算式元素能夠包括任何在Java Language Specification中有效運算式.
有時候運算式也能做為其它JSP元素的屬性值.一個運算式能夠變得很複雜,它可能由一個或多個運算式組成,這些運算式的順序是從左至右。
Scriptlet:包含一個有效程式段.
JSP 文法
<% code fragment %>
例子
<%
String name = null;
if (request.getParameter("name") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
foo.setName(request.getParameter("name"));
if (foo.getName().equalsIgnoreCase("integra"))
name = "acura";
if (name.equalsIgnoreCase( "acura" )) {
%>
描述
一個scriptlet能夠包含多個jsp語句,方法,變數,運算式
因為scriptlet,我們便能做以下的事:
聲明將要用到的變數或方法(參考 聲明).
編寫JSP運算式(參考 運算式).
使用任何隱含的對象和任何用<jsp:useBean>聲明過的對象
編寫JSP語句 (如果你在使用Java語言,這些語句必須遵從Java Language Specification,).
任何文本,HTML標記,JSP元素必須在scriptlet之外
當JSP收到客戶的請求時,scriptlet就會被執行,如果scriptlet有顯示的內容,這些顯示的內容就被存在out對象中。
Page 指令 :定義JSP檔案中的全域屬性.
JSP 文法
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
例子
<%@ page import="java.util.*, java.lang.*" %>
<%@ page buffer="5kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
描述
<%@ page %>指令作用於整個JSP頁面,同樣包括靜態包含檔案。但是<% @ page %>指令不能作用於動態包含檔案,比如 <jsp:include>
你可以在一個頁面中用上多個<% @ page %>指令,但是其中的屬性只能用一次,不過也有個例外,那就是import屬性。因為import屬性和Java中的import語句差不多(參照Java Language),所以你就能多用此屬性幾次了.
無論你把<% @ page %>指令放在JSP的檔案的哪個地方,它的作用範圍都是整個JSP頁面。不過,為了JSP程式的可讀性,以及好的編程習慣,最好還是把它放在JSP檔案的頂部.
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
Taglib 指令 :定義一個標籤庫以及其自訂標籤的首碼.
JSP 文法
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
例子
<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>
<public:loop>
.
.
</public:loop>
描述
<% @ taglib %>指令聲明此JSP檔案使用了自訂的標籤,同時引用標籤庫,也指定了他們的標籤的首碼。
這裡自訂的標籤含有標籤和元素之分。因為JSP檔案能夠轉化為XML,所以瞭解標籤和元素之間的聯絡很重要。標籤只不過是一個在意義上被抬高了點的標記,是JSP元素的一部分。JSP元素是JSP文法的一部分,和XML一樣有開始標記和結束標記。元素也可以包含其它的文本,標記,元素。比如,一個jsp:plugin元素有<jsp:plugin>開始標記和</jsp:plugin>結束標記,同樣也可以有<jsp:params>和<jsp:fallback>元素.
你必須在使用自訂標籤之前使用<% @ taglib %>指令,而且你可以在一個頁面中多次使用,但是首碼只能使用一次
屬性
uri="URIToTagLibrary"
Uniform Resource Identifier (URI)根據標籤的首碼對自訂的標籤進行唯一的命名,URI可以是以下的內容:
Uniform Resource Locator (URL), 由 RFC 2396 定義, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html
Uniform Resource Name (URN), 由 RFC 2396定義
一個相對或絕對的路徑
prefix="tagPrefix"
在自訂標籤之前的首碼,比如,在<public:loop>中的public,如果這裡不寫public,那麼這就是不合法的。請不要用jsp, jspx, java, javax, servlet, sun, 和sunw做為你的首碼