JSP文法(1)——HTML注釋 隱藏注釋 聲明 運算式 Scriptlet Page指令 Taglib指令

來源:互聯網
上載者:User

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做為你的首碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.