在本章中,我們將瞭解和學習JSP語法。並瞭解JSP開發涉及的簡單語法(即元素)的基本用法。
為了方便演示,使用Eclipse創建一個動態Web專案:jspsyntax,用於運行以下涉及到的示例代碼。
JSP的元素
JSP的元素如下所述:
1.小腳本
小腳本(scriptlet)可以將任何數量的小腳本包含在頁面中,小腳本是有效的JAVA語言語句,變數或方法聲明或運算式。
以下是小腳本的語法 -
<% code fragment %>
可以將上述語法編寫為XML的形式,效果相同,如下所示:
<jsp:scriptlet>
code fragment
</jsp:scriptlet>
編寫的任何文本,HTML標籤或JSP元素必須在scriptlet之外。 以下是JSP的簡單和第一個例子 -
檔:helloworld.jsp -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
Hello World!
<br />
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
執行上面示例代碼,得到以下結果 -
2.JSP聲明
聲明一個或多個變數或方法,可以在Java代碼中編寫,之後在JSP檔中使用。 在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); %>
3.JSP運算式
JSP運算式元素包含一個腳本語言運算式,它被評估求值,轉換為一個字串,並插入到運算式顯示在JSP檔中的指定輸出位置。
因為運算式的值被轉換為字串,所以可以在JSP檔中使用文本行內的運算式,無論是否使用HTML標記HTML。
運算式元素可以包含根據Java語言規範有效的任何運算式,但不能使用分號來結束運算式。
以下是JSP運算式的語法 -
<%= expression %>
可以將上述語法編寫為XML的形式,效果相同,如下所示:
<jsp:expression>
expression
</jsp:expression>
以下示例顯示了JSP運算式 -
檔:express.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-2017 21:24:25
4.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 | \" |
靜態的單引號" 字面值。 |
5.JSP指令
JSP指令影響servlet類的整體結構。它通常具有以下形式 -
<%@ directive attribute="value" %>
有三種類型的指令標籤 -
編號 | 指令 | 描述 |
---|---|---|
1 | <%@ page ... %> |
定義頁面相關屬性,如腳本語言,錯誤頁面和緩沖要求等。 |
2 | <%@ include ... %> |
在編譯階段包括檔。 |
3 | <%@ taglib ... %> |
聲明頁面中使用包含自定義操作的標籤庫 |
我們將在另一章專門介紹JSP指令 - JSP指令
6.JSP動作
JSP動作使用XML語法中的結構來控制servlet引擎的行為。可以動態插入檔,重新使用JavaBeans組件,將用戶轉發到另一個頁面,或為Java插件生成HTML。
只有一個用於動作元素語法,因為它符合XML標準 -
<jsp:action_name attribute="value" />
動作元素基本上是預定義的功能,下表列出了可用的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動作
7.JSP隱式對象
JSP支持九個自動定義的變數,也稱為隱式對象。這些變數是 -
編號 | 對象 | 描述 |
---|---|---|
1 | request |
這是與請求相關聯的HttpServletRequest 對象。 |
2 | response |
這是與客戶端的回應關聯的HttpServletResponse 對象。 |
3 | out |
這是用於將輸出發送到客戶端的PrintWriter 對象。 |
4 | session |
這是與請求相關聯的HttpSession 對象。 |
5 | application |
這是與應用程式上下文相關聯的ServletContext 對象。 |
6 | config |
這是與該頁面相關聯的ServletConfig 對象。 |
7 | pageContext |
它封裝了使用伺服器特定的功能,如更高性能的JspWriter 對象。 |
8 | page |
這只是一個同義詞,用於調用由編譯的servlet類定義的方法。 |
9 | Exception |
異常對象允許指定的JSP訪問異常數據。 |
我們將在單獨的章節講解JSP隱式對象 - JSP隱式對象。
8.控制流程語句
在JSP編程中使用Java的所有API和構建塊,包括決策語句,迴圈等。如:if
,if..else
等語句。
9.決策語句
if...else
塊開始像一個普通的小腳本,但是小腳本在每一行都會被閉合,並且包含小腳本標籤在HTML文本中。參考以下示例代碼 -
檔:ifelse.jsp -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>IF...Else示例</title>
</head>
<body>
<%!int day = 3;%>
<%
if (day == 1 | day == 7) {
%>
<p>今天是週末,不用上班,Oyes ~</p>
<%
} else {
%>
<p>今天是工作日,乖乖去上班 ~</p>
<%
}
%>
</body>
</html>
上述代碼將產生以下結果 -
現在看看下麵的switch...case
塊,對於不同選項匹配使用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 Saturday.
10.迴圈語句
在Java中使用三種基本類型的迴圈塊:for
, while
以及 do…while
均可在JSP編程中使用。
下麵來看看for
迴圈語句的示例 -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>For迴圈語句示例</title>
</head>
<body>
<%!int fontSize;%>
<%
for (fontSize = 1; fontSize <= 5; fontSize++) {
%>
<font color="green" size="<%=fontSize%>"> JSP教學 </font>
<br />
<%
}
%>
</body>
</html>
上述代碼將產生以下結果 -
以上示例可以使用while
迴圈編寫,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>While迴圈語句示例</title>
</head>
<body>
<%!int fontSize;%>
<%
while (fontSize <= 5) {
%>
<font color="green" size="<%=fontSize%>"> JSP教學 </font>
<br />
<%
fontSize++;
%>
<%
}
%>
</body>
</html>
上述代碼將產生以下結果 -
11.JSP運算符
JSP支持Java支持的所有邏輯和算術運算符。下表列出了所有具有最高優先順序的運算符放在表格的頂部,優先順序較低的運算符放在底部。
在一個運算式中,將首先評估計算較高優先順序的運算符。
分類 | 運算符 | 關聯性 |
---|---|---|
尾碼 | () [] . |
左到右 |
一元運算符 | ++ -- ! ~ |
右到左 |
乘法 | * / % |
左到右 |
加法 | + - |
|
位移 | >> >>> << |
左到右 |
關係 | > >= < <= |
左到右 |
等於 | == != |
左到右 |
按位與 | & |
左到右 |
按位異或 | ^ |
左到右 |
按位或 | ![]() |
左到右 |
邏輯與 | && |
|
邏輯或 | ![]() |
左到右 |
條件 | ?: |
右到左 |
分配 | = += -= *= /= %= >>= <<= &= ^= |
右到左 |
逗號 | , |
左到右 |
12.JSP文字
JSP運算式語言定義了以下文字 -
- 布爾 -
true
和false
- 整數 - 與Java中的一樣。
- 浮點 - 與Java中的一樣。
- 字串 - 帶單引號和雙引號;
"
被轉義為\"
,'
被轉義為\'
,\
被轉義為\\
。 - 空 -
null