From Gossip@caterpillar

JSP/Servlet Gossip: 註解與Quoting

 

 


JSP網頁中可以在<% 與 %>之間直接使用Java語法撰寫程式,所以您也可以在當中使用Java的註解方式來撰寫註解文件,也就是可以使用//或是/*與*/包括來撰寫註解,例如:
<%
    // 這是Java的註解方式
 
    out.println("隨便顯示一段文字");
 
    /*
        這是源自C的註解方式
    */
%>
 

使用這樣的註解方式,在轉譯為Servlet原始碼之後,JSP <% 與 %>之間設定的註解,在Servlet原始碼中對應的位置也會有對應的註解文字,雖然生成在Servlet中的註解對於純使用JSP網頁的開發人員 來說可能不具意義,但這個方式不失為觀察生成的Servlet原始碼的工具,當您想觀察JSP轉換為Servlet後的某些特定行,您可以使用這種註解方 式來當作一種標記,方便您直接看到轉換後的程式碼位於哪一行。

JSP有一個專門設計給它使用的註解,即<%--與--%>,容器在轉譯JSP至Servlet時,會忽略<%--與--%>之間包括的文字,生成的Servlet中不會包括註解文字:
<html>
 <body>
    <%-- 顯示現在時間 --%>
    Now Time: <%= new java.util.Date() %>
 </body>
</html>
 

「顯示現在時間」這一段文字,不會出現在Servlet中,當然也就不會輸出至瀏覽器。

至於網頁設計人員所使用的註解方式<!--與-->嚴格說來並不是JSP的註解,對JSP來說,它只是HTML語法的一部份,在轉譯為Servlet之後,也只是像 out.write("<!-- 網頁註解 -->"); 這樣的陳述句,將之輸出至客戶端瀏覽器而已。

至於Quoting,簡單的說,<% 與 %>被用來作為JSP中Java語法的部份,又稱為稱之為Scriptlet,如果您要在JSP網頁中輸出 <% 符號或 %>符號,不能直接寫下<%或%>的符號,以免轉譯時被認為是Quoting,例如若JSP網頁中包括下面這段,就會發生錯誤:
<%
    out.println("JSP中Java語法結束符號%>");
%>
 

如果您要在JSP中輸出 <% 符號,您要使用 &lt;%,而輸出 %> 時,要使用 %\>,例如:
<%
    out.println("&lt;% 與 %\>被用來作為JSP中Java語法的部份");
%>
 
其實仔細觀察 &lt; 對於HTML語法來說,也是為了避免瀏覽器誤以為是標籤的 < 而使用的一種替代字元,如此瀏覽器才會正確的顯示 < 符號,同樣的道理,您也可以讓out.println()輸出%&gt;來於網頁上顯示%>的符號。