青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長(zhǎng)網(wǎng)

17站長(zhǎng)網(wǎng) 首頁(yè) 編程 JSP編程 查看內(nèi)容

JSP動(dòng)作

2022-10-27 18:48| 查看: 2888 |來源: 互聯(lián)網(wǎng)

JSP動(dòng)作利用XML語(yǔ)法格式的標(biāo)記來控制Servlet引擎的行為。利用JSP動(dòng)作可以動(dòng)態(tài)地插入文件、重用JavaBean組件、把用戶重定向到另外的頁(yè)面、為Java插件生成HTML代碼 ...
    • JSP動(dòng)作利用XML語(yǔ)法格式的標(biāo)記來控制Servlet引擎的行為。利用JSP動(dòng)作可以動(dòng)態(tài)地插入文件、重用JavaBean組件、把用戶重定向到另外的頁(yè)面、為Java插件生成HTML代碼。

         JSP動(dòng)作包括:

      jsp:include:在頁(yè)面被請(qǐng)求的時(shí)候引入一個(gè)文件。
      jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean。
      jsp:setProperty:設(shè)置JavaBean的屬性。
      jsp:getProperty:輸出某個(gè)JavaBean的屬性。
      jsp:forward:把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁(yè)面。
      jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記。
         13.1 jsp:include動(dòng)作

         該動(dòng)作把指定文件插入正在生成的頁(yè)面。其語(yǔ)法如下:
      <jsp:include page="relative URL" flush="true" />

         前面已經(jīng)介紹過include指令,它是在JSP文件被轉(zhuǎn)換成Servlet的時(shí)候引入文件,而這里的jsp:include動(dòng)作不同,插入文件的時(shí)間是在頁(yè)面被請(qǐng)求的時(shí)候。jsp:include動(dòng)作的文件引入時(shí)間決定了它的效率要稍微差一點(diǎn),而且被引用文件不能包含某些JSP代碼(例如不能設(shè)置HTTP頭),但它的靈活性卻要好得多。

         例如,下面的JSP頁(yè)面把4則新聞?wù)迦胍粋(gè)“What's New ?”頁(yè)面。改變新聞?wù)獣r(shí)只需改變這四個(gè)文件,而主JSP頁(yè)面卻可以不作修改:

         WhatsNew.jsp
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <HTML>
      <HEAD>
      <TITLE>W(wǎng)hat's New</TITLE>
      </HEAD>

      <BODY BGCOLOR="#FDF5E6" TEXT="#000000" LINK="#0000EE"
            VLINK="#551A8B" ALINK="#FF0000">

      <CENTER>
      <TABLE BORDER=5 BGCOLOR="#EF8429">
        <TR><TH CLASS="TITLE">
            What's New at JspNews.com</TABLE>
      </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>
      </BODY>
      </HTML>


         13.2 jsp:useBean動(dòng)作

         jsp:useBean動(dòng)作用來裝載一個(gè)將在JSP頁(yè)面中使用的JavaBean。這個(gè)功能非常有用,因?yàn)樗沟梦覀兗瓤梢园l(fā)揮Java組件重用的優(yōu)勢(shì),同時(shí)也避免了損失JSP區(qū)別于Servlet的方便性。jsp:useBean動(dòng)作最簡(jiǎn)單的語(yǔ)法為:
      <jsp:useBean id="name" class="package.class" />

         這行代碼的含義是:“創(chuàng)建一個(gè)由class屬性指定的類的實(shí)例,然后把它綁定到其名字由id屬性給出的變量上”。不過,就象我們接下來會(huì)看到的,定義一個(gè)scope屬性可以讓Bean關(guān)聯(lián)到更多的頁(yè)面。此時(shí),jsp:useBean動(dòng)作只有在不存在同樣id和scope的Bean時(shí)才創(chuàng)建新的對(duì)象實(shí)例,同時(shí),獲得現(xiàn)有Bean的引用就變得很有必要。

         獲得Bean實(shí)例之后,要修改Bean的屬性既可以通過jsp:setProperty動(dòng)作進(jìn)行,也可以在Scriptlet中利用id屬性所命名的對(duì)象變量,通過調(diào)用該對(duì)象的方法顯式地修改其屬性。這使我們想起,當(dāng)我們說“某個(gè)Bean有一個(gè)類型為X的屬性foo”時(shí),就意味著“這個(gè)類有一個(gè)返回值類型為X的getFoo方法,還有一個(gè)setFoo方法以X類型的值為參數(shù)”。

         有關(guān)jsp:setProperty動(dòng)作的詳細(xì)情況在后面討論。但現(xiàn)在必須了解的是,我們既可以通過jsp:setProperty動(dòng)作的value屬性直接提供一個(gè)值,也可以通過param屬性聲明Bean的屬性值來自指定的請(qǐng)求參數(shù),還可以列出Bean屬性表明它的值應(yīng)該來自請(qǐng)求參數(shù)中的同名變量。

         在JSP表達(dá)式或Scriptlet中讀取Bean屬性通過調(diào)用相應(yīng)的getXXX方法實(shí)現(xiàn),或者更一般地,使用jsp:getProperty動(dòng)作。

         注意包含Bean的類文件應(yīng)該放到服務(wù)器正式存放Java類的目錄下,而不是保留給修改后能夠自動(dòng)裝載的類的目錄。例如,對(duì)于Java Web Server來說,Bean和所有Bean用到的類都應(yīng)該放入classes目錄,或者封裝進(jìn)jar文件后放入lib目錄,但不應(yīng)該放到servlets下。

         下面是一個(gè)很簡(jiǎn)單的例子,它的功能是裝載一個(gè)Bean,然后設(shè)置/讀取它的message屬性。

         BeanTest.jsp
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <HTML>
      <HEAD>
      <TITLE>Reusing JavaBeans in JSP</TITLE>
      </HEAD>

      <BODY>
      <CENTER>
      <TABLE BORDER=5>
        <TR><TH CLASS="TITLE">
            Reusing JavaBeans in JSP</TABLE>
      </CENTER>
      <P>

      <jsp:useBean id="test" class="hall.SimpleBean" />
      <jsp:setProperty name="test"
                property="message"
                value="Hello WWW" />
      <H1>Message: <I>
      <jsp:getProperty name="test" property="message" />
      </I></H1>

      </BODY>
      </HTML>

         SimpleBean.java

         BeanTest頁(yè)面用到了一個(gè)SimpleBean。SimpleBean的代碼如下:
      package hall;

      public class SimpleBean {
        private String message = "No message specified";

        public String getMessage() {
          return(message);
        }

        public void setMessage(String message) {
          this.message = message;
        }
      }

         13.3 關(guān)于jsp:useBean的進(jìn)一步說明

         使用Bean最簡(jiǎn)單的方法是先用下面的代碼裝載Bean:
      <jsp:useBean id="name" class="package.class" />

         然后通過jsp:setProperty和jsp:getProperty修改和提取Bean的屬性。不過有兩點(diǎn)必須注意。第一,我們還可以用下面這種格式實(shí)例化Bean:
        <jsp:useBean ...>
          Body
        </jsp:useBean>

         它的意思是,只有當(dāng)?shù)谝淮螌?shí)例化Bean時(shí)才執(zhí)行Body部分,如果是利用現(xiàn)有的Bean實(shí)例則不執(zhí)行Body部分。正如下面將要介紹的,jsp:useBean并非總是意味著創(chuàng)建一個(gè)新的Bean實(shí)例。

         第二,除了id和class外,jsp:useBean還有其他三個(gè)屬性,即:scope,type,beanName。下表簡(jiǎn)要說明這些屬性的用法。 屬性  用法  
      id  命名引用該Bean的變量。如果能夠找到id和scope相同的Bean實(shí)例,jsp:useBean動(dòng)作將使用已有的Bean實(shí)例而不是創(chuàng)建新的實(shí)例。  
      class  指定Bean的完整包名。  
      scope  指定Bean在哪種上下文內(nèi)可用,可以取下面的四個(gè)值之一:page,request,session和application。
      默認(rèn)值是page,表示該Bean只在當(dāng)前頁(yè)面內(nèi)可用(保存在當(dāng)前頁(yè)面的PageContext內(nèi))。
      request表示該Bean在當(dāng)前的客戶請(qǐng)求內(nèi)有效(保存在ServletRequest對(duì)象內(nèi))。
      session表示該Bean對(duì)當(dāng)前HttpSession內(nèi)的所有頁(yè)面都有效。
      最后,如果取值application,則表示該Bean對(duì)所有具有相同ServletContext的頁(yè)面都有效。
      scope之所以很重要,是因?yàn)閖sp:useBean只有在不存在具有相同id和scope的對(duì)象時(shí)才會(huì)實(shí)例化新的對(duì)象;如果已有id和scope都相同的對(duì)象則直接使用已有的對(duì)象,此時(shí)jsp:useBean開始標(biāo)記和結(jié)束標(biāo)記之間的任何內(nèi)容都將被忽略。

      type  指定引用該對(duì)象的變量的類型,它必須是Bean類的名字、超類名字、該類所實(shí)現(xiàn)的接口名字之一。請(qǐng)記住變量的名字是由id屬性指定的。  
      beanName  指定Bean的名字。如果提供了type屬性和beanName屬性,允許省略class屬性。  

         13.4 jsp:setProperty動(dòng)作

         jsp:setProperty用來設(shè)置已經(jīng)實(shí)例化的Bean對(duì)象的屬性,有兩種用法。首先,你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty,如下所示:
      <jsp:useBean id="myName" ... />
      ...
      <jsp:setProperty name="myName"
          property="someProperty" ... />

         此時(shí),不管jsp:useBean是找到了一個(gè)現(xiàn)有的Bean,還是新創(chuàng)建了一個(gè)Bean實(shí)例,jsp:setProperty都會(huì)執(zhí)行。第二種用法是把jsp:setProperty放入jsp:useBean元素的內(nèi)部,如下所示:
      <jsp:useBean id="myName" ... >
        ...
        <jsp:setProperty name="myName"
           property="someProperty" ... />
      </jsp:useBean>

         此時(shí),jsp:setProperty只有在新建Bean實(shí)例時(shí)才會(huì)執(zhí)行,如果是使用現(xiàn)有實(shí)例則不執(zhí)行jsp:setProperty。

         jsp:setProperty動(dòng)作有下面四個(gè)屬性: 屬性  說明  
      name  name屬性是必需的。它表示要設(shè)置屬性的是哪個(gè)Bean。  
      property  property屬性是必需的。它表示要設(shè)置哪個(gè)屬性。有一個(gè)特殊用法:如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請(qǐng)求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。  
      value  value屬性是可選的。該屬性用來指定Bean屬性的值。字符串?dāng)?shù)據(jù)會(huì)在目標(biāo)類中通過標(biāo)準(zhǔn)的valueOf方法自動(dòng)轉(zhuǎn)換成數(shù)字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如“true”)通過Boolean.valueOf轉(zhuǎn)換,int和Integer類型的屬性值(比如“42”)通過Integer.valueOf轉(zhuǎn)換。
      value和param不能同時(shí)使用,但可以使用其中任意一個(gè)。

      param  param是可選的。它指定用哪個(gè)請(qǐng)求參數(shù)作為Bean屬性的值。如果當(dāng)前請(qǐng)求沒有參數(shù),則什么事情也不做,系統(tǒng)不會(huì)把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認(rèn)屬性值,只有當(dāng)請(qǐng)求參數(shù)明確指定了新值時(shí)才修改默認(rèn)屬性值。
      例如,下面的代碼片斷表示:如果存在numItems請(qǐng)求參數(shù)的話,把numberOfItems屬性的值設(shè)置為請(qǐng)求參數(shù)numItems的值;否則什么也不做。

      <jsp:setProperty name="orderBean"
      property="numberOfItems"
      param="numItems" />

      如果同時(shí)省略value和param,其效果相當(dāng)于提供一個(gè)param且其值等于property的值。進(jìn)一步利用這種借助請(qǐng)求參數(shù)和屬性名字相同進(jìn)行自動(dòng)賦值的思想,你還可以在property(Bean屬性的名字)中指定“*”,然后省略value和param。此時(shí),服務(wù)器會(huì)查看所有的Bean屬性和請(qǐng)求參數(shù),如果兩者名字相同則自動(dòng)賦值。

         下面是一個(gè)利用JavaBean計(jì)算素?cái)?shù)的例子。如果請(qǐng)求中有一個(gè)numDigits參數(shù),則該值被傳遞給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="numberedList" />

      </BODY>
      </HTML>

         注:NumberedPrimes的代碼略。

         13.5 jsp:getProperty動(dòng)作

         jsp:getProperty動(dòng)作提取指定Bean屬性的值,轉(zhuǎn)換成字符串,然后輸出。jsp:getProperty有兩個(gè)必需的屬性,即:name,表示Bean的名字;property,表示要提取哪個(gè)屬性的值。下面是一個(gè)例子,更多的例子可以在前文找到。
      <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>


         13.6 jsp:forward動(dòng)作

         jsp:forward動(dòng)作把請(qǐng)求轉(zhuǎn)到另外的頁(yè)面。jsp:forward標(biāo)記只有一個(gè)屬性page。page屬性包含的是一個(gè)相對(duì)URL。page的值既可以直接給出,也可以在請(qǐng)求的時(shí)候動(dòng)態(tài)計(jì)算,如下面的例子所示:
      <jsp:forward page="/utils/errorReporter.jsp" />
      <jsp:forward page="<%= someJavaExpression %>" />


         13.7 jsp:plugin動(dòng)作

         jsp:plugin動(dòng)作用來根據(jù)瀏覽器的類型,插入通過Java插件 運(yùn)行Java Applet所必需的OBJECT或EMBED元素。

         附錄:JSP注釋和字符引用約定
      tag標(biāo)簽:JSP JSP動(dòng)作

      本文最后更新于 2022-10-27 18:48,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長(zhǎng):[email protected]
      ·END·
      站長(zhǎng)網(wǎng)微信號(hào):w17tui,關(guān)注站長(zhǎng)、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營(yíng)銷服務(wù)中心

      免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

      17站長(zhǎng)網(wǎng)微信二維碼

      始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

      掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信

      大家都在看

        熱門排行

          最近更新

            主站蜘蛛池模板: 亚洲国产精品嫩草影院永久 | 91精品国产品国语在线不卡 | 久久一本综合 | 久久re视频这里精品一本到99 | 国产亚洲精品网站在线视频 | 忘忧草下载 | 成人免费一级毛片在线播放视频 | 国产 浪潮AV性色四虎 | 色橹橹欧美在线观看视频高清 | 伊人久久精品中文字幕 | 动漫美女人物被黄漫在线看 | 国产精品…在线观看 | 一级淫片bbbxxx | 国产人妖一区二区 | 4hu四虎免费影院www | 俄罗斯14一18处交 | 亚洲欧美高清在线精品一区 | 国产欧美一区二区三区久久 | 色姊姊真舒服 | 男子扒开美女尿口做羞羞的事 | 欧美另类z0z000高清 | 国产在线视频一区二区不卡 | 免费人成视频19674不收费 | 高干紧射H后入 | 特大巨黑人吊性xxxxgay | MELODY在线播放无删减 | 双性人皇上被c到哭 | 99视频在线免费看 | 纯肉高H啪短文合集 | 成人国产免费 | 国内精品久久久久久久999下 | 十九岁韩国电影在线观看 | 伊人狠狠丁香婷婷综合尤物 | 欧美精品一区二区蜜臀亚洲 | 中文字幕高清在线中文字幕 | 熟女人妻AV五十路六十路 | 亚洲欧美色综合影院 | 久久精品国产亚洲AV未满十八 | 国产午夜精品福利久久 | 欧美日韩国产在线一区二区 | 掀开奶罩边躁狠狠躁软学生 |
              • <button id="usweu"></button><abbr id="usweu"></abbr>