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>

執行上面示例代碼,得到以下結果 -

JSP基礎語法

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插件創建OBJECTEMBED標記的特定於瀏覽器的代碼。

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>

上述代碼將產生以下結果 -

JSP基礎語法

現在看看下面的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>

上述代碼將產生以下結果 -

JSP基礎語法

以上示例可以使用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>

上述代碼將產生以下結果 -

JSP基礎語法

11.JSP運算符

JSP支持Java支持的所有邏輯和算術運算符。下表列出了所有具有最高優先級的運算符放在表格的頂部,優先級較低的運算符放在底部。

在一個表達式中,將首先評估計算較高優先級的運算符。

分類

運算符

關聯性

後綴

() [] .

左到右

一元運算符

++ -- ! ~

右到左

乘法

* / %

左到右

加法

+ -

位移

>> >>> <<

左到右

關係

> >= < <=

左到右

等於

== !=

左到右

按位與

&

左到右

按位異或

^

左到右

按位或

JSP基礎語法

左到右

邏輯與

&&

邏輯或

JSP基礎語法

左到右

條件

?:

右到左

分配

= += -= *= /= %= >>= <<= &= ^=

右到左

逗號

,

左到右

12.JSP文字

JSP表達式語言定義了以下文字 -

  • 布爾 - truefalse
  • 整數 - 與Java中的一樣。
  • 浮點 - 與Java中的一樣。
  • 字符串 - 帶單引號和雙引號; "被轉義爲\"'被轉義爲\'\被轉義爲\\
  • - null