JSP語法缺少不了注釋聲明,注釋是為了能讓他人看懂代碼。
在 JSP 頁面中可以使用多種注釋,如 HTML 中的注釋、Java 中的注釋和在嚴(yán)格意義上說屬于 JSP 頁面自己的注釋——帶有 JSP 表達(dá)式和隱藏的注釋。在 JSP 規(guī)范中,它們都屬于 JSP 中的注釋,并且它們的語法規(guī)則和運行的效果有所不同。接下來我們將介紹 JSP 中的各種注釋。
JSP 文件是由 HTML 標(biāo)記和嵌入的 Java 程序段組成的,所以在 HTML 中的注釋同樣可以在 JSP 文件中使用。注釋格式如下:
<!--注釋內(nèi)容-->
【例1】 HTML 中的注釋:
<!--歡迎提示信息!-->
<table><tr><td>歡迎訪問! </td></tr></table>
使用該方法注釋的內(nèi)容在客戶端瀏覽器中是看不到的,但可以通過查看 HTML 源代碼看到這些注釋內(nèi)容。
訪問該頁面后,將會在客戶端瀏覽器中輸出以下內(nèi)容:
歡迎訪問!
通過查看 HTML 源代碼,將會看到如下內(nèi)容:
<!--歡迎提示信息!-->
<table><tr><td>歡迎訪問! </td></tr></table>
帶有JSP表達(dá)式的注釋
在 HTML 注釋中可以嵌入 JSP 表達(dá)式,注釋格式如下:
<!--comment<%=expression %>-->
包含該注釋語句的 JSP 頁面被請求后,服務(wù)器能夠識別注釋中的 JSP 表達(dá)式,從而來執(zhí)行該表達(dá)式,而對注釋中的其他內(nèi)容不做任何操作。
當(dāng)服務(wù)器將執(zhí)行結(jié)果返回給客戶端后,客戶端瀏覽器會識別該注釋語句,所以被注釋的內(nèi)容不會顯示在瀏覽器中。
【例2】使用帶有 JSP 表達(dá)式的注釋:
<%String name="XYQ";%>
<!--當(dāng)前用戶:<%=name%>-->
<table><tr><td>歡迎登錄:<%=name%></td></tr></table>
訪問該頁面后,將會在客戶端瀏覽器中輸出以下內(nèi)容:
歡迎登錄:XYQ
通過查看 HTML 源代碼,將會看到以下內(nèi)容:
<!--當(dāng)前用戶:<%=name%>-->
<table><tr><td>歡迎登錄:XYQ</td></tr></table>
隱藏注釋
前面已經(jīng)介紹了如何使用 HTML 中的注釋,這種注釋雖然在客戶端瀏覽頁面時不會看見,但它卻存在于源代碼中,可通過在客戶端查看源代碼看到被注釋的內(nèi)容。所以嚴(yán)格來說,這種注釋并不安全。下面介紹一種隱藏注釋,注釋格式如下:
<%--注釋內(nèi)容--%>
用該方法注釋的內(nèi)容,不僅在客戶端瀏覽時看不到,而且即使在客戶端查看 HTML 源代碼,也不會看到,所以安全性較高。
【例3】使用隱藏注釋:
<%--獲取當(dāng)前時間--%>
<table>
<tr><td>當(dāng)前時間為:<% =(new java.util.Date()).toLocaleString() %></td></tr>
</tabla>
訪問該頁面后,將會在客戶端瀏覽器中輸出以下內(nèi)容:
當(dāng)前時間為:2017-3-19 15:27:20
通過查看 HTML 源代碼,將會看到以下內(nèi)容:
<table>
<tr><td>當(dāng)前時間為:2017-3-19 15 : 27 : 20</td></tr>
</table>
腳本程序(Scriptlet)中的注釋
腳本程序中包含的是一段 Java 代碼,所以在腳本程序中的注釋與在 Java 中的注釋是相同的。
腳本程序中包括下面 3 種注釋方法。
單行注釋的格式如下:
//注釋內(nèi)容
符號“//”后面的所有內(nèi)容為注釋的內(nèi)容,服務(wù)器對該內(nèi)容不進(jìn)行任何操作。因為腳本程序在客戶端通過查看源代碼是不可見的,所以在腳本程序中通該方法注釋的內(nèi)容也是不可見的,并且后面將要提到的通過多行注釋和提示文檔進(jìn)行注釋的內(nèi)容都是不可見的。
【例4】JSP 文件中包含以下代碼:
<%
int count=6; //定義一個計數(shù)變量
%>
計數(shù)變量 count 的當(dāng)前值為:<%=count%>
訪問該頁面后,將會在客戶端瀏覽器中輸出以下內(nèi)容:
計數(shù)變量 cxnmt 的當(dāng)前值為:6
通過查看 HTML 源代碼,將會看到以下內(nèi)容:
計數(shù)變量 count 的當(dāng)前值為:6
因為服務(wù)器不會對注釋的內(nèi)容進(jìn)行處理,所以可以通過該注釋暫時刪除某一行代碼。例如下面的代碼。
【例5】使用單行注釋暫時刪除一行代碼:
<%
String name="XYQ";
//name="XYQ2017";
%>
用戶名:<%=name%>
包含上述代碼的 JSP 文件被執(zhí)行后,將輸出如下結(jié)果:
用戶名:XYQ
2. 多行注釋
多行注釋是通過“/*”與“*/”符號進(jìn)行標(biāo)記的,它們必須成對出現(xiàn),在它們之間輸入的注釋內(nèi)容可以換行。注釋格式如下:
/*
注釋內(nèi)容1
注釋內(nèi)容2
*/
為了程序界面的美觀,開發(fā)人員習(xí)慣在每行注釋內(nèi)容的前面添加一個號,構(gòu)成如下所示的注釋格式:
/*
*注釋內(nèi)容1
*注釋內(nèi)容2
*/
與單行注釋一樣,在“/*”與“*/”之間注釋的所有內(nèi)容,即使是 JSP 表達(dá)式或其他腳本程序,服務(wù)器都不會做任何處理,并且多行注釋的開始標(biāo)記和結(jié)束標(biāo)記可以不在同一個腳本程序中同時出現(xiàn)。
【例6】在 JSP 文件中包含以下代碼:
<%@ page contentType="text/html;charset=UTF-8"%>
<%
String state="0";
/*if(state.equals("0"))
{
//equals()方法用來判斷兩個對象是否相等
state="主版";
%>
將變量state賦值為“主版”。<br>
<%
}
*/
%>
變量state的值為:<%=state%>
包含上述代碼的 JSP 文件被執(zhí)行后,將輸出如圖 1 所示的結(jié)果。

圖1 多行注釋(一)
若去掉代碼中的“/*”和“*/”符號,則將輸出如圖 2 所示的結(jié)果。

圖2 多行注釋(二)
該種注釋會被 Javadoc 文檔工具在生成文檔時讀取,文檔是對代碼結(jié)構(gòu)和功能的描述。注釋格式如下:
/**
提示信息1
提示信息2
*/
該注釋方法與上面介紹的多行注釋很相似,但細(xì)心的讀者會發(fā)現(xiàn),它是以“/**”符號作為注釋的開始標(biāo)記,而不是“/*”。與多行注釋一樣,對于被注釋的所有內(nèi)容,服務(wù)器都不會做任何處理。
【例7】在 Eclipse 開發(fā)工具中,在創(chuàng)建的 JSP 文件中輸入以下代碼:
<%!
int i = 0;
/**
@作者:c.biancheng.net
@功能:該方法用來實現(xiàn)一個簡單的計數(shù)器
*/
synchronized void add()
{
i++;
}
%>
<% add(); %>
當(dāng)前訪問次數(shù):<%=i%>
將鼠標(biāo)指針移動到 代碼上,將出現(xiàn)如圖 3 所示的提示信息。

圖3 提示文檔注釋