當前位置:
首頁 > 知識 > 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.2webappsROOT目錄下,打開瀏覽器並在地址欄中輸入http://localhost:8080/hello.jsp。運行後得到以下結果:

JSP 的語法

中文編碼問題

如果我們要在頁面正常顯示中文,我們需要在 JSP 文件頭部添加以下代碼:<>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

接下來我們將以上程序修改為:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body>Hello World!<br/><%out.println("你的 IP 地址 " + request.getRemoteAddr());%></body></html>

這樣中文就可以正常顯示了。



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>

程序示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%></p></body> </html>

運行後得到以下結果:

今天的日期是: 2016-6-25 13:40:07


JSP 的語法

JSP注釋

JSP注釋主要有兩個作用:為代碼作注釋以及將某段代碼注釋掉。

JSP注釋的語法格式:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><%-- 該部分注釋在網頁中不會被顯示--%>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%></p></body> </html>

運行後得到以下結果:

今天的日期是: 2016-6-25 13:41:26

不同情況下使用注釋的語法規則:


語法 描述
<%-- 注釋 --%> 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塊,請看下面這個例子:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><%! int day = 3; %>
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><h3>IF...ELSE 實例</h3><% if (day == 1 | day == 7) { %> <p>今天是周末</p><% } else { %> <p>今天不是周末</p><% } %></body> </html>

運行後得到以下結果:

IF...ELSE 實例今天不是周末

現在來看看switch…case塊,與if…else塊有很大的不同,它使用out.println(),並且整個都裝在腳本程序的標籤中,就像下面這樣:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><%! int day = 3; %>
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><h3>SWITCH...CASE 實例</h3><% switch(day) {case 0:
out.println("星期天");
break;case 1:
out.println("星期一");
break;case 2:
out.println("星期二");
break;case 3:
out.println("星期三");
break;case 4:
out.println("星期四");
break;case 5:
out.println("星期五");
break;default:
out.println("星期六");}%></body> </html>

瀏覽器訪問,運行後得出以下結果:

SWITCH...CASE 實例星期三


循環語句

在JSP程序中可以使用Java的三個基本循環類型:for,while,和 do…while。

讓我們來看看for循環的例子,以下輸出的不同字體大小的"我愛學習":

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><%! int fontSize; %>
<!DOCTYPE html><html><head><meta charset="utf-8"><title>我愛學習(run.com)</title></head><body><h3>For 循環實例</h3><%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
<font color="green" size="<%= fontSize %>"> 我愛學習 </font><br /><%}%></body> </html>

將上例改用while循環來寫:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><%! int fontSize; %>
<!DOCTYPE html><html><head><meta charset="utf-8"><title>我愛學習(run.com)</title></head><body><h3>While 循環實例</h3><%while ( fontSize <= 3){ %>
<font color="green" size="<%= fontSize %>">
我愛學習 </font><br /><%fontSize++;%><%}%></body> </html>JSP運算符

JSP支持所有Java邏輯和算術運算符。

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


類別 操作符 結合性
後綴 () [] . (點運算符) 左到右
一元 ++ - - ! ~ 右到左
可乘性 * / % 左到右
可加性 + - 左到右
移位 >> >>> << 左到右
關係 > >= < <= 左到右
相等/不等 == != 左到右
位與 & 左到右
位異或 ^ 左到右
位或 | 左到右
邏輯與 && 左到右
邏輯或 || 左到右
條件判斷 ?: 右到左
賦值 = += -= *= /= %= >>= <<= &= ^= |= 右到左
逗號 , 左到右



JSP 字面量

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

  • 布爾值(boolean):true 和 false;

  • 整型(int):與 Java 中的一樣;

  • 浮點型(float):與 Java 中的一樣;

  • 字元串(string):以單引號或雙引號開始和結束;

  • Null:null。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

JSP的 結構
jQuery UI API 類別-交互(Interactions)

TAG:程序員小新人學習 |