国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > JSP > 正文

十三、JSP動作

2020-07-27 21:55:54
字體:
供稿:網(wǎng)友
JSP動作利用XML語法格式的標(biāo)記來控制Servlet引擎的行為。利用JSP動作可以動態(tài)地插入文件、重用JavaBean組件、把用戶重定向到另外的頁面、為Java插件生成HTML代碼。

   JSP動作包括:

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

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



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

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

   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動作

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



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

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

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

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

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

   下面是一個很簡單的例子,它的功能是裝載一個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頁面用到了一個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最簡單的方法是先用下面的代碼裝載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時才執(zhí)行Body部分,如果是利用現(xiàn)有的Bean實(shí)例則不執(zhí)行Body部分。正如下面將要介紹的,jsp:useBean并非總是意味著創(chuàng)建一個新的Bean實(shí)例。

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

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


   13.4 jsp:setProperty動作

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



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



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

   jsp:setProperty動作有下面四個屬性: 屬性  說明  
name  name屬性是必需的。它表示要設(shè)置屬性的是哪個Bean。  
property  property屬性是必需的。它表示要設(shè)置哪個屬性。有一個特殊用法:如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。  
value  value屬性是可選的。該屬性用來指定Bean屬性的值。字符串?dāng)?shù)據(jù)會在目標(biāo)類中通過標(biāo)準(zhǔn)的valueOf方法自動轉(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不能同時使用,但可以使用其中任意一個。

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

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

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



   下面是一個利用JavaBean計算素數(shù)的例子。如果請求中有一個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動作

   jsp:getProperty動作提取指定Bean屬性的值,轉(zhuǎn)換成字符串,然后輸出。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>



   13.6 jsp:forward動作

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



   13.7 jsp:plugin動作

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

   附錄:JSP注釋和字符引用約定

   下面是一些特殊的標(biāo)記或字符,你可以利用它們插入注釋或可能被視為具有特殊含義的字符。 語法  用途  
<%-- comment --%>  JSP注釋,也稱為“隱藏注釋”。JSP引擎將忽略它。標(biāo)記內(nèi)的所有JSP腳本元素、指令和動作都將不起作用。  
<!-- comment -->  HTML注釋,也稱為“輸出的注釋”,直接出現(xiàn)在結(jié)果HTML文檔中。標(biāo)記內(nèi)的所有JSP腳本元素、指令和動作正常執(zhí)行。  
<\%  在模板文本(靜態(tài)HTML)中實(shí)際上希望出現(xiàn)“<%”的地方使用。  
%\>  在腳本元素內(nèi)實(shí)際上希望出現(xiàn)“%>”的地方使用。  
\'  使用單引號的屬性內(nèi)的單引號。不過,你既可以使用單引號也可以使用雙引號,而另外一種引號將具有普通含義。  
\"  使用雙引號的屬性內(nèi)的雙引號。參見“\'”的說明。 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
www.91在线播放| 在线黄色国产电影| 国产中文字幕在线视频| www.操.com| 91av资源在线| 国产激情二区| jizz亚洲大全| 国产视频精品久久| 在线观看免费黄色| 高清视频一区二区三区四区| 欧美色第一页| 国产午夜三区视频在线| 在线观看视频污| 中文字幕在线视频网| 在线伊人免费视频| 福利在线观看| 日本视频在线观看一区二区三区| √天堂中文在线| 九九热视频在线观看| 精品国产一区二区三区不卡在线| 日本成人a视频| 精品一区二区三区高清免费不卡 | 青青国产在线| 国产二区在线播放| 天天操天天操一操| 超碰国产在线| 四虎中文字幕| 在线免费观看高清视频色| 国产鲁鲁视频在线观看免费| 日本在线视频www鲁啊鲁| 国产视频xxx| 天天爱天天色| 中文字幕在线视频观看| 九九在线视频| 九九热在线播放| 免费久久网站| 日本视频二区| а√最新版在线天堂| 亚洲www色| www.中文字幕久久久| wwww在线观看| 国产在线中文字幕| 成人精品一区二区三区免费| 丁香六月婷婷| 国产一区二区三区福利| 国产素人视频在线观看| 国产三级自拍| 91资源在线观看| 一色桃子av在线| www.狠狠操| 国产毛片在线| 午夜在线小视频| 国产三级视频在线| 中文av在线播放| 日本欧洲一区| 国产亚洲精品久久久网站好莱| 国产精品久久一区二区三区不卡| 国产成在线观看免费视频| 精品国产一区二区三区久久久狼牙 | 色欧美在线观看| 国产99re| 日本aⅴ写真网站免费| 天天插天天干| 国产在线更新| 18 激情视频在线| 另类专区欧美| 777电影在线观看| 国产在线黄色片| 中文字幕av高清在线观看| 久久精品视频免费看| 国产精品剧情一区二区在线观看 | 国产美女在线播放| 69视频在线| 激情亚洲综合网| 中文av字幕| 国产一级片麻豆| 久热中文字幕精品视频在线| 国产精品欧美色图| 四虎成人免费观看在线网址| 二区三区中文字幕| 中文日本在线观看| 中文字幕麻豆| 国产免费麻豆视频| 在线成人综合色一区| 国产亚洲精品拍拍拍拍拍| 日本高清中文字幕在线 | 国产白浆在线| 国产特黄在线| 国产老肥熟xxxx在线观看| 男人天堂99| 精品中文字幕不卡在线视频| 天海翼中文字幕| 精品乱码一区二区三四区视频| 国产69精品久久app免费版| 先锋av资源网| 思思99精品视频在线观看| 在线国产小视频| 国产大学生粉嫩无套流白浆| 最近中文字幕mv免费高清在线| 青青久在线视频免费观看| 日本在线天堂| 狠狠狠狠狠狠操| 国产尤物视频| 国产视频中文字幕在线观看| 国产精品被窝福利一区| 国产黄色免费在线观看| 中文字幕av在线播放| av首页在线| 91网页在线观看| 在线激情网站| 久热中文字幕精品视频在线| 精品孕妇一区二区三区| 成人无遮挡免费网站视频在线观看| 狠狠操五月天| 国产视频97| 伊人影院在线播放| www免费在线观看视频| 久久久久久77777| 国产一二三区在线视频| 国产精品jvid在线观看| 香蕉视频网站在线播放| 国产麻豆综合视频在线观看| 国产精品剧情一区二区在线观看| 国产成a人亚洲精v品| jizz国产| 国产日产一区二区三区| eeuss在线观看| 国产三级在线播放| 成年女人在线视频| 精品福利视频导航大全| 二人午夜免费观看在线视频| 国产变态拳头交视频一区二区| 青青草免费在线观看| 国产精品久久久高清免费| 在线播放www| 中文字幕乱在线伦视频乱在线伦视频 | 国产麻豆视频网站| 午夜视频免费在线观看| 国产精美视频| 国产在线激情视频| 午夜性爽视频男人的天堂| 国产精品伦一区二区三区视频| 免费的黄网站在线观看| 在线观看的av| 国产激情二区| 国产黄色免费| 最好2018中文免费视频| 黄污在线观看| 超碰在线97国产| 毛片在线视频| 亚洲综合色视频在线观看| 91免费日韩| 国产精品xxx电影| 国产一级性片| 国产视频1区| 国产高清av| 中文岛国精品亚洲一区| 精品国产免费观看一区| 97视频网站| 亚洲精品乱码电影在线观看| 亚洲最新永久观看在线| 在线播放黄色网址| 天天操中文字幕视频| 人日人天天爽| 国产在线超碰| 国产在线三区| 国产精品日日爱| 97福利电影| 任你操视频在线观看| 麻豆视频国产| 午夜国产在线| 精品入口麻豆传煤| 亚洲欧美精品日韩欧美| 日韩国产成人| 成在线人视频免费视频| 99热在线观看免费| 91九色在线看| 粉嫩av一区| 精品一区二区91| 九九热在线观看 | 国产在线你懂得| 国产一级片麻豆| 影音av资源站| 好男人社区在线视频| 国产一区二区三区不卡免费观看| 国产小视频福利在线| 夜色资源网av在先锋网站观看| www免费在线观看视频| 国产精品亚洲第五区在线| 2021av在线| 99热在线观看免费| av丝袜在线| 国产色在线观看| 人人澡人人爽| 97高清视频| 国产精品不卡一区二区三区在线观看| eeuss影院在线观看| 国产成人亚洲综合小说区| 国产在线视频自拍| 人成在线免费视频|