日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JSP語法

 鳳舞天煌 2007-01-16
 一個(gè)JSP文件包括模板數(shù)據(jù)和JSP元素。模板數(shù)據(jù)是指JSP中存在的HTML或XML文本,Web容器在轉(zhuǎn)換JSP時(shí)直接將模板數(shù)據(jù)作為響應(yīng)輸出。JSP元素分為以下幾類:
Directive(指示符),Scripting Elements(腳本元素),Comments(注釋)和Action(動(dòng)作)。每類元素又可以進(jìn)行細(xì)分。
 JSP規(guī)定了一般JSP語法和符合XML格式的語法。對(duì)于Directive,Scripting Elements和Comments,存在XML格式的語法和一般JSP語法格式。以下逐一說明各類語法。
一、Directives
 Driectives定義了JSP對(duì)應(yīng)的servlet的整體結(jié)構(gòu)。它包括Include Directive,Page Directive和Tablib Directive。它們都是以<%@開頭,幾種Directive分別對(duì)應(yīng)servlet的幾類宏信息。
1.Include Directive
 Include Directive在當(dāng)前JSP中包含另一個(gè)靜態(tài)文件。其格式為:
<%@ include file = "relativeURL" %>
其對(duì)應(yīng)XML格式為:
<jsp: directive.include file="relativeURL"/>
被包含的路徑為相對(duì)URL。如果relativeURL以/打頭,則表示相對(duì)于當(dāng)前Web應(yīng)用所在路徑,若不以/打頭,則表示相對(duì)于當(dāng)前JSP目錄。
Include Directive在JSP被轉(zhuǎn)換和編譯時(shí)將文本文件插入JSP中。被包含的文件可以是JSP文件,HTML文件,XML文件或TXT文件,甚至是Java編程語言代碼。這個(gè)過程是靜態(tài)的,也就是說在Web容器對(duì)JSP轉(zhuǎn)換時(shí)直接插入到JSP中,不會(huì)在后來每次JSP調(diào)用時(shí)重新插入。下面是一個(gè)Include Directive的例子。
includejsp.jsp:
<html>
<head><title>Include Date JSP</title></head>
<body bgcolor="white">
<font color="blue">
當(dāng)前時(shí)間是:<%@ include file="date.jsp"%>
</font>
</body>
</html>
 
date.jsp:
<%@ page import="java.util.*"%>
<%=(new java.util.Date()).toLocaleString()%>
 
2.Page Directive
 Page Driective定義了整個(gè)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"]
[pageEncoding="characterSet|ISO-8859-1"]
%>
共中粗體部分表示默認(rèn)值。
XML語法格式為:
<jsp: directive.page pageDirectiveAttrilist />
語法中各部分屬性說明如下:
language="java":定義JSP適用的編程語言,目前惟一允許的語言是java。
extends="package.class":定義這個(gè)JSP編譯后生成類的超類,一般使用默認(rèn)值。
[import="{package.class|package.*},..."]:相當(dāng)于java語言的import指令。java.lang.*,javax.servlet.*,javax.servlet.jsp.*,java.servlet.htt.*已經(jīng)被默認(rèn)引入,不需要在JSP中再引入。
session="true|false":決定是否該客戶在使用JSP時(shí)必須參加HTTP會(huì)話。若該屬性值為true,JSP中的session對(duì)象定義為當(dāng)前會(huì)話或新的會(huì)話;若為false,則在該JSP中不能使用session對(duì)象。
buffer="none|8kb|sizekb":定義JSP響應(yīng)游覽器輸出out對(duì)象緩沖器大小。[autoFlush="true|false"]:設(shè)定當(dāng)緩沖器滿時(shí)緩沖器中的輸出內(nèi)容是否會(huì)被清空。如果該屬性為false,當(dāng)緩沖器滿時(shí)就會(huì)有異常彈出。
isThreadSafe="true|false":定義JSP是否支持線程安全。若設(shè)為true,編程者必須在JSP代碼中保證多個(gè)客戶的線程安全;若設(shè)為false,則JSP容器保證同一時(shí)刻一個(gè)JSP只處理一個(gè)請(qǐng)求。
info="text":定義JSP的基本信息,信息可以使用Servlet.getServletInfo()方法得到。
errorPage="relativeURL":定義JSP對(duì)應(yīng)的錯(cuò)誤處理JSP的相對(duì)URL。如果relativeURL以/打頭,則表示相對(duì)于當(dāng)前Web應(yīng)用所在路徑,若不以/打頭,則表示相對(duì)于當(dāng)前JSP目錄。
contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1":定義JSP在Web響應(yīng)中使用的MIME類型和字符編碼。
isErrorPage="true|false":定義當(dāng)前JSP對(duì)應(yīng)的錯(cuò)誤頁。如果為true,JSP中可以使用exception對(duì)象;否則JSP中不能使用exception對(duì)象。
pageEncoding="characterSet|ISO-8859-1":定義Web容器對(duì)JSP響應(yīng)的字符編碼。
以下是幾個(gè)Page Directive的使用實(shí)例:
<%@ page import="java.io.*"%>
<%@ page contextType="text/html;charset=gb2312" session="true"%>
<%@ page buffer="12kb" autoFlush="false"%>
<jsp:directive.page errorPage="error.jsp"/>
 
3.Taglib Directive
 Taglib Directive定義在JSP中使用的定制標(biāo)記的標(biāo)記庫和前綴。Taglib是JSP中的拓展的技術(shù),主要指編程人員可以編寫自己定義的標(biāo)記。在JSP中Taglib directive必須在定制標(biāo)記之前使用。關(guān)于Taglib另起篇幅詳細(xì)說明。
 Taglib Directive的語法格式如下:
<%@ taglib uri="URIForLibrary" prefix="tagPrefix" %>
屬性說明如下:
uri:通用資源標(biāo)識(shí)符。定義了用來描述特定定制標(biāo)記的TLD位置。URI可能是一個(gè)URL,URN,或者是一個(gè)絕對(duì)或相對(duì)路徑。
prefix:定義了Tagbib前綴名稱。例如,在<feytag: inputcheck>標(biāo)記中feytag。這個(gè)屬性不能為空。編程開發(fā)人員開發(fā)的Taglib前綴不允許使用下列標(biāo)記前綴名稱:jsp,jspx,java,servlet,sun和sunw。
下例是一個(gè)Tablib Directive使用實(shí)例:
<%@ tablib uri="http://www./tags/" prefix="feytag" %>
<feytag:inputcheck>
...
</feytag:inputcheck>
 
二、Scripting Elements
 Scripting Elements可以讓編程者在JSP中使用動(dòng)態(tài)編程語言,它可以在JSP中嵌入類似Java的程序。Scripting Elements包括Declaration,Expression和Scriptlet。它提供了靈活的編程機(jī)制,同時(shí)也會(huì)導(dǎo)致JSP結(jié)構(gòu)混亂,不易被理解。JSP2.0版本提供了代替Scripting Elements的方法。
1.Declaration
 Declaration定義了JSP腳本語言使用的變量和函數(shù),這類似于Java中定義全局變量,或可以把它想像成pascal編程語言中的單元文件的interface部分。其語法格式為:
<%! declaration;[declaration;]...%>
XML格式為:
<jsp:declaration>
 declaration;[declaration;]...
</jsp:declaration>
下面是Declaration的使用實(shí)例:
<%! int i = 0;%>
<%! int a,b,c; String s = newString();%>
 
2.Expression
 Expression是JSP腳本語言中的表達(dá)式,它直接將處理過的文字結(jié)果輸出到JSP響應(yīng)中。Expression的格式為:
<%=expression%>
XML格式為:
<jsp:expression>
 expression
</jsp:expression>
前面的例子中已經(jīng)多處使用到了Expression。
 
3.Scriptlet
 Scriptlet是指在JSP中嵌的程序片斷,它使JSP直接使用Java的編程功能。其格式為:
<% code fragment %>
XML格式為:
<jsp:scriptlet>
 code fragment
</jsp:scriptlet>
一個(gè)Scriptlet就是一段程序。可以在其中定義變量和方法,使用合法的表達(dá)式,以及使用JSP的隱藏對(duì)象。Scriptleg是JSP中的動(dòng)態(tài)處理部分,在處理每次JSP請(qǐng)求時(shí)被執(zhí)行,相當(dāng)于JSP轉(zhuǎn)換成servlet后的servlet代碼。如果Scriptlet要輸出響應(yīng)文字,應(yīng)調(diào)用out對(duì)象。
以下實(shí)例是是Scriptlet的一個(gè)使用實(shí)例。請(qǐng)注意該程序突出了下的Scriptlet的動(dòng)態(tài)屬性:
<%@ page import="java.util.*" %>
<% Calendar myCalendar = Calendar.getInstanse();
int currentHour = myCalendar.get(Calendar.HOUR_OF_DAY);%>
Welcome!
<br>
<% if(currentHour <12){%>
Good Morning!
<% } else if((currentHour >12)&&(current<18)){%>
Good Afternoon!
<%} else {%>
Good Evening!
<%}%>
 
4.Comments
 Comments是JSP的注釋,就像Java代碼中的注釋一樣。Comment的格式為:
<%-- coment --%>
 
三、Actions
Actions表示JSP中的一個(gè)具體操作,它使用規(guī)定的標(biāo)簽和用法,將具體的編程細(xì)節(jié)封閉成一個(gè)Action。
1.<jsp:forward>
 將Web請(qǐng)求轉(zhuǎn)交給另外的HTML文件、JSP或servlet。這相當(dāng)于servlet中的RequestDispatcher.forward()功能(見前面的《servlet的協(xié)作一篇》)。它有兩種格式:
<jsp:forward page="{relativeURL|<%=expression%>"/>
可以在轉(zhuǎn)交請(qǐng)求時(shí)增加請(qǐng)求參數(shù)(Request.parameters):
<jsp:forward page="{relativeURL|<%%=expression%>">
 <jsp:param name="parametername" value="{parametervalue|<%=expression%>}"/>...
</jsp:forward>
 
2.<jsp:include>
 在響應(yīng)中包括靜態(tài)文件或其他動(dòng)態(tài)Web構(gòu)件的處理結(jié)果。它相當(dāng)于servlet中的RequestDispatcher.include()功能(見前面的《servlet的協(xié)作一篇》)。它的格式如下:
<jsp:include page="{relativeURL|<%=expression>}" flush="true|false" />
 
<jsp:include page="{relativeURL|<%=expression>}" flush="true|false" >
 <jsp:param name="parametername" value="{parameterValue|<%=expression%>}">...
</jsp:include>
 
3.<jsp:useBean>
 根據(jù)設(shè)定的范圍找到初始化JSP中使用的JavaBean(關(guān)于JavaBean在JSP中的用法將另起篇幅詳細(xì)介紹)。其格式為:
<jsp:useBean id="beanInstanceName">
 scope="page|request|session|application"
{
 class="package.class"[type="package.class"]|
 beanName="{package.class|<%=expression%>}"
}
{/>|>other elements</jsp:useBean>}
 
<jsp:useBean>會(huì)找到JSP使用的JavaBean的實(shí)體。如果這個(gè)JavaBean不存在,它會(huì)生成一個(gè)新實(shí)例。<jsp:useBean>之中可以包含<jsp:serProperty>用來設(shè)置JavaBean的參數(shù)。
各屬性說明如下:
id:定義了識(shí)別JavaBean的標(biāo)識(shí)符??梢栽贘SP中的expression或Scriptlegs中通過這個(gè)id調(diào)用JavaBean。
scope:定義JavaBean存在的范圍,默認(rèn)值是page。若設(shè)為request,則可以通過request.getAttribute(beanInstanceName)方法獲得JavaBean。
class:指JavaBean的類名
type:如果JavaBean已經(jīng)在某個(gè)范圍存在,type設(shè)定了其數(shù)據(jù)類型。數(shù)據(jù)類型可以是class的超類。
beanName:根據(jù)類名或序列化模板創(chuàng)建一個(gè)JavaBean。
下面是一些useBean的使用實(shí)例:
<jsp:useBean id="cart" scope="session" class="fey.Login"/>
<jsp:setProperty name="login" property="*"/>
<jsp:useBean id="user" scope="session" class="fey.User">
<jsp:setProperty name="user" property="username" value="zhangsan"/>
</jsp:useBean>
 
<jsp:getProperty>使用JavaBean的get方法得到一個(gè)屬性值并將結(jié)果插入到JSP響應(yīng)中。在使用<jsp:getProperty>之前必須先使用<jsp:useBean>引入一個(gè)JavaBean。其格式如下:
<jsp:getProperty name="beanInstanceName" property="propertyname">
 
<jsp:setProperty>使用JavaBean屬性的set方法設(shè)定JavaBean屬性的值。同樣,在使用它之前也必須先使用<jsp:useBean>引入JavaBean。其格式如下:
<jsp:setProperty name="beanInstanceName"
{
 property="*"|
 property="propertyname"[param="parameterName"]|
 property="propertyname" value="{stringLiteral|<%=expression%>}"
}
/>
各個(gè)屬性說明如下:
name:已經(jīng)被創(chuàng)建或獲得的JavaBean名稱。這個(gè)屬性要和<jsp:useBean>的id一致。
property="*":將全部的Web請(qǐng)求參數(shù)(request parameter)存放到JavaBean的屬生中(JavaBean屬性的名稱必須和請(qǐng)求參數(shù)的名稱一致)。
property="propertyname"[param="parameterName"]:設(shè)定一個(gè)JavaBean屬性為一個(gè)請(qǐng)求參數(shù)的值。
property="propertyname" value="{stringLiteral|<%=expression%>}":直接由一個(gè)字符串或表過式指定一個(gè)JavaBean的值。
 
4.<jsp:plugin>
 <jsp:plugin>通過在瀏覽器的java插件上運(yùn)行一個(gè)Java Applet或者JavaBean。其格式為:
<jsp:plugin
 type="bean|applet"
 code="classFileName"
 codebase="classFileDirectoryName"
 [name="instanceName"]
 [archive="URIToArchive,..."]
 [align="bottom|top|middle|left|right"]
 [height="{displayPixels|<%=expression%>}"]
 [width="{displayPixels|<%=expression%>}"]
 [hspace="leftRightPixels"]
 [vspace="topBottomPixels"]
 [jreversion="JREVersionNumber|1.2"]
 [nspluginurl="URLToPlugin"]
 [iepluginurl="URLToPlugin"]>
 
 [<jsp:params>
    [<jsp:param name="parameterName" value="{parameterValue|<%=expression%>}"]...
 </jsp:params>]
 [<jsp:fallback> text message for user </jsp:fallback>]
</jsp:plugin>
各個(gè)屬性說明如下:
 type="bean|applet":表明對(duì)象是JavaBean還是Applet;
 code="classFileName":指也Java Plug-in需要運(yùn)行的程序的類名。文件應(yīng)該是在codebase屬生指定的目錄中。
 codebase="classFileDirectoryName":指出Java Plug-in需要運(yùn)行的程序所在的目錄名。如果沒有指定這個(gè)屬性,默認(rèn)為當(dāng)前JSP所在目錄。
 [name="instanceName"]:JavaBean或Applet的名稱,可以供同一JSP內(nèi)部的JavaBean或Applet對(duì)象之間的通信。
 [archive="URIToArchive,..."]:需要加載的jar文件的路徑。這些jar會(huì)通過Web安全地加載到客戶機(jī)。
 [align="bottom|top|middle|left|right"]:指定對(duì)象在瀏覽器中的位置。
 [height="{displayPixels|<%=expression%>}"]:指定對(duì)象最初在瀏覽器中的寬度。
 [width="{displayPixels|<%=expression%>}"]:指定對(duì)象最初在瀏覽器中的高度。
 [hspace="leftRightPixels"]:指定對(duì)象周圍空間的高度
 [vspace="topBottomPixels"]:指定對(duì)象周圍空間的寬度
 [jreversion="JREVersionNumber|1.2"]:說明JRE的版本號(hào)。
 [nspluginurl="URLToPlugin"]:提供Netscape下載JRE Plug-in的網(wǎng)址。
 [iepluginurl="URLToPlugin"]>:提供IE下載JRE Plug-in的網(wǎng)址。
 [<jsp:params>
    [<jsp:param name="parameterName" value="{parameterValue|<%=expression%>}"]...
 </jsp:params>〕:指定可以供Applet或JavaBean使用的初始變量的值。
 [<jsp:fallback> text message for user </jsp:fallback>]:當(dāng)plug-in不能啟動(dòng)時(shí)用來顯示的文本信息。如果plug-in啟動(dòng)了但不能運(yùn)行,一般會(huì)有對(duì)話框彈出解釋錯(cuò)誤的信息。
 
5.兩個(gè)與XML格式JSP有關(guān)的元素
 <jsp:root>定義了標(biāo)準(zhǔn)的JSP元素和Taglib的namespace。它的格式為:
<jsp:root
 xmlns:jsp="http://java./JSP/Page"
 [xmlns:taglibPrefix="URI"]...
 version="1.2"
    JSP Page
</jsp:root>
 
<jsp:text>用來添加模板數(shù)據(jù)。格式為:
<jsp:text>
 template data
</jsp:text>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多