
- JSP 基礎教程
- JSP - 首頁
- JSP - 概述
- JSP - 環境設定
- JSP - 架構
- JSP - 生命週期
- JSP - 語法
- JSP - 指令
- JSP - 動作
- JSP - 隱式物件
- JSP - 客戶端請求
- JSP - 伺服器響應
- JSP - HTTP 狀態碼
- JSP - 表單處理
- JSP - 編寫過濾器
- JSP - 處理 Cookie
- JSP - 會話跟蹤
- JSP - 檔案上傳
- JSP - 處理日期
- JSP - 頁面重定向
- JSP - 訪問計數器
- JSP - 自動重新整理
- JSP - 傳送電子郵件
- 高階 JSP 教程
- JSP - 標準標籤庫
- JSP - 資料庫訪問
- JSP - XML 資料
- JSP - JavaBean
- JSP - 自定義標籤
- JSP - 表示式語言
- JSP - 異常處理
- JSP - 除錯
- JSP - 安全性
- JSP - 國際化
- JSP 有用資源
- JSP - 問題與解答
- JSP - 快速指南
- JSP - 有用資源
- JSP - 討論
JSP - 語法
在本章中,我們將討論 JSP 中的語法。我們將瞭解與 JSP 開發相關的基本簡單語法(即元素)的使用。
JSP 元素
JSP 元素描述如下:
指令碼片段
指令碼片段可以包含任意數量的 JAVA 語言語句、變數或方法宣告,或在頁面指令碼語言中有效的表示式。
以下是指令碼片段的語法:
<% code fragment %>
您可以將上述語法的 XML 等效形式編寫如下:
<jsp:scriptlet> code fragment </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 中,並且您的環境已根據環境設定教程進行設定。
讓我們將上述程式碼儲存在 JSP 檔案 hello.jsp 中,並將此檔案放在 C:\apache-tomcat7.0.2\webapps\ROOT 目錄中。使用 URL https://:8080/hello.jsp 瀏覽它。上述程式碼將生成以下結果:

JSP 宣告
宣告宣告一個或多個變數或方法,您可以在 JSP 檔案中稍後在 Java 程式碼中使用這些變數或方法。您必須在 JSP 檔案中使用變數或方法之前宣告它。
以下是 JSP 宣告的語法:
<%! declaration; [ declaration; ]+ ... %>
您可以將上述語法的 XML 等效形式編寫如下:
<jsp:declaration> code fragment </jsp:declaration>
以下是 JSP 宣告的示例:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
JSP 表示式
JSP 表示式元素包含一個被評估、轉換為字串並在 JSP 檔案中表達式出現的位置插入的指令碼語言表示式。
由於表示式的值被轉換為字串,因此您可以在一行文字中使用表示式,無論它是否在 JSP 檔案中用 HTML 標記。
表示式元素可以包含根據 Java 語言規範有效的任何表示式,但您不能使用分號來結束表示式。
以下是 JSP 表示式的語法:
<%= expression %>
您可以將上述語法的 XML 等效形式編寫如下:
<jsp:expression> expression </jsp:expression>
以下示例顯示了一個 JSP 表示式:
<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-2010 21:24:25
JSP 註釋
JSP 註釋標記 JSP 容器應忽略的文字或語句。當您想要隱藏或“註釋掉”JSP 頁面的某一部分時,JSP 註釋很有用。
以下是 JSP 註釋的語法:
<%-- This is JSP comment --%>
以下示例顯示了 JSP 註釋:
<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>
上述程式碼將生成以下結果:
A Test of Comments
在各種情況下,您可以使用少量特殊結構來插入註釋或字元,否則這些註釋或字元將被特殊處理。以下是摘要:
序號 | 語法和用途 |
---|---|
1 | <%-- comment --%> JSP 註釋。JSP 引擎忽略。 |
2 | <!-- comment --> HTML 註釋。瀏覽器忽略。 |
3 | <\% 表示靜態 <% 文字。 |
4 | %\> 表示靜態 %> 文字。 |
5 | \' 使用單引號的屬性中的單引號。 |
6 | \" 使用雙引號的屬性中的雙引號。 |
JSP 指令
JSP 指令影響 servlet 類的整體結構。它通常具有以下形式:
<%@ directive attribute="value" %>
指令標籤有三種類型:
序號 | 指令和描述 |
---|---|
1 | <%@ page ... %> 定義頁面相關的屬性,例如指令碼語言、錯誤頁面和緩衝要求。 |
2 | <%@ include ... %> 在翻譯階段包含一個檔案。 |
3 | <%@ taglib ... %> 宣告一個標籤庫,其中包含在頁面中使用的自定義操作 |
我們將在單獨的章節中解釋 JSP 指令 JSP - 指令
JSP 動作
JSP 動作使用 XML 語法中的構造來控制 servlet 引擎的行為。您可以動態插入檔案、重用 JavaBean 元件、將使用者轉發到另一個頁面或為 Java 外掛生成 HTML。
Action 元素只有一個語法,因為它符合 XML 標準:
<jsp:action_name attribute="value" />
Action 元素基本上是預定義的函式。下表列出了可用的 JSP 動作:
序號 | 語法和用途 |
---|---|
1 | jsp:include 在請求頁面時包含一個檔案。 |
2 | jsp:useBean 查詢或例項化一個 JavaBean。 |
3 | jsp:setProperty 設定 JavaBean 的屬性。 |
4 | jsp:getProperty 將 JavaBean 的屬性插入輸出。 |
5 | jsp:forward 將請求者轉發到新頁面。 |
6 | jsp:plugin 生成特定於瀏覽器的程式碼,為 Java 外掛建立 OBJECT 或 EMBED 標籤。 |
7 | jsp:element 動態定義 XML 元素。 |
8 | jsp:attribute 定義動態定義的 XML 元素的屬性。 |
9 | jsp:body 定義動態定義的 XML 元素的主體。 |
10 | jsp:text 用於在 JSP 頁面和文件中編寫模板文字。 |
我們將在單獨的章節中解釋 JSP 動作 JSP - 動作
JSP 隱式物件
JSP 支援九個自動定義的變數,也稱為隱式物件。這些變數是:
序號 | 物件和描述 |
---|---|
1 | request 這是與請求關聯的 HttpServletRequest 物件。 |
2 | response 這是與對客戶端的響應關聯的 HttpServletResponse 物件。 |
3 | out 這是用於向客戶端傳送輸出的 PrintWriter 物件。 |
4 | session 這是與請求關聯的 HttpSession 物件。 |
5 | application 這是與應用程式上下文關聯的 ServletContext 物件。 |
6 | config 這是與頁面關聯的 ServletConfig 物件。 |
7 | pageContext 這封裝了伺服器特定功能的使用,例如更高效能的 JspWriters。 |
8 | page 這只是 this 的同義詞,用於呼叫已翻譯的 servlet 類定義的方法。 |
9 | Exception Exception 物件允許指定 JSP 訪問異常資料。 |
我們將在單獨的章節中解釋 JSP 隱式物件 JSP - 隱式物件。
控制流語句
您可以在 JSP 程式設計中使用 Java 的所有 API 和構建塊,包括決策語句、迴圈等。
決策語句
if...else 塊的開始方式類似於普通的指令碼片段,但指令碼片段在每一行都用包含在指令碼片段標籤之間的 HTML 文字關閉。
<%! 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
現在看看以下使用 out.println() 和在指令碼片段內編寫的略有不同的 switch...case 塊:
<%! 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.
迴圈語句
您還可以在 Java 中使用三種基本型別的迴圈塊:for、while 和 do…while 塊在您的 JSP 程式設計中。
讓我們看看以下 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 Tutorial
JSP 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 Tutorial JSP Tutorial JSP Tutorial
JSP 運算子
JSP 支援 Java 支援的所有邏輯和算術運算子。下表列出了所有運算子,其中優先順序最高的運算子位於表頂部,優先順序最低的運算子位於底部。
在一個表示式中,優先順序較高的運算子將首先被評估。
類別 | 運算子 | 結合性 |
---|---|---|
字尾 | () [] . (點運算子) | 從左到右 |
一元 | ++ - - ! ~ | 從右到左 |
乘法 | * / % | 從左到右 |
加法 | + - | 從左到右 |
移位 | >> >>> << | 從左到右 |
關係 | > >= < <= | 從左到右 |
相等 | == != | 從左到右 |
按位與 | & | 從左到右 |
按位異或 | ^ | 從左到右 |
按位或 | | | 從左到右 |
邏輯與 | && | 從左到右 |
邏輯或 | || | 從左到右 |
條件 | ?: | 從右到左 |
賦值 | = += -= *= /= %= >>= <<= &= ^= |= | 從右到左 |
逗號 | , | 從左到右 |
JSP 字面量
JSP 表示式語言定義以下字面量:
布林值 - true 和 false
整數 - 如 Java 中所示
浮點數 - 如 Java 中所示
字串 - 使用單引號和雙引號;" 被轉義為 \,' 被轉義為 \,\ 被轉義為 \\。
空 - null