JSP基礎語法
在本章中,我們將瞭解和學習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