1. 程式人生 > >#1113-JSP 語法

#1113-JSP 語法

 

 


JSP 語法

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.2\webapps\ROOT目錄下,開啟瀏覽器並在位址列中輸入http://localhost:8080/hello.jsp。

 


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表示式

一個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 註釋的語法格式:

<%-- 這裡可以填寫 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頁面相關的屬性。

JSP指令語法格式:

<%@ directive attribute = "value" %>

這裡有三種指令標籤

<%@ page ... %> 定義頁面的依賴屬性,比如指令碼語言、error頁面、快取需求等等
<%@ include ... %> 包含其他檔案
<%@ taglib ... %> 引入標籤庫的定義,可以是自定義標籤

 

JSP行為

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隱含物件

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> Tody 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>

 

 

迴圈語句


在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 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運算子

JSP支援所有Java邏輯和算術運算子。


下表羅列出了JSP常見運算子,優先順序從高到底:

 


類別 操作符 結合性

 

字尾 () [] . (點運算子) 左到右

一元 ++ - - ! ~ 右到左

可乘性 * / % 左到右

可加性 + - 左到右

移位 >> >>> << 左到右

關係 > >= < <= 左到右

相等/不等 == != 左到右

位與 & 左到右

位異或 ^ 左到右

位或 | 左到右

邏輯與 && 左到右

邏輯或 || 左到右

條件判斷 ?: 右到左

賦值 = += -= *= /= %= >>= <<= &= ^= |= 右到左

逗號 , 左到右

 

 


JSP常量

JSP語言定義了以下幾個常量:

Boolean:true and false
Integer:與Java中的一樣
Floating point:與Java中的一樣
String:以單引號或雙引號開始和結束。 " 被轉義成 \",'被轉義成 \', \ 被轉義成\\
Null:null