中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSP 語法詳解(轉)

發布時間:2020-08-04 23:44:18 來源:ITPUB博客 閱讀:117 作者:post0 欄目:編程語言
JSP 語法詳解(轉)[@more@]

HTML 注釋

在客戶端顯示一個注釋.

JSP 語法

<!-- comment [ <%= expression %> ] -->

例子 1

<!-- This file displays the user login screen -->

在客戶端的HTML源代碼中產生和上面一樣的數據:

<!-- This file displays the user login screen -->

例子 2

<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->

在客戶端的HTML源代碼中顯示為:

<!-- This page was loaded on January 1, 2000 -->

描述

這種注釋和HTML中很像,也就是它可以在"查看源代碼"中看到.

唯一有些不同的就是,你可以在這個注釋中用表達式(例子2所示).這個表達示是不定的,由頁面不同而不同,你能夠使用各種表達式,只要是合法的就行。更多的請看表達式

隱藏注釋

寫在JSP程序中,但不是發給客戶。

JSP 語法

<%-- comment --%>

例子:

CODE:

<%@ page language="java" %>

A Comment Test

A Test of Comments

<%-- This comment will not be visible in the page source --%>

描述

用隱藏注釋標記的字符會在JSP編譯時被忽略掉。這個注釋在你希望隱藏或注釋你的JSP程序時是很有用的。JSP編譯器不是會對<%--and--%>之間的語句進行編譯的,它不會顯示在客戶的瀏覽器中,也不會在源代碼中看到

聲明

在JSP程序中聲明合法的變量和方法

JSP 語法

<%! declaration; [ declaration; ]+ ... %>

例子

<%! int i = 0; %>

<%! int a, b, c; %>

<%! Circle a = new Circle(2.0); %>

描述

聲明你將要在JSP程序中用到的變量和方法。你也必須這樣做,不然會出錯.

你可以一次性聲明多個變量和方法,只要以";"結尾就行,當然這些聲明在Java中要是合法的。

當你聲明方法或變量時,請注意以下的一些規則:

聲明必須以";"結尾(Scriptlet有同樣的規則,但是 表達式就不同了).

你可以直接使用在<% @ page %>中被包含進來的已經聲明的變量和方法,不需要對它們重新進行聲明.

一個聲明僅在一個頁面中有效。如果你想每個頁面都用到一些聲明,最好把它們寫成一個單獨的文件,然后用<%@ include %>或元素包含進來。

表達式

包含一個符合JSP語法的表達式

JSP 語法

<%= expression %>

例子

<%= map.size() %>

<%= numguess.getHint() %>.

描述

表達式元素表示的是一個在腳本語言中被定義的表達式,在運行后被自動轉化為字符串,然后插入到這個表達示在JSP文件的位置顯示。因為這個表達式的值已經被轉化為字符串,所以你能在一行文本中插入這個表達式(形式和ASP完全一樣).

當你在JSP中使用表達式時請記住以下幾點:

你不能用一個分號(";")來作為表達式的結束符.但是同樣的表達式用在scriptlet中就需要以分號來結尾了!查看Scriptlet

這個表達式元素能夠包括任何在Java Language Specification中有效的表達式.

有時候表達式也能做為其它JSP元素的屬性值.一個表達式能夠變得很復雜,它可能由一個或多個表達式組成,這些表達式的順序是從左到右。

[/b]Scriptlet [/b]

包含一個有效的程序段.

JSP 語法

<% code fragment %>

例子

<%

String name = null;

if (request.getParameter("name") == null) {

%>

<%@ include file="error.html" %>

<%

} else {

foo.setName(request.getParameter("name"));

if (foo.getName().equalsIgnoreCase("integra"))

name = "acura";

if (name.equalsIgnoreCase( "acura" )) {

%>

描述

一個scriptlet能夠包含多個jsp語句,方法,變量,表達式

因為scriptlet,我們便能做以下的事:

聲明將要用到的變量或方法(參考 聲明).

編寫JSP表達式(參考 表達式).

使用任何隱含的對象和任何用聲明過的對象

編寫JSP語句 (如果你在使用Java語言,這些語句必須遵從Java Language Specification,).

任何文本,HTML標記,JSP元素必須在scriptlet之外

當JSP收到客戶的請求時,scriptlet就會被執行,如果scriptlet有顯示的內容,這些顯示的內容就被存在out對象中。

Include 指令

在JSP中包含一個靜態的文件,同時解析這個文件中的JSP語句.

JSP 語法

<%@ include file="relativeURL" %>

例子

include.jsp:

CODE:

An Include Test

The current date and time are

<%@ include file="date.jsp" %>

date.jsp:

CODE:

<%@ page import="java.util.*" %>

<%= (new java.util.Date() ).toLocaleString() %>

Displays in the page:

The current date and time are

Aug 30, 1999 2:38:40

描述

< %@include %>指令將會在JSP編譯時插入一個包含文本或代碼的文件,當你使用<%@ include %>指命時,這個包含的過程就當是靜態的。靜態的包含就是指這個被包含的文件將會被插入到JSP文件中去,這個包含的文件可以是JSP文件,HTML文件,文本文件。如果包含的是JSP文件,這個包含的JSP的文件中代碼將會被執行。

如果你僅僅只是用include 來包含一個靜態文件。那么這個包含的文件所執行的結果將會插入到JSP文件中放<% @ include %>的地方。一旦包含文件被執行,那么主JSP文件的過程將會被恢復,繼續執行下一行.

這個被包含文件可以是html文件,jsp文件,文本文件,或者只是一段Java代碼,但是你得注意在這個包含文件中不能使用, ,,標記,因為這將會影響在原JSP文件中同樣的標記 ,這樣做有時會導致錯誤.

有一些<%@ include %>指命的行為是以特殊的JSP編譯條件為基礎,比如:

這個被包含的文件必須對所有客戶都有開放且必須f有效,或者它有安全限制

如果這個包含文件被改變,包含此文件的JSP文件將被重新編譯

屬性:

file="relativeURL"

這個包含文件的路徑名一般來說是指相對路徑,不需要什么端口,協議,和域名,如下:

"error.jsp""templates/onlinestore.html""/beans/calendar.jsp"

如果這個路徑以"/"開頭,那么這個路徑主要是參照JSP應用的上下關系路徑,如果路徑是以文件名或目錄名開頭,那么這個路徑就是正在使用的JSP文件的當前路徑.

Page 指令

定義JSP文件中的全局屬性.

JSP 語法

<%@ page

[ language="java" ]

[ extends="package.class" ]

[ import="{package.class | package.*}, ..." ]

[ session="true | false" ]

[ buffer="none | 8kb | sizekb" ]

[ autoFlush="true | false" ]

[ isThreadSafe="true | false" ]

[ info="text" ]

[ errorPage="relativeURL" ]

[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]

[ isErrorPage="true | false" ]

%>

例子

<%@ page import="java.util.*, java.lang.*" %>

<%@ page buffer="5kb" autoFlush="false" %>

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

描述

<%@ page %>指令作用于整個JSP頁面,同樣包括靜態的包含文件。但是<% @ page %>指令不能作用于動態的包含文件,比如

你可以在一個頁面中用上多個<% @ page %>指令,但是其中的屬性只能用一次,不過也有個例外,那就是import屬性。因為import屬性和Java中的import語句差不多(參照Java Language),所以你就能多用此屬性幾次了.

無論你把<% @ page %>指令放在JSP的文件的哪個地方,它的作用范圍都是整個JSP頁面。不過,為了JSP程序的可讀性,以及好的編程習慣,最好還是把它放在JSP文件的頂部.

屬性

language="java"

聲明腳本語言的種類,暫時只能用"java"

extends="package.class"

標明JSP編譯時需要加入的Java Class的全名,但是得慎重的使用它,它會限制JSP的編譯能力.

import="{package.class | package.* }, ..."

需要導入的Java包的列表,這些包就作用于程序段,表達式,以及聲明。

下面的包在JSP編譯時已經導入了,所以你就不需要再指明了:

java.lang.*

javax.servlet.*

javax.servlet.jsp.*

javax.servlet.http.*

session="true | false"

設定客戶是否需要HTTP Session.(學過ASP的人,應該對它不陌生)如果它為true,那么Session是有用的。

如果它有false,那么你就不能使用session對象,以及定義了scope=session的元素。這樣的使用會導致錯誤.

缺省值是true.

buffer="none | 8kb | sizekb"

buffer的大小被out對象用于處理執行后的JSP對客戶瀏覽器的輸出。缺省值是8kb

autoFlush="true | false"

設置如果buffer溢出,是否需要強制輸出,如果其值被定義為true(缺省值),輸出正常,如果它被設置為false,如果這個buffer溢出,就會導致一個意外錯誤的發生.如果你把buffer設置為none,那么你就不能把autoFlush設置為false.

isThreadSafe="true | false"

設置Jsp文件是否能多線程使用。缺省值是true,也就是說,JSP能夠同時處理多個用戶的請求,如果設置為false,一個jsp只能一次處理一個請求

info="text"

一個文本在執行JSP將會被逐字加入JSP中,你能夠使用Servlet.getServletInfo方法取回。

errorPage="relativeURL"

設置處理異常事件的JSP文件。

isErrorPage="true | false"

設置此頁是否為出錯頁,如果被設置為true,你就能使用exception對象.

contentType="mimeType [ ;charset=characterSet ]" | "text/html;charset=ISO-8859-1"

設置MIME類型 。缺省MIME 類型是: text/html, 缺省字符集為 ISO-8859-1.

重定向一個HTML文件,JSP文件,或者是一個程序段.

JSP 語法

"} />

or

"} >

value="{parameterValue | <%= expression %>}" />+

例子

描述

標簽從一個JSP文件向另一個文件傳遞一個包含用戶請求的request對象.標簽以下的代碼,將不能執行.

你能夠向目標文件傳送參數和值,在這個例子中我們傳遞的參數名為username,值為scott,如果你使用了標簽的話,目標文件必須是一個動態的文件,能夠處理參數.

如果你使用了非緩沖輸出的話,那么使用時就要小心。如果在你使用之前,jsp文件已經有了數據,那么文件執行就會出錯.

屬性

page="{relativeURL | <%= expression %>}"

這里是一個表達式或是一個字符串用于說明你將要定向的文件或URL.這個文件可以是JSP,程序段,或者其它能夠處理request對象的文件(如asp,cgi,php).

+

向一個動態文件發送一個或多個參數,這個文件一定是動態文件.

如果你想傳遞多個參數,你可以在一個JSP文件中使用多個。name指定參數名,value指定參數值.

獲取Bean的屬性值,用于顯示在頁面中

JSP 語法

例子

Calendar of

描述

這個元素將獲得Bean的屬性值,并可以將其使用或顯示在JSP頁面中.在你使用之前,你必須用創建它.

元素有一些限制:

你不能使用來檢索一個已經被索引了的屬性

你能夠和JavaBeans組件一起使用,但是不能與Enterprise Bean一起使用。

屬性

name="beanInstanceName"

bean的名字,由指定

property="propertyName"

所指定的Bean的屬性名。

技巧:

在sun的JSP參考中提到,如果你使用來檢索的值是空值,那么NullPointerException將會出現,同時如果使用程序段或表達式來檢索其值,那么在瀏覽器上出現的是null(空).

包含一個靜態或動態文件.

JSP 語法

or

+

Examples

描述

< jsp:include>元素允許你包含動態文件和靜態,這兩種包含文件的結果是不同的。如果文件僅是靜態文件,那么這種包含僅僅是把包含文件的內容加到jsp文件中去,而如果這個文件動態的,那么這個被包含文件也會被Jsp編譯器執行(這一切與asp相似)

你不能從文件名上判斷一個文件是動態的還是靜態的,比如aspcn.asp 就有可能只是包含一些信息而已,而不需要執行。能夠同時處理這兩種文件,因此你就不需要包含時還要判斷此文件是動態的還是靜態的.

如果這個包含文件是動態的,那么你還可以用還傳遞參數名和參數值。

屬性

page="{relativeURL | <%= expression %>}"

參數為一相對路徑,或者是代表相對路徑的表達式.

flush="true"

這里你必須使用flush="true",你不能使用false值.缺省值為false

+

子句能讓你傳遞一個或多個參數給動態文件

你能在一個頁面中使用多個來傳遞多個參數,

執行一個applet或Bean,有可能的話還要下載一個Java插件用于執行它.

JSP 語法

type="bean | applet"

code="classFileName"

codebase="classFileDirectoryName"

[ name="instanceName" ]

[ archive="URIToArchive, ..." ]

[ align="bottom | top | middle | left | right" ]

[ height="displayPixels" ]

[ width="displayPixels" ]

[ hspace="leftRightPixels" ]

[ vspace="topBottomPixels" ]

[ jreversion="JREVersionNumber | 1.1" ]

[ nspluginurl="URLToPlugin" ]

[ iepluginurl="URLToPlugin" ] >

[

[ ]+

]

[ text message for user ]

例子

Unable to load applet

描述

元素用于在瀏覽器中播放或顯示一個對象(典型的就是applet和Bean),而這種顯示需要在瀏覽器的java插件。

當Jsp 文件被編譯,送往瀏覽器時,元素將會根據瀏覽器的版本替換成或者< embed>元素。注意,用于HTML 4.0 ,用于HTML 3.2.

一般來說,元素會指定對象是Applet還是Bean,同樣也會指定class的名字,還有位置,另外還會指定將從哪里下載這個Java插件。具體如下:

屬性

type="bean | applet"

.將被執行的插件對象的類型,你必須得指定這個是Bean還是applet,因為這個屬性沒有缺省值.

code="classFileName"

將會被Java插件執行的Java Class的名字,必須以.class結尾。這個文件必須存在于codebase屬性指定的目錄中.

codebase="classFileDirectoryName"

將會被執行的Java Class文件的目錄(或者是路徑),如果你沒有提供此屬性,那么使用的jsp文件的目錄將會被使用.

name="instanceName"

這個Bean或applet實例的名字,它將會在Jsp其它的地方調用.

archive="URIToArchive, ..."

一些由逗號分開的路徑名,這些路徑名用于預裝一些將要使用的class,這會提高applet的性能.

align="bottom | top | middle | left | right"

圖形,對象,Applet的位置,有以下值:

bottom

top

middle

left

right

height="displayPixels" width="displayPixels"

Applet或Bean將要顯示的長寬的值,此值為數字,單位為象素.

hspace="leftRightPixels" vspace="topBottomPixels"

Applet或Bean顯示時在屏幕左右,上下所需留下的空間,單位為象素.

jreversion="JREVersionNumber | 1.1"

Applet或Bean運行所需的Java Runtime Environment (JRE) 的版本. 缺省值是 1.1.

nspluginurl="URLToPlugin"

Netscape Navigator用戶能夠使用的JRE的下載地址,此值為一個標準的URL,如http://www.aspcn.com/jsp

iepluginurl="URLToPlugin"

IE用戶能夠使用的JRE的下載地址,此值為一個標準的URL,如http://www.aspcn.com/jsp

[ ]+

你需要向applet或Bean傳送的參數或參數值。

text message for user

一段文字用于Java 插件不能啟動時顯示給用戶的,如果插件能夠啟動而applet或Bean不能,那么瀏覽器會有一個出錯信息彈出.

設置Bean中的屬性值.

JSP語法

name="beanInstanceName"

{

property= "*" |

property="propertyName" [ param="parameterName" ] |

property="propertyName" value="{string | <%= expression %>}"

}

/>

例子

描述

< jsp:setProperty>元素使用Bean給定的setter方法,在Bean中設置一個或多個屬性值。你在使用這個元素之前必須得使用 聲明此Bean.因為,是聯系在一起的,同時這他們使用的Bean實例的名字也應當相匹配(就是說,在中的name的值應當和中id的值相同)

你能使用多種方法利用來設定屬性值 :

通過用戶輸入的所有值(被做為參數儲存中request對象中)來匹配Bean中的屬性

通過用戶輸入的指定的值來匹配Bean中指定的屬性

在運行時使用一個表達式來匹配Bean的屬性

每一種設定屬性值的方法都有其特定的語法,下面我們會來講解

屬性及其用法

name="beanInstanceName"

表示已經在中創建的Bean實例的名字.

property="*"

儲存用戶在Jsp輸入的所有值,用于匹配Bean中的屬性。在Bean中的屬性的名字必須和request對象中的參數名一致.

從客戶傳到服器上的參數值一般都是字符類型 ,這些字符串為了能夠在Bean中匹配就必須轉換成其它的類型,下面的表中列出了Bean屬性的類型以及他們的轉換方法.

把字符串轉化為其它類型的方法. Property 類型

方法

boolean or Boolean

java.lang.Boolean.valueOf(String)

byte or Byte

java.lang.Byte.valueOf(String)

char or Character

java.lang.Character.valueOf(String)

double or Double

java.lang.Double.valueOf(String)

integer or Integer

java.lang.Integer.valueOf(String)

float or Float

java.lang.Float.valueOf(String)

long or Long

java.lang.Long.valueOf(String)

如果request對象的參數值中有空值,那么對應的Bean屬性將不會設定任何值。同樣的,如果Bean中有一個屬性沒有與之對應的Request參數值,那么這個屬性同樣也不會設定.

property="propertyName" [ param="parameterName" ]

使用request中的一個參數值來指定Bean中的一個屬性值。在這個語法中,property指定Bean的屬性名,param指定request中的參數名.

如果bean屬性和request參數的名字不同,那么你就必須得指定property和param ,如果他們同名,那么你就只需要指明property就行了.

如查參數值為空(或未初始化),對應的Bean屬性不被設定.

property="propertyName" value="{string | <%= expression %>}"

使用指定的值來設定Bean屬性。這個值可以是字符串,也可以是表達式。如果這個字符串,那么它就會被轉換成Bean屬性的類型(查看上面的表).如果它是一個表達式,那么它類型就必須和它將要設定的屬性值的類型一致。

如果參數值為空,那么對應的屬性值也不會被設定。另外,你不能在一個中同時使用param和value

技巧

如果你使用了property="*",那么Bean的屬性沒有必要按Html表單中的順序排序

創建一個Bean實例并指定它的名字和作用范圍.

JSP 語法

id="beanInstanceName"

scope="page | request | session | application"

{

class="package.class" |

type="package.class" |

class="package.class" type="package.class" |

beanName="{package.class | <%= expression %>}" type="package.class"

}

{

/> |

> other elements

}

例子

描述

用于定位或示例一個JavaBeans組件。首先會試圖定位一個Bean實例,如果這個Bean不存在,那么就會從一個class或模版中進行示例。

為了定位或示例一個Bean,會進行以下步聚,順序如下:

通過給定名字和范圍試圖定位一個Bean.

對這個Bean對象引用變量以你指定的名字命名.

如果發現了這個Bean,將會在這個變量中儲存這個引用。如果你也指定了類型,那么這個Bean也設置為相應的類型.

如果沒有發現這個Bean,將會從你指定的class中示例,并將此引用儲存到一個新的變量中去。如果這個class的名字代表的是一個模版,那么這個Bean被java.beans.Beans.instantiate示例.

如果已經示例(不是定位)了Bean,同時中有元素,那么將會執行其中的代碼.

< jsp:useBean>元素的主體通常包含有元素,用于設置Bean的屬性值。正如上面第五步所說的,的主體僅僅只有在示例Bean時才會被執行,如果這個Bean已經存在,能夠定位它,那么主體中的內容將不會起作用

屬性以及用法

id="beanInstanceName"

在你所定義的范圍中確認Bean的變量,你能在后面的程序中使用此變量名來分辨不同的Bean

這個變量名對大小寫敏感,必須符合你所使用的腳本語言的規定,在Java Programming Language中,這個規定在 Java Language 規范已經寫明。如果這個Bean已經在別的中創建,那么這個id的值必須與原來的那個id值一致.

scope="page | request | session | application"

Bean存在的范圍以及id變量名的有效范圍。缺省值是page,以下是詳細說明:

page - 你能在包含元素的JSP文件以及此文件中的所有靜態包含文件中使用Bean,直到頁面執行完畢向客戶端發回響應或轉到另一個文件為止。

request - 你在任何執行相同請求的Jsp文件中使用Bean,直到頁面執行完畢向客戶端發回響應或轉到另一個文件為止。你能夠使用Request對象訪問Bean,比如request.getAttribute(beanInstanceName)

session - 從創建Bean開始,你就能在任何使用相同session的Jsp文件中使用Bean.這個Bean存在于整個Session生存周期內,任何在分享此Session的Jsp文件都能使用同一Bean.注意在你創建Bean的Jsp文件中<% @ page %>指令中必須指定 session=true

application - 從創建Bean開始,你就能在任何使用相同application的Jsp文件中使用Bean.這個Bean存在于整個application生存周期內,任何在分享此application的Jsp文件都能使用同一Bean.

class="package.class"

使用new關鍵字以及class構造器從一個class中示例一個bean.這個class不能是抽象的,必須有一個公用的,沒有參數的構造器.這個package的名字區別大小寫。

type="package.class"

如果這個Bean已經在指定的范圍中存在,那么寫這個Bean一個新的數據庫類型 。如果你沒有使用class或beanName指定type,Bean將不會被示例.package和class的名字,區分大小寫.

beanName="{package.class | <%= expression %>}" type="package.class"

使用java.beans.Beans.instantiate方法來從一個class或連續模版中示例一個Bean,同時指定Bean的類型。

beanName可以是package和class也可以是表達式,它的值會傳給Beans.instantiate.tupe的值可以和Bean相同。

package 和 class 名字區分大小寫.
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海丰县| 北海市| 丹东市| 怀集县| 上高县| 齐齐哈尔市| 温州市| 井陉县| 邛崃市| 阜南县| 庆阳市| 赤壁市| 乐都县| 辽宁省| 道孚县| 化隆| 新晃| 龙岩市| 垫江县| 宜兰县| 白城市| 巴中市| 墨竹工卡县| 嘉荫县| 凤阳县| 浑源县| 中超| 大同市| 微博| 修文县| 新田县| 上高县| 明星| 安岳县| 田林县| 太湖县| 寿阳县| 大兴区| 湖南省| 喀喇| 通许县|