您現在的位置:首頁 > 汽車資訊 >

 JSP的3個編譯指令,7個動作指令

發布時間: 2015-01-24 02:58


3個編譯指令

1、page指令
page指令用戶定義JSP頁面中的全局屬性,它的語法格式如下:

<%page
{language="java"}
{extends="package.class"}
{import="{package.class|package.*},..."}
{session="true | false"}
{buffer="none | 8kb | sizekb"}
{ false"}
{isThreadSafe="true | false"}
{info="text"}
{errorPage="relativeURL"}
{contentType="mimeType [;charset=characterSet]" | "text/html ; charset=ISO-8859-1"}
{isErrorPage="true | false"}
{pageEncoding="charset=characrerSet | ISO-8859-1"}
%> 

    page指令對整個頁面有效,包括靜態的包含文件,但page指令不能用于被動態包含的文件,例如使用<jsp:include>包含的文件。在一個JSP頁面中可以使用多個page指令,但page指令中的屬性只能出現一次(import屬性除外)。
2、include指令
include指令用于在JSP頁面中包含其他文件,它的語法格式如下: 

<% include file="路徑名">

include指令僅有一個屬性file,其值為文件的相對路徑。include指令包含的過程是靜態的,包含的文件可以是JSP、HTML或者Inc文件等。
3、taglib指令
taglib指令允許用戶使用標簽庫自定義新的標簽,它的語法格式如下:

<% taglib uri="taglibURI" prefix="tabPrefix"%> 

taglib指令中的uri屬性用于根據標簽的前綴對自定義的標簽進行唯一的命名,其值可以食相對路徑,就對路徑或標簽庫描述文件。屬性prefix制定了標簽的前綴。

7個動作指令

動作指令與編譯指令不間,編譯指令是通知 Servlet 引擎的處理消息,而動作指令只是運行時的腳本動作。編譯指令在將JSP 編譯成 Servlet 時起作用:處理指令通常可替換成 Java腳本,是 JSP腳本的標準化寫法。

 JSP7 個 動作指令如下 :

  1. jsp:forward: 執行頁面轉向,將請求的處理轉發到下一個頁面。
  2. jsp:param: 用于傳遞參數,必須與其他支持參數曲標簽一起使用。
  3. jsp:include: 用于動態引入一個 JSP 頁面。
  4. jsp:p1ugin: 用于下載 JavaBean 或 Applet 到客戶端執行。
  5. jsp:useBean: 使用 JavaBean。
  6. jsp:setProperty: 修改 JavaBean 實例的屬性值。
  7. jsp:getProperty: 獲取 JavaBean 實例的屬性值

下面依次講解這些動作指令

1..jsp:forward動作 (拿目標頁面代替原有頁面)  jsp:forward動作把請求轉到另外的頁面。可以轉發靜態的HTML頁面,也可以轉發動態的JSP頁面,或者轉發到容器中的servlet jsp:forward標記只有一個屬性page。 page屬性包含的是一個相對URL。 page的值既可以直接給出,也可以在請求的時候動態計算, 如下面的例子所示:       此頁面在轉發時增加惡劣一個參數 參數名為 age 值為 29;

<!--request.getParamenter("age"-->

獲得上個頁面傳個來的參數值

2.jsp:include動作 (拿目標頁面插入原有頁面)該動作是一個動態的include指令,也用于帶入某個頁面,他不會導入被include頁面的編譯指令,僅僅導入頁面的body內容插入到本頁面  該動作把指定文件插入正在生成的頁面。其語法如下:   flush:用于指定輸出緩存是否轉移到被導入的文件中, true:包含在被導入的文件中 false:包含在源文件中  前面已經介紹過include指令,它是在JSP文件被轉換成Servlet的時候引入文件,而這里的 jsp:include動作不同,插入文件的時間是在頁面被請求的時候。jsp:include動作的文件引入時間決定了它的效率要稍微差一點,而且被引 用文件不能包含某些JSP代碼(例如不能設置HTTP頭),但它的靈活性卻要好得多。  例如,下面的JSP頁面把4則新聞摘要插入一個“What''s New ?”頁面。改變新聞摘要時只需改變這四個文件,而主JSP頁面卻可以不作修改:

 

  </CENTER>
  <P>
  Here is a summary of our four most recent news stories:
  <OL>
  <LI><jsp:include page="news/Item1.html" flush="true"/>
  <LI><jsp:include page="news/Item2.html" flush="true"/>
  <LI><jsp:include page="news/Item3.html" flush="true"/>
  <LI><jsp:include page="news/Item4.html" flush="true"/>
  </OL> 

3..jsp:useBean動作 useBean:用于在jsp頁面中初始化一個java實例(如果多個jsp中需要重復使用某段代碼,可以把這段代碼定義成java類在頁面中引用)  

jsp:useBean動作用來裝載一個將在JSP頁面中使用的JavaBean。這個功能非常有用,因為它使得我們既可以發揮Java組件重用的優勢,同時也避免了損失JSP區別于Servlet的方便性。

jsp:useBean動作最簡單的語法為:<jsp:useBean id="JavaBean的名稱" class="package.class"包名.類名" scope="有效范圍"/>

這行代碼的含義是:“創建一個由class屬性指定的類的實例,然后把它綁定到其名字由id屬性給出的變量上”。不過,就象我們接下來會看到的,定義一個scope屬性可以讓Bean關聯到更多的頁面,它可接受四個值:request、session、page、application。此時,jsp:useBean動作只有在不存在同樣id和scope的Bean時才創建新的對象實例,同時,獲得現有Bean的引用就變得很有必要。 

 獲得Bean實例之后,要修改Bean的屬性既可以通過jsp:setProperty動作進行,也可以在Scriptlet中利用id屬性所命名的對 象變量,通過調用該對象的方法顯式地修改其屬性。這使我們想起,當我們說“某個Bean有一個類型為X的屬性foo”時,就意味著“這個類有一個返回值類 型為X的getFoo方法,還有一個setFoo方法以X類型的值為參數”。  有關jsp:setProperty動作的詳細情況在后面討論。但現在必 須了解的是,我們既可以通過jsp:setProperty動作的value屬性直接提供一個值,也可以通過param屬性聲明Bean的屬性值來自指定 的請求參數,還可以列出Bean屬性表明它的值應該來自請求參數中的同名變量。  

在JSP表達式或Scriptlet中讀取Bean屬性通過調用相應的getXXX方法實現,或者更一般地,使用jsp:getProperty動作。  

注意,包含Bean的類文件應該放到服務器正式存放Java類的目錄下,而不是保留給修改后能夠自動裝載的類的目錄。例如,對于Java Web Server來說,Bean和所有Bean用到的類都應該放入classes目錄,或者封裝進jar文件后放入lib目錄,但不應該放到servlets下。 id:javaBean的實例名 class: javaBean的實現類 scope:指定javaBean實例的生存范圍 page:javaBean僅在該頁面有效 request:javaBean在本次請求中有效 session: javaBean在本次session內有效 application: javaBean在本應用內一直有效  下面是一個很簡單的例子,它的功能是裝載一個Bean,然后設置/讀取它的message屬性。 

3.1關于jsp:useBean的進一步說明

 

使用Bean最簡單的方法是先用下面的代碼裝載Bean:  

 

<jsp:useBean id="name" class="package.class" />

 

    然后通過jsp:setProperty和jsp:getProperty修改和提取Bean的屬性。

 

不過有兩點必須注意。  

 

第一,我們還可以用下面這種格式實例化Bean:

 

<jsp:useBean ...>
  Body
  </jsp:useBean>

 

 它的意思是,只有當第一次實例化Bean時才執行Body部分,如果是利用現有的Bean實例則不執行Body部分。正如下面將要介紹的,jsp:useBean并非總是意味著創建一個新的Bean實例。  

 

第二,除了id和class外,jsp:useBean還有其他三個屬性,即:scope、type、beanName。  

 

id:命名引用該Bean的變量。如果能夠找到id和scope相同的Bean實例,jsp:useBean動作將使用已有的Bean實例而不是創建新的實例。  

 

class:指定Bean的完整包名。   

 

scope:指定Bean在哪種上下文內可用,可以取下面的四個值之一:page、request、session和application。  默認值是page,表示該Bean只在當前頁面內可用(保存在當前頁面的PageContext內)。  

 

request表示該Bean在當前的客戶請求內有效(保存在ServletRequest對象內)。  

 

session表示該Bean對當前HttpSession內的所有頁面都有效。   

 

最后,如果取值application,則表示該Bean對所有具有相同ServletContext的頁面都有效。   

 

scope之所以很重要,是因為jsp:useBean只有在不存在具有相同id和scope的對象時才會實例化新的對象;

 

如果已有id和scope都相同的對象則直接使用已有的對象,此時jsp:useBean開始標記和結束標記之間的任何內容都將被忽略。  

 

type:指定引用該對象的變量的類型,它必須是Bean類的名字、超類名字、該類所實現的接口名字之一。請記住變量的名字是由id屬性指定的。 

 

beanName:指定Bean的名字。如果提供了type屬性和beanName屬性,允許省略class屬性。

4.jsp:setProperty動作   jsp:setProperty用來設置已經實例化的Bean對象的屬性,有兩種用法。首先,你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty,如下所示:    ...     此時,不管jsp:useBean是找到了一個現有的Bean,還是新創建了一個Bean實例,jsp:setProperty都會執行。第二種用法是把jsp:setProperty放入jsp:useBean元素的內部,如下所示:    ...       此時,jsp:setProperty只有在新建Bean實例時才會執行,如果是使用現有實例則不執行jsp:setProperty。  jsp:setProperty動作有下面四個屬性:name:表示要設置屬性的是哪個Bean。  property:表示要設置哪個屬性。有一個特殊用法:如果property的值是"*",表示所有名字和Bean屬性名字匹配的請求參數都將被傳遞給相應的屬性set方法。  value:value 屬性是可選的。該屬性用來指定Bean屬性的值。字符串數據會在目標類中通過標準的valueOf方法自動轉換成數字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如“true”)通過 Boolean.valueOf轉換,int和Integer類型的屬性值(比如"42")通過Integer.valueOf轉換。  value和param不能同時使用,但可以使用其中任意一個。  Param:param 是可選的。它指定用哪個請求參數作為Bean屬性的值。如果當前請求沒有參數,則什么事情也不做,系統不會把null傳遞給Bean屬性的set方法。因 此,你可以讓Bean自己提供默認屬性值,只有當請求參數明確指定了新值時才修改默認屬性值。  例如,下面的代碼片斷表示:如果存在numItems請 求參數的話,把numberOfItems屬性的值設置為請求參數numItems的值;否則什么也不做。    如果同時省略value和param, 其效果相當于提供一個param且其值等于property的值。進一步利用這種借助請求參數和屬性名字相同進行自動賦值的思想,你還可以在 property(Bean屬性的名字)中指定“*”,然后省略value和param。此時,服務器會查看所有的Bean屬性和請求參數,如果兩者名字 相同則自動賦值。  下面是一個利用JavaBean計算素數的例子。如果請求中有一個numDigits參數,則該值被傳遞給Bean的 numDigits屬性;numPrimes也類似。  JspPrimes.jsp  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <HTML>
  <HEAD>
  <TITLE>在JSP中使用JavaBean</TITLE>
  </HEAD>
  <BODY>
  <CENTER>
  <TABLE BORDER=5>
  <TR><TH CLASS="TITLE">
  在JSP中使用JavaBean</TABLE>
  </CENTER>
  <P>
  <jsp:useBean id="primeTable" class="hall.NumberedPrimes" />
  <jsp:setProperty name="primeTable" property="numDigits" />
  <jsp:setProperty name="primeTable" property="numPrimes" />
  Some <jsp:getProperty name="primeTable" property= "numDigits" />
  digit primes:
  <jsp:getProperty name="primeTable" property="numbered List" />
  </BODY>
  </HTML>

5.jsp:getProperty動作   jsp:getProperty動作提取指定Bean屬性的值,轉換成字符串,然后輸出。jsp:getProperty有兩個必需的屬性, 即:name,表示Bean的名字;property,表示要提取哪個屬性的值。下面是一個例子,更多的例子可以在前文找到。    ...   

  

<jsp:useBean id="itemBean" ... />
  ...
  <UL>
  <LI>Number of items:
  <jsp:getProperty name="itemBean" property="numItems" />
  <LI>Cost of each:
  <jsp:getProperty name="itemBean" property="unitCost" />
  </UL>    

 6.jsp:plugin動作 (用于下載服務器端的javaBean或applet到客戶端)  jsp:plugin動作用來根據瀏覽器的類型,插入通過Java插件運行Java Applet所必需的OBJECT或EMBED元素。

<jsp:plugin  
  type="bean | applet"   : 被執行的java程序的類型
  code="classFileName" :被執行的文件名,必須以  .class 結尾
  codebase="classFileDirectoryName"   :被執行文件的所在目錄

  [ name="instanceName" ] :給程序起一個名字用來標識該程序
  [ archive="URIToArchive, ..." ] :指向一些要預先載入的將要使用到的類
  [ align="bottom | top | middle | left | right" ] :
  [ height="displayPixels" ]
  [ width="displayPixels" ]
  [ hspace="leftRightPixels" ] 
  [ vspace="topBottomPixels" ]
  [ jreversion="JREVersionNumber | 1.1" ]   :能正確運行改程序必須的JRE的版本
  [ nspluginurl="URLToPlugin" ]  
  [ iepluginurl="URLToPlugin" ] >

  [ <jsp:params>
  [ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+
  </jsp:params> ]

  [ <jsp:fallback> text message for user </jsp:fallback> ]  :當不能正確顯示該Applet時,顯示該指令中的文本提示

 <jsp:plugin>

7.jsp:param 用于設定參數值,這個指令不能單獨使用 可以與以下三個指令結合使用:

jsp:include :用于將參數值出入被導入頁面

jsp:forword : 用于將參數值傳入被轉向頁面

jsp:plugin : 用于將參數值傳入頁面中javaBean的實例

 


興吉大二手汽車
聯系我們
百姓彩票APP 洛隆县 | 云和县 | 绥化市 | 龙岩市 | 冕宁县 | 普宁市 | 辉县市 | 盘山县 | 乌鲁木齐市 | 高平市 | 清苑县 | 雅安市 | 南丰县 | 当涂县 | 巴中市 | 岱山县 | 咸阳市 | 杭锦后旗 | 连江县 | 德庆县 | 岑巩县 | 平凉市 | 镇康县 | 双流县 | 固镇县 | 长岭县 | 同江市 | 云安县 | 锡林郭勒盟 | 温泉县 | 新邵县 | 鄂托克旗 | 徐水县 | 仙居县 | 汉寿县 | 桃江县 | 且末县 | 方山县 | 东宁县 | 成安县 | 娄底市 | 盐城市 | 阳泉市 | 岳西县 | 图片 | 博湖县 | 固镇县 | 丘北县 | 和林格尔县 | 秦安县 | 和顺县 | 闸北区 | 双城市 | 介休市 | 霍城县 | 济宁市 | 肥乡县 | 贵阳市 | 肇州县 | 东城区 | 江口县 | 军事 | 蕉岭县 | 岢岚县 | 万宁市 | 苏尼特右旗 | 岳西县 | 大港区 | 韶山市 | 双辽市 | 建阳市 | 诏安县 | 嘉定区 | 岢岚县 | 蒙山县 | 宁都县 | 大同县 | 兴海县 | 伊川县 | 晋中市 | 青河县 | 若尔盖县 | 象山县 | 罗田县 | 江安县 | 修武县 | 孝昌县 | 鄄城县 | 通江县 | 广安市 | 赤壁市 | 延津县 | 依安县 | 民乐县 | 潍坊市 | 宽城 | 西城区 | 正安县 | 康平县 | 云龙县 | 仙居县 | 汨罗市 | 会宁县 | 塔河县 | 奉化市 | 洪泽县 | 射阳县 | 伊春市 | 乌海市 | 宽甸 | 双鸭山市 | 昭觉县 | 武义县 | 藁城市 | 荔波县 | 茌平县 | 无锡市 | 天等县 | 张掖市 | 南汇区 | 嘉禾县 | 玛多县 | 临潭县 | 丘北县 | 屯昌县 | 舟曲县 | 织金县 | 绥宁县 | 迁安市 | 新丰县 | 五台县 | 天等县 | 龙胜 | 开鲁县 | 阳春市 | 林芝县 | 罗江县 | 聂拉木县 | 中西区 | 页游 | 米易县 | 南宁市 | 沈丘县 | 太仓市 | 汽车 | 广州市 | 双牌县 | 赤峰市 | 桂平市 | 龙海市 | 南木林县 | 内丘县 | 商丘市 | 昭通市 | 彰化市 | 遵化市 | 丰台区 | 武川县 | 永清县 | 平邑县 | 阆中市 | 信阳市 | 开原市 | 威宁 | 界首市 | 高雄市 | 卢氏县 | 治多县 | 平阳县 | 洛南县 | 宝应县 | 化州市 | 长寿区 | 玛曲县 | 沙雅县 | 泽州县 | 侯马市 | 巢湖市 | 江源县 | 壶关县 | 冀州市 | 武强县 | 灵山县 | 丰城市 | 云和县 | 福清市 | 灵台县 | 连平县 | 常熟市 | 项城市 | 太康县 | 什邡市 | 唐海县 | 集贤县 | 二连浩特市 | 胶南市 | 濉溪县 | 徐州市 | 孟村 | 仙游县 | 汽车 | 双峰县 | 延吉市 | 廊坊市 | 治县。 | 吉林市 | 祁阳县 | 越西县 | 阿瓦提县 | 翁牛特旗 | 浦城县 | 蓝山县 | 日照市 | 太湖县 | 湘阴县 | 铁岭县 | 岗巴县 | 两当县 | 元谋县 | 界首市 | 巴里 | 洛隆县 | 临澧县 | 板桥市 | 木兰县 | 宿州市 | 海丰县 | 金昌市 | 七台河市 | 开江县 | 正蓝旗 | 镇沅 | 惠东县 | 浠水县 | 广丰县 | 多伦县 | 巩留县 | 西平县 | 凌海市 | 益阳市 | 泽普县 | 孟州市 | 吴忠市 | 垣曲县 | 英德市 | 延长县 | 长子县 | 延寿县 | 昌平区 | 石家庄市 | 长泰县 |