本小節將會簡單地介紹一下JSP開發中的基礎語法。
腳本程式可以包含任意量的Java語句、變數、方法或表達式,只要它們在腳本語言中是有效的。
腳本程式的語法格式:
<% 程式碼片段%>
或者,您也可以寫與其等價的XML語句,就像下面一樣:
<jsp:scriptlet> 程式碼片段</jsp:scriptlet>
任何文字、HTML標籤、JSP元素必須寫在腳本程式的外面。
下面給出一個範例,同時也是本教學的第一個JSP範例:
<html><head><title>Hello World</title></head><body>Hello World!<br/><% out.println("Your IP address is " + request.getRemoteAddr()); % ></body></html>
注意:請確保Apache Tomcat已經安裝在C:apache-tomcat-7.0.2目錄下並且運行環境已經正確設定。
將上述程式碼儲存在hello.jsp中,然後將它放置在C:apache-tomcat-7.0.2webappsROOT目錄下,打開瀏覽器並在網址列中輸入http://localhost:8080/hello .jsp。運行後得到以下結果:
一個宣告語句可以宣告一個或多個變數、方法,以供後面的Java程式碼使用。在JSP檔案中,您必須先聲明這些變數和方法然後才能使用它們。
JSP聲明的語法格式:
<%! declaration; [ declaration; ]+ ... %>
或者,您也可以寫與其等價的XML語句,就像下面一樣:
<jsp:declaration> 程式碼片段</jsp:declaration>
程式範例:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
一個JSP表達式中包含的腳本語言表達式,先轉換成String,然後插入到表達式出現的地方。
由於表達式的值會轉換成String,所以您可以在一個文字行中使用表達式而不用去管它是否是HTML標籤。
表達式元素中可以包含任何符合Java語言規範的表達式,但不能使用分號來結束表達式。
JSP表達式的語法格式:
<%= 表達式%>
同樣,您也可以寫出等價的XML語句:
<jsp:expression> 表達式</jsp:expression>
程式範例:
<html> <head><title>A Comment Test</title></head> <body><p> Today's date: <%= (new java.util.Date()).toLocaleString()%></ p></body> </html>
運行後得到以下結果:
Today's date: 11-Sep-2013 21:24:25
JSP註解主要有兩個作用:為程式碼作註解以及將某段程式碼註解掉。
JSP註解的語法格式:
<%-- 這裡可以填寫JSP 註解--%>
程式範例:
<html> <head><title>A Comment Test</title></head> <body> <h2>A Test of Comments</h2> <%-- 該部分註解在網頁中不會被顯示-- %> </body> </html>
運行後得到以下結果:
A Test of Comments
不同情況下使用註解的語法規則:
文法 | 描述 |
---|---|
<%-- 註--%> | JSP註釋,註釋內容不會被傳送至瀏覽器甚至不會被編譯 |
<!-- 註解--> | HTML註釋,透過瀏覽器查看網頁原始碼時可以看見註解內容 |
<% | 代表靜態<%常數 |
%> | 代表靜態%> 常數 |
' | 在屬性中使用的單引號 |
" | 在屬性中使用的雙引號 |
JSP指令用來設定與整個JSP頁面相關的屬性。
JSP指令語法格式:
<%@ directive attribute="value" %>
這裡有三種指令標籤:
指令 | 描述 |
---|---|
<%@ page ... %> | 定義頁面的依賴屬性,例如腳本語言、error頁面、快取需求等等 |
<%@ include ... %> | 包含其他文件 |
<%@ taglib ... %> | 引入標籤庫的定義,可以是自訂標籤 |
JSP行為標籤使用XML語法結構來控制servlet引擎。它能夠動態插入一個文件,重複使用JavaBean元件,引導使用者到另一個頁面,為Java插件產生相關的HTML等等。
行為標籤只有一種語法格式,它嚴格遵守XML標準:
<jsp:action_name attribute="value" />
行為標籤基本上是一些預先就定義好的函數,下表羅列出了一些可用的JSP行為標籤::
文法 | 描述 |
---|---|
jsp:include | 用於在目前頁面中包含靜態或動態資源 |
jsp:useBean | 尋找並初始化一個JavaBean組件 |
jsp:setProperty | 設定JavaBean組件的值 |
jsp:getProperty | 將JavaBean組件的值插入output中 |
jsp:forward | 從一個JSP檔案傳遞一個包含使用者請求的request對象給另一個檔案 |
jsp:plugin | 用於在產生的HTML頁面中包含Applet和JavaBean對象 |
jsp:element | 動態建立一個XML元素 |
jsp:attribute | 定義動態建立的XML元素的屬性 |
jsp:body | 定義動態建立的XML元素的主體 |
jsp:text | 用於封裝模板數據 |
JSP支持九個自動定義的變量,江湖人稱隱含物件。這九個隱含物件的簡介請見下表:
物件 | 描述 |
---|---|
request | HttpServletRequest類別的實例 |
response | HttpServletResponse類別的實例 |
out | PrintWriter類別的實例,用來把結果輸出至網頁上 |
session | HttpSession類別的實例 |
application | ServletContext類別的實例,與應用程式上下文有關 |
config | ServletConfig類別的實例 |
pageContext | PageContext類別的實例,提供對JSP頁面所有物件以及命名空間的訪問 |
page | 類似於Java類別中的this關鍵字 |
Exception | Exception類別的對象,代表發生錯誤的JSP頁面中對應的異常對象 |
JSP提供對Java語言的全面支援。您可以在JSP程式中使用Java API甚至建立Java程式碼區塊,包括判斷語句和循環語句等等。
If…else區塊,請看下面這個範例:
<%! int day = 3; %> <html> <head><title>IF...ELSE Example</title></head> <body><% if (day == 1 | day == 7) { %> <p> Today is weekend</p><% } else { %> <p> Today is not weekend</p><% } %></body> </html>
運行後得到以下結果:
Today is not weekend
現在來看看switch…case區塊,與if…else區塊有很大的不同,它使用out.println(),並且整個都裝在腳本程式的標籤中,就像下面這樣:
<%! int day = 3; %> <html> <head><title>SWITCH...CASE Example</title></head> <body><% switch(day) { case 0: out.println( "It's Sunday."); break; case 1: out.println("It's Monday."); break; case 2: out.println("It's Tuesday."); break; case 3: out.println("It's Wednesday."); break; case 4: out.println("It's Thursday." ); break; case 5: out.println("It's Friday."); break; default: out.println("It's Saturday."); } %></body> </html>
運行後得出以下結果:
It's Wednesday.
迴圈語句
在JSP程式中可以使用Java的三個基本迴圈類型:for,while,和do…while。
讓我們來看看for迴圈的例子:
<%! int fontSize; %> <html> <head><title>FOR LOOP Example</title></head> <body><%for ( fontSize = 1; fontSize <= 3; fontSize++){ %> < font color="green" size="<%= fontSize %>"> JSP Tutorial </font><br /><%}%></body> </html>
運行後得到以下結果:
JSP TutorialJSP Tutorial JSP Tutorial將上例改用while循環來寫:
<%! int fontSize; %> <html> <head><title>WHILE LOOP Example</title></head> <body><%while ( fontSize <= 3){ %> <font color="green" size="<%= fontSize %>"> JSP Tutorial </font><br /><%fontSize++;%><%}%></body> </html>
運行後得到同樣的結果:
JSP TutorialJSP Tutorial JSP TutorialJSP支援所有Java邏輯和算術運算子。
下表羅列出了JSP常見運算符,優先順序從高到底:
類別 | 操作符 | 結合性 |
---|---|---|
後綴 | () [] . (點運算子) | 左至右 |
一元 | ++ - - ! ~ | 右到左 |
可乘性 | * / % | 左至右 |
可加性 | + - | 左至右 |
移位 | >> >>> << | 左至右 |
關係 | > >= < <= | 左至右 |
相等/不等 | == != | 左至右 |
位元與 | & | 左至右 |
位元異或 | ^ | 左至右 |
位元或 | | | 左至右 |
邏輯與 | && | 左至右 |
邏輯或 | || | 左至右 |
條件判斷 | ?: | 右到左 |
賦值 | = += -= *= /= %= >>= <<= &= ^= |= | 右到左 |
逗號 | , | 左至右 |
JSP語言定義了以下幾個常數:
布林值(boolean):true 和false;
整數型(int):與Java中的一樣;
浮點型(float):與Java中的一樣;
字串(string):以單引號或雙引號開始和結束;
Null:null。