本小節(jié)將會簡單地介紹一下JSP開發(fā)中的基礎(chǔ)語法。
腳本程序可以包含任意量的Java語句、變量、方法或表達(dá)式,只要它們在腳本語言中是有效的。
腳本程序的語法格式:
<% 代碼片段 %>
或者,您也可以編寫與其等價(jià)的XML語句,就像下面這樣:
<jsp:scriptlet>
代碼片段
</jsp:scriptlet>
任何文本、HTML標(biāo)簽、JSP元素必須寫在腳本程序的外面。
下面給出一個(gè)示例,同時(shí)也是本教程的第一個(gè)JSP示例:
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
注意:請確保Apache Tomcat已經(jīng)安裝在C:\apache-tomcat-7.0.2目錄下并且運(yùn)行環(huán)境已經(jīng)正確設(shè)置。
將以上代碼保存在hello.jsp中,然后將它放置在 C:\apache-tomcat-7.0.2\webapps\ROOT目錄下,打開瀏覽器并在地址欄中輸入http://localhost:8080/hello.jsp。運(yùn)行后得到以下結(jié)果:
一個(gè)聲明語句可以聲明一個(gè)或多個(gè)變量、方法,供后面的Java代碼使用。在JSP文件中,您必須先聲明這些變量和方法然后才能使用它們。
JSP聲明的語法格式:
<%! declaration; [ declaration; ]+ ... %>
或者,您也可以編寫與其等價(jià)的XML語句,就像下面這樣:
<jsp:declaration>
代碼片段
</jsp:declaration>
程序示例:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
JSP表達(dá)式
一個(gè)JSP表達(dá)式中包含的腳本語言表達(dá)式,先被轉(zhuǎn)化成String,然后插入到表達(dá)式出現(xiàn)的地方。
由于表達(dá)式的值會被轉(zhuǎn)化成String,所以您可以在一個(gè)文本行中使用表達(dá)式而不用去管它是否是HTML標(biāo)簽。
表達(dá)式元素中可以包含任何符合Java語言規(guī)范的表達(dá)式,但是不能使用分號來結(jié)束表達(dá)式。
JSP表達(dá)式的語法格式:
<%= 表達(dá)式 %>
同樣,您也可以編寫與之等價(jià)的XML語句:
<jsp:expression>
表達(dá)式
</jsp:expression>
程序示例:
<html>
<head>
<title>A Comment Test</title>
</head>
<body>
<p>
Today's date: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
運(yùn)行后得到以下結(jié)果:
Today's date: 11-Sep-2013 21:24:25
JSP注釋
JSP注釋主要有兩個(gè)作用:為代碼作注釋以及將某段代碼注釋掉。
JSP注釋的語法格式:
<%-- 這里可以填寫 JSP 注釋 --%>
程序示例:
<html>
<head>
<title>A Comment Test</title>
</head>
<body>
<h2>A Test of Comments</h2>
<%-- 該部分注釋在網(wǎng)頁中不會被顯示--%>
</body>
</html>
運(yùn)行后得到以下結(jié)果:
A Test of Comments
不同情況下使用注釋的語法規(guī)則:
語法 | 描述 |
---|---|
<%--注釋 --%> |
JSP注釋,注釋內(nèi)容不會被發(fā)送至瀏覽器甚至不會被編譯 |
<!--注釋 --> |
HTML注釋,通過瀏覽器查看網(wǎng)頁源代碼時(shí)可以看見注釋內(nèi)容 |
<\% |
代表<%靜態(tài)常量 |
%\> |
代表靜態(tài) %> 常量 |
\' |
在屬性中使用的單引號 |
\" |
在屬性中使用的雙引號 |
JSP指令
JSP指令用來設(shè)置與整個(gè)JSP頁面相關(guān)的屬性。
JSP指令語法格式:
<%@ directive attribute="value" %>
這里有三種指令標(biāo)簽:
指令 |
描述 |
---|---|
<%@ page ... %> |
定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等 |
<%@ include ... %> |
包含其他文件 |
<%@ taglib ... %> |
引入標(biāo)簽庫的定義,可以是自定義標(biāo)簽 |
JSP行為標(biāo)簽使用XML語法結(jié)構(gòu)來控制servlet引擎。它能夠動態(tài)插入一個(gè)文件,重用JavaBean組件,引導(dǎo)用戶去另一個(gè)頁面,為Java插件產(chǎn)生相關(guān)的HTML等等。
行為標(biāo)簽只有一種語法格式,它嚴(yán)格遵守XML標(biāo)準(zhǔn):
<jsp:action_name attribute="value" />
行為標(biāo)簽基本上是一些預(yù)先就定義好的函數(shù),下表羅列出了一些可用的JSP行為標(biāo)簽:
語法 |
描述 |
---|---|
jsp:include |
用于在當(dāng)前頁面中包含靜態(tài)或動態(tài)資源 |
jsp:useBean |
尋找和初始化一個(gè)JavaBean組件 |
jsp:setProperty |
設(shè)置 JavaBean組件的值 |
jsp:getProperty |
將 JavaBean組件的值插入到 output中 |
jsp:forward |
從一個(gè)JSP文件向另一個(gè)文件傳遞一個(gè)包含用戶請求的request對象 |
jsp:plugin |
用于在生成的HTML頁面中包含Applet和JavaBean對象 |
jsp:element |
動態(tài)創(chuàng)建一個(gè)XML元素 |
jsp:attribute |
定義動態(tài)創(chuàng)建的XML元素的屬性 |
jsp:body |
定義動態(tài)創(chuàng)建的XML元素的主體 |
jsp:text |
用于封裝模板數(shù)據(jù) |
JSP支持九個(gè)自動定義的變量,江湖人稱隱含對象。這九個(gè)隱含對象的簡介見下表:
對象 |
描述 |
---|---|
request |
HttpServletRequest類的實(shí)例 |
response |
HttpServletResponse類的實(shí)例 |
out |
PrintWriter類的實(shí)例,用于把結(jié)果輸出至網(wǎng)頁上 |
session |
HttpSession類的實(shí)例 |
application |
ServletContext類的實(shí)例,與應(yīng)用上下文有關(guān) |
config |
ServletConfig類的實(shí)例 |
pageContext |
PageContext類的實(shí)例,提供對JSP頁面所有對象以及命名空間的訪問 |
page |
類似于Java類中的this關(guān)鍵字 |
Exception |
Exception類的對象,代表發(fā)生錯(cuò)誤的JSP頁面中對應(yīng)的異常對象 |
JSP提供對Java語言的全面支持。您可以在JSP程序中使用Java API甚至建立Java代碼塊,包括判斷語句和循環(huán)語句等等。
If…else塊,請看下面這個(gè)例子:
<%! int day = 3; %>
<html>
<head>
<title>IF...ELSE Example</title>
</head>
<body>
<% if (day == 1 | day == 7) { %>
<p> Today is weekend</p>
<% } else { %>
<p> Today is not weekend</p>
<% } %>
</body>
</html>
運(yùn)行后得到以下結(jié)果:
Today is not weekend
現(xiàn)在來看看switch…case塊,與if…else塊有很大的不同,它使用out.println(),并且整個(gè)都裝在腳本程序的標(biāo)簽中,就像下面這樣:
<%! 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>
運(yùn)行后得出以下結(jié)果:
It's Wednesday.
循環(huán)語句
在JSP程序中可以使用Java的三個(gè)基本循環(huán)類型:for,while,和 do…while。
讓我們來看看for循環(huán)的例子:
<%! 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>
運(yùn)行后得到以下結(jié)果:
JSP Tutorial
JSP Tutorial
JSP Tutorial
將上例改用while循環(huán)來寫:
<%! 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>
運(yùn)行后得到同樣的結(jié)果:
JSP Tutorial
JSP Tutorial
JSP Tutorial
JSP支持所有Java邏輯和算術(shù)運(yùn)算符。
下表羅列出了JSP常見運(yùn)算符,優(yōu)先級從高到底:
類別 |
操作符 |
結(jié)合性 |
---|---|---|
后綴 |
() [] . (點(diǎn)運(yùn)算符) |
左到右 |
一元 |
++ - - ! ~ |
右到左 |
可乘性 |
* / % |
左到右 |
可加性 |
+ - |
左到右 |
移位 |
>> >>> << |
左到右 |
關(guān)系 |
> >= < <= |
左到右 |
相等/不等 |
== != |
左到右 |
位與 |
& |
左到右 |
位異或 |
^ |
左到右 |
位或 |
| |
左到右 |
邏輯與 |
&& |
左到右 |
邏輯或 |
|| |
左到右 |
條件判斷 |
?: |
右到左 |
賦值 |
= += -= *= /= %= >>= <<= &= ^= |= |
右到左 |
逗號 |
, |
左到右 |
JSP常量
JSP語言定義了以下幾個(gè)常量:
● 布爾值(boolean):true 和 false;
● 整型(int):與Java中的一樣;
● 浮點(diǎn)型(float):與Java中的一樣;
● 字符串(string):以單引號或雙引號開始和結(jié)束;
● Null:null。