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