JSP入門教程(二)

JSP語法

目錄

JSP頁面基本構成
JSP腳本元素
JSP指令標記
JSP動作標記

一、JSP頁面基本構成

在HTML靜態頁面文件中加入和Java相關的動態元素,就構成了一個JSP頁面。一個JSP頁面通常由4種基本元素組成:

1.普通的HTML標記。 2.JSP註釋。 3.Java腳本元素,包括聲明、Java程序片和Java表達式。
4.JSP標記,如指令標記、動作標記和自定義標記等。

JSP頁面中常見的註釋有以下兩種:

1.HTML註釋 格式: 在標記符“”之間加入註釋內容,就構成了HTML註釋。
JSP引擎對於HTML註釋也要進行處理,即不將它看作是註釋,如果其中有JSP代碼,也將被JSP引擎處理。JSP引擎將處理之後的HTML註釋交給客戶端,通過瀏覽器查看JSP源文件時,能夠看到HTML註釋。
2.JSP註釋 格式:<%–JSP註釋–%> 在標記符“<%–”和“–%>”之間加入註釋內容,就構成了JSP註釋。
JSP引擎將JSP註釋當作是真正的註釋,在編譯JSP頁面時忽略這部分代碼。因此,通過瀏覽器查看JSP源文件時,無法看到JSP註釋。

二、JSP腳本元素

1.Java程序片

在標記符“<%”和“%>”之間插入的Java代碼被稱作JSP頁面的Java程序片。Java程序片格式如下:
<% Java代碼 %>
一個JSP頁面可以有任意段Java程序片,這些程序片將被JSP引擎(本教程中指Tomcat服務器)按順序執行。在一個程序片中聲明的變量稱爲JSP頁面的局部變量,它們在JSP頁面後繼的所有程序片以及表達式內都有效。
當多個客戶請求一個JSP頁面時,JSP引擎爲每個客戶啓動一個線程,不同的線程會分別執行該JSP頁面中的Java程序片,程序片中的局部變量會在不同的線程中被分配不同的內存空間。因此,一個客戶對JSP頁面局部變量操作的結果,不會影響到其他客戶。

2.成員變量與方法的聲明

成員變量和方法的聲明格式如下:
<%! 變量或方法定義 %>
在標記符“<%!”和“%>”之間聲明的變量被稱作JSP頁面的成員變量,成員變量在整個JSP頁面內都有效(與書寫位置無關),因爲JSP引擎將JSP頁面轉譯成Java 文件時,將這些變量作爲類的成員變量,這些變量的內存空間直到服務器關閉才釋放。因此,多個用戶共享JSP頁面的成員變量。任何用戶對JSP頁面成員變量操作的結果,都會影響到其他用戶。
在標記符“<%!”和“%>”之間聲明的方法被稱作JSP頁面的成員方法,該方法在整個JSP頁面內有效,但是該方法內定義的變量僅在該方法內有效。

3.Java表達式

在標記符“<%=”和“%>”之間可以插入一個表達式,這個表達式必須能求值。表達式的值由Web服務器負責計算,並將計算結果用字符串形式發送到客戶端,作爲HTML頁面的內容顯示。
Java表達式中可以有算術表達式、邏輯表達式或條件表達式等。但使用Java表達式時,應該注意以下兩點:
1.不可在“<%=”和“%>”之間插入語句,即:輸入的內容末尾不能以分號結束。
2. “<%=”是一個完整的符號,“<%”和“=”之間不能有空格。

實驗

在瀏覽器中輸出大小爲15*10表格,

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<html>
<head>
<title>practice3_3.jsp</title>
</head>
<body>
	<body>
		<table border="1">
	<%
		for (int i = 1; i <= 10; i++) 
		{
	%>
		<tr>
			<%
				for (int j = 1; j <= 15; j++) 
				{
					int temp = i * j;
			%>
				<td>
				<%
					out.print(i * j);
				%>
				</td>
			<%
				}
			%>
		</tr>
	<%
		}
	%>
	</table>
	
</body>
</html>

三、JSP指令標記

1.page指令

page指令標記用來定義整個JSP頁面的一些屬性和這些屬性的值。可以用一個page指令指定多個屬性的值,也可以使用多個page指令分別爲每個屬性指定值。page指令的格式如下:
<%@ page 屬性1=“屬性1的值” 屬性2=“屬性2的值” …%>
或者
<%@ page 屬性1=“屬性1的值” %>
<%@ page 屬性2=“屬性2的值” %>
<%@ page 屬性3=“屬性3的值” %>
….
<%@ page 屬性n=“屬性n的值” %>
page指令的主要屬性有contentType、import、language和pageEncoding等。

2.屬性contentType

JSP頁面使用page指令標記只能爲contentType屬性指定一個值,用來確定響應的MIME類型(MIME類型就是設定某種文件用對應的一種應用程序來打開的方式類型)。當用戶請求一個JSP頁面時,服務器會告訴瀏覽器使用contentType屬性指定的MIME類型來解釋執行所接收到的服務器爲之響應信息。例如,瀏覽器使用word應用程序打開用戶請求時,應將contentType屬性值設置爲:
<%@page contentType=“application/msword;
charset=GBK”%>

3.屬性import
JSP頁面使用page指令標記可爲import屬性指定多個值,import屬性的作用是爲JSP頁面引入包中的類,以便在JSP頁面的程序片、變量及方法聲明或表達式中使用包中的類。

4.屬性language
language屬性用來指定JSP頁面使用的腳本語言,目前該屬性的值只能取"java"

5.屬性pageEncoding
contentType中的charset是指服務器發送給客戶瀏覽器時所見到的網頁內容的編碼;pageEncoding是指JSP文件自身存儲時所用的編碼。
在JSP規範中,如果pageEncoding屬性存在,那麼JSP頁面的字符編碼方式就由pageEncoding決定,否則就由contentType屬性中的charset決定,如果charset也不存在,JSP頁面的字符編碼方式就採用默認的ISO-8859-1。
6.include指令
一個網站中多個JSP頁面有時需要顯示同樣的信息,比如該網站的Logo或導航條等,爲了便於網站程序的維護,通常在這些JSP頁面的適當位置嵌入一個相同的文件。include指令標記的作用就是將JSP文件、HTML網頁文件或其他文本文件靜態嵌入到當前的JSP網頁中,該指令的語法格式如下:
<%@include file=“文件的URL”%>
所謂靜態嵌入就是“先包含後處理”,在編譯階段完成對文件的嵌入。即:先將當前JSP頁面與要嵌入的文件合併成一個新的JSP頁面,然後再由JSP引擎將新頁面轉化爲Java文件處理並運行。
實驗代碼

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<html>
<head>
<title>include指令</title>
</head>
<body>
	include指令。
</body>
</html>

四、JSP動作標記

1.include動作標記
動作標記include的作用是將JSP文件、HTML網頁文件或其他文本文件動態嵌入到當前的JSP網頁中,該指令的語法有以下兩種格式:
<jsp:include page=“文件的URL”/>

<jsp:include page=“文件的URL”>
子標記
<jsp:include/>
當動作標記include不需要子標記時,使用上述第一種形式。
所謂動態嵌入就是“先處理後包含”,在運行階段完成對文件的嵌入。即:在將JSP頁面轉譯成Java文件時,並不合併兩個頁面;而是在Java文件的字解碼文件被加載並執行時,纔去處理include動作標記中引入的文件。與靜態嵌入方式相比,動態嵌入的執行速度稍慢,但是靈活性較高。

2.forward動作標記
動作標記forward的作用是:從該標記出現處停止當前JSP頁面的繼續執行,從而轉向執行forward動作標記中page屬性值指定的JSP頁面。該標記有兩種格式:
<jsp: forward page=“文件的URL”/>

<jsp: forward page=“文件的URL”>
子標記
<jsp: forward />
當動作標記forward不需要子標記時,使用上述第一種形式。

3.param動作標記
動作標記param不能獨立使用,但可以作爲include、forward動作標記的子標記來使用,該標記以“名字-值”對的形式爲對應頁面傳遞參數。該標記的格式爲:
<jsp:父標記 page=“接收參數頁面的URL”>
<jsp:param name=“參數名” value=“參數值”/>
<jsp:父標記/>
接收參數的頁面可以使用內置對象request調用getParameter(“參數名”)方法獲取動作標記param傳遞過來的參數值,內置對象將在本書第4章介紹。
可以使用param子標記向頁面傳遞多個參數。格式如下:
<jsp:父標記 page=“接收參數頁面的URL”>
<jsp:param name=“參數名1” value=“參數值1”/>
<jsp:param name=“參數名2” value=“參數值2”/>

<jsp:父標記/>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章