1. 程式人生 > >JSP語法

JSP語法

數據 ring back border 出了 tuesday test github 與運算

以下內容引用自http://wiki.jikexueyuan.com/project/jsp/syntax.html:

一、Scriptlet

Scriptlet可以包含任意數量的JAVA語言語句,變量或方法聲明,或者在頁面的腳本語言中有效的表達式。

下面是Scriptlet 的語法:

<% code fragment %>

可以編寫相當於上述語法的XML,如下所示:

<jsp:scriptlet>
   code fragment
</jsp:scriptlet>

任何文本、HTML標簽或編寫的JSP元素必須在Scriptlet之外。下面是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中。

把上面的代碼寫入JSP文件中的hello.jsp中,並把這個文件放在C:\apache-tomcat-7.0.2\webapps\ROOT中,並試圖通 http://localhost:8080/hello.jsp

瀏覽它。這將產生以下結果:

技術分享

二、JSP聲明

JSP聲明聲明了一個或多個變量或方法,可以在JSP文件中的Java代碼中使用。當在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); %>

三、JSP表達式

JSP表達式元素包含一個腳本語言表達式,該表達式被賦值,轉換成一個字符串,並插入到表達式出現在JSP文件中的位置。

因為表達式的值轉換為一個字符串,可以在JSP文件中的文本的一行使用一個表達式,無論該文本是否是HTML標簽標記。

根據Java語言規範,表達式元素可以包含任何有效的表達式,但不能使用分號來結束一個表達式。

下面是JSP表達式的語法:

<%= expression %>

可以編寫相當於上述語法的XML,如下所示:

<jsp:expression>
   expression
</jsp:expression>

以下是JSP表達式的簡單的例子:

<html> 
<head><title>A Comment Test</title></head> 
<body>
<p>
   Today‘s date: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body> 
</html> 

四、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> 

在一些情況下,有少量的特殊結構可以用來插入註釋或字符,否則會被特殊對待。這裏有一個總結:

語法目的
<%-- comment --%> JSP註釋。JSP引擎會忽略。
<!-- comment --> HTML註釋。瀏覽器會忽略。
<\% 代表靜態,相當於轉義字符
%\> 代表靜態,相當於轉義字符
\‘ 單引號屬性,使用單引號。
\" 雙引號屬性,使用雙引號。

五、JSP指令

JSP指令影響Servlet類的總體結構。它通常具有以下形式:

<%@ directive attribute="value" %>

有三種指令標簽:

指令描述
<%@ page ... %> 定義page-dependent屬性,比如腳本語言,錯誤頁面和緩沖要求。
<%@ 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的屬性嵌入到輸出中
jsp:forward 將請求轉發給一個新頁面
jsp:plugin 生成瀏覽器-特定代碼,為Java插件創建OBJECT或EMBED標簽
jsp:element 動態的定義XML元素
jsp:attribute 定義了動態定義的XML元素的屬性
jsp:body 定義了動態定義XM L元素的body
jsp:text 用於在JSP頁面和文檔中編寫模板

七、JSP隱式對象

JSP支持9個自動定義的變量,這也稱為隱式對象。這些變量是:

對象描述
request 這是與請求關聯的HttpServletRequest對象。
response 這是與客戶端響應關聯的HttpServletResponse對象。
out 這是用於向客戶端發送輸出的PrintWriter對象。
session 這是與請求關聯的HttpSession對象。
application 這是與應用程序上下文關聯的ServletContext對象。
config 這是與頁面關聯的ServletConfig對象。
pageContext 這個封裝特使用特定服務器的特性,如更高的性能jspwriter。
page 這是this的一個簡單的同義詞,是用來調用由轉換的servlet類定義的方法。
Exception Exception對象允許指定的JSP訪問異常數據。

八、控制流語句

JSP提供了強有力的Java工具來嵌入到Web應用程序中。可以在JSP編程中使用所有的API和Jave構建塊,包括決策語句、循環等。

九、決策的語句

if…else塊像普通的Scriptlet一樣開始,但Scriptlet結束於包含在Scriptlet標簽間的HTML文本每一行。

<%! 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> 
//這將產生如下所示的結果:
Today is not weekend

現在看看下面的switch…case塊,使用out.println()語句和內部Scriptletas編寫,與上述例子有一點區別:

<%! 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 Wednesday.

十、循環語句

還可以在Java中使用循環塊的三種基本類型來實現JSP編程: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 Tutorial
    JSP Tutorial
    JSP Tutorial   

十一、JSP運算符

JSP支持所有Java支持的邏輯和算術運算符。下表列出了所有運算符的優先級,從上到下,優先級依次降低。

在一個表達式,優先級越高的運算符會越先計算。

類型 運算符 結合性
後綴運算符 () [] . (dot operator) 從左到右
一目運算符 ++ - - ! ~ 從右到左
倍數運算符 * / % 從左到右
加法運算符 + - 從左到右
位移運算符 >> >>> << 從左到右
代數運算符 > >= < <= 從左到右
賦值運算符 == != 從左到右
按位與運算符 & 從左到右
按位異或運算符 ^ 從左到右
按位或運算符 | 從左到右
邏輯與運算符 && 從左到右
邏輯或運算符 || 從左到右
條件運算符 ?: 從右到左
賦值運算符 = += -= *= /= %= >>= <<= &= ^= |= 從右到左
逗號運算符 , 從左到右

十二、JSP文字

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

  • Boolean: true and false

  • Integer: 與Java相同

  • Floating point: 與Java相同

  • String: 帶有單引號和雙引號;’’轉義為\’’,’轉義為\’,\轉義為\。

  • Null: null

測試工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test1/

JSP語法