二 JSP 基本語法

JSP 基本語法

JSP 運行平臺

  • Caucho 公司的 Resin 平臺
  • Apache 公司的 Tomcat 平臺
  • BEA 公司的 WebLogic 平臺
  • IBM WebSphere Application Server 平臺

註釋方式

  • <%-- 註釋內容 --%> 隱式隱藏,註釋的內容不會傳遞到客戶端
  • <!-- 註釋內容 --> 顯式隱藏,註釋的內容會被傳遞到客戶端
  • <% /* 註釋內容 */ %><% //註釋內容 %> 實際是利用了插入腳本的方式插入了註釋,同樣不會被傳遞給客戶端

變量聲明

<% %> 中聲明的變量是局部變量,而在 <%! %> 中聲明的變量是在整個 JSP 頁面內有效的,在 JSP 被編譯爲類的實例對象時,這種變量就是對象的屬性。所以當 JSP 第一次編譯執行後,其中聲明的全局變量是會被之後的請求共享的。如此,刷新 JSP 界面時,可以看到他的變化是連續性的。

注意在 <% %> 是不能聲明方法的,這是因爲其中的代碼會被放到方法中去執行,而方法是無法嵌套聲明的。

除了在 <% %> 中使用默認的 out 對象輸出值外,還可以使用 <%=expression %> 輸出值,expression 是可以計算的表達式。

內置對象

JSP 界面中存在着一些不需要聲明就可以直接使用的對象,稱爲內置對象或隱藏對象。

包括:request、response、out、session、application、pageContext、config、page 以及 exception 。

默認對象 exception 是一個 java.lang.Throwable 對象,用來表示界面獲取到的錯誤,但是該對象只有當 JSP 界面被設置爲錯誤界面時纔可使用。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ page isErrorPage="true" %>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>錯誤</title>
</head>
<body>
發生錯誤:<%=exception.getMessage() %>
</body>
</html>

要使用上述的錯誤界面,需要在可能發生錯誤的界面設置該錯誤界面。

<%@ page errorPage="error.jsp" %>

如此,噹噹前界面發生錯誤時,則返回指定的 error.jsp 錯誤界面。

指令元素

  • page 指令,用來定義 JSP 頁面中的全局屬性,常用來設置腳本語言、內容類型、導入包等。

    <%@ page language="java" contentType="text/html; charset=uft-8" %>	<%@ page import="java.util.Vector,java.util.Calendar" %>
    
  • include 指令

    JSP 中的 include 指令,用來包含一個靜態的文件,噹噹前 JSP 被解析時,被包含的文件內容會被複制到當前頁面中,同當前的 JSP 頁面一起編譯。

    指令格式:<%@ include file="file path"%>

    這個路徑是相對路徑,如果是以 / 開頭,那麼就是相對於 JSP 應用的上下關係路徑,否則就是當前文件的路徑。並且,這個路徑不能是動態的,即不能是類似下面的變量。

    <% String filePath="header.htmlf"; %>
    <%@ include file="<%=filePath%>" %>

    如果一個 JSP 文件使用這種方式引用其他文件內容,那麼就意味着引用的文件可以存在語法格式的錯誤(但是要修改文件後綴名以規避語法檢查),主文件中的內容同樣可以是不完整的,只要主文件在編譯時,拷貝了引用的文件中的內容後,語法格式正確即可。

  • taglib 指令

    該指令可以用來定義一個自定義的標籤庫,語法格式爲:<%@ taglib uri="tagLibUri" prefix="tagPrefix" %>

    uri 表示標籤庫的路徑,可以是一個網絡鏈接地址,也可以是本地相對地址。

動作元素

同 JSP 指令元素不同,其是在客戶端請求時動態執行的,是通過 XML 語法格式的標記來實現控制 Servlet 引擎行爲的。

<jsp:include> 同樣可以包含靜態或動態頁面,只是被包含的頁面是在主頁面被請求時添加的。

<jsp:include page="filePath" flush="false|true" />

這種包含方式需要注意的是,包含動作是在各個文件編譯完成後進行的,即被包含文件的語法格式必須是正確的。


<jsp:forward> 表示重定向到其他指定的網頁,可以結合 Java 腳本來根據不同條件實現不同頁面的跳轉。

<%
if (condition) {
%>
<jsp:forward page="success.jsp">
	<jsp:param name="paramName" value="<%=value%>">
</jsp:forward>
<%}else {%>
<jsp:forward page="error.jsp" />
<%}%>

在進行跳轉時,可以使用 <jsp:param> 傳遞參數。


<jsp:userBean> 、<jsp:setProperty> 和 <jsp:getProperty> 這三個動作元素通常一起使用。

這是一種在 JSP 中快速創建示例對象的一種方式,<jsp:userBean> 是用來在一個指定範圍內聲明一個指定類型的對象實例。

id 屬性是聲明的對象的名稱,scope(page、request、session、application)是變量的有效範圍,type 則表示變量的所屬類型,他可以是該變量實際引用對象的類型名稱,也可以是其超類,或者是其實現的接口之一。

beanName 表示使用 Bean 的名字,該屬性和 type 屬性可以確定具體的 bean 的類型。

class 屬性表示具體的 Bean 的完整包,使用該屬性,可以省略 type 和 beanName 屬性,但是這就意味着變量類型和實際創建的實例對象類型一致。

<jsp:setProperty> 用來設置指定 bean 的指定屬性的值。其 name 屬性是已經聲明的 bean 變量,property 則表示 bean 的屬性,而 value 則指定該屬性的值,或者使用 param 屬性表示屬性的值來自 param 所指定的參數的值。注意,value 和 param 不能同時存在。

如果 bean 的值來自參數,並且參數的名稱同屬性名稱一致,則可以使用下面的方式來指定 bean 的屬性值。

<jsp:setProperty name="beanID" property="*" />

否則,需要使用 param 將參數同屬性一一對應起來。

<jsp:setProperty name="beanID" property="propertyName" param="paramName" />

還可以使用 value 直接指定屬性的值,value 可以是一個表達式。

<jsp:setProperty name="beanID" property="propertyName" value="<%=2+5%>" />

<jsp:getProperty> 則十分簡單,表示獲取指定 bean 的指定屬性的值。

<jsp:getPropery name="beanName" property="propertyName" />

但是,還可以有另一種取值方式,如下:

<%=beanName.getPropertyName()%>

實際是利用了 <%=expression%> 表達式。

實際上,只要是 bean 中聲明的方法,都是可以利用腳本的方式進行調用的。


<jsp:plugin> 可以從 JSP 網頁中加載 Java Applet 或 JavaBean 程序組件。

在加載 code 屬性指定的類時,可以使用 <jsp:params> 指定參數,當然該標籤下是使用 <jsp:param> 來指定具體參數的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章