posts - 89,  comments - 98,  trackbacks - 0

          <html:link> 標(biāo)簽用于生成HTML <a> 元素。<html:link> 在創(chuàng)建超鏈接時,有兩個優(yōu)點(diǎn):
          (1) 允許在URL 中以多種方式包含請求參數(shù)。
          (2) 當(dāng)用戶瀏覽器關(guān)閉Cookie 時,會自動重寫URL,把SessionID 作為請求參數(shù)包含在URL 中,用于跟蹤用戶的Session 狀態(tài)。

          <html:link> 標(biāo)簽有以下重要屬性:
          (1) forward:指定全局轉(zhuǎn)發(fā)鏈接。
          (2) href:指定完整的URL 鍵接。
          (3) page:指定相對于當(dāng)前網(wǎng)頁的URL。

          ??????? <html:rewrite> 用于輸出超鏈接中的URI部分,但它并不生成HTML <a> 元素。URI指的是URL 中協(xié)議、主機(jī)和端口以后的內(nèi)容。URI 用于指定具體的請求資源。例如,對于URL:HTTP://localhost:8080/HtmlBasic.do,它的URI為/HtmlBasic.do

          示例:
          1、創(chuàng)建全局轉(zhuǎn)發(fā)鏈接
          ??? 首先,在Struts-config.xml 中<global-forwards> 元素中定義一個<forward> 元素:
          ??? <global-forwards>
          ??????? <forward name = "index" path="/index.jsp"/>
          ??? </global-forwards>
          ??? 接著,在JSP 文件中創(chuàng)建<html:link> 標(biāo)簽:
          ??? <html:link forward="index">
          ??????? Link to Global ActionForward
          ??? </html:link>
          ??? <html:link> 標(biāo)簽的forward 屬性和<global-forwards> 元素中的<forward> 子元素匹配。以上代碼生成如下HTML 內(nèi)容:
          ??? <a href="/index.jsp">Link to Global ActionFoward</a>
          ??? 值得注意的是,<html:link> 的forward 屬性只引用Struts-config.xml 配置文件中<global-forwards>內(nèi)的<forward> 子元素,如果引用<action> 內(nèi)的<forward> 子元素,在運(yùn)行時將會拋出異常:
          ??? Cannot create rewrite URL: Java.Net.MalfomedURlException: Cannot retrieve ActionForward

          2、創(chuàng)建具有完整URL 的鏈接
          ??? 如果Web 應(yīng)用需要鏈接到其他站點(diǎn),應(yīng)該給出其他站點(diǎn)完整URL,例如:
          ??? <html:link href="??????? Generate an "href" directly
          ??? </html:link>
          ??? 生成HTML 代碼如下:
          ??? <a href="
          an "href" directly</a>
          ??? 值得注意的是,如果指定了<html:link> 標(biāo)簽的href 屬性,即使用戶瀏覽器的Cookie 關(guān)閉,<html:link> 標(biāo)簽也不會把用戶SessionID 作為請求參數(shù)加和到URL 中。

          3、從當(dāng)前網(wǎng)頁中創(chuàng)建相對URL
          ??? 如果從一個網(wǎng)頁鏈接到同一個應(yīng)用中的另一網(wǎng)頁,可以采用以下方式:
          ??? <html:link page="/HtmlBasic.do">
          ??????? A relative link from this page
          ??? </html:link>
          ??? <html:link> 標(biāo)簽的 page 屬性用于指定相對于當(dāng)前應(yīng)用的URI。以上代碼生成如下HTML 內(nèi)容:
          ??? <a href="/lib/HtmlBasic.do">......</a>

          4、在URL 或 URI 中包含請求參數(shù)
          ??? 如果要在URL或URI 中包含請求參數(shù),只要把請求參數(shù)加在URL 或 URI的末尾就可以了。例如:
          ??? <html:link page="/HtmlBasic.do?prop1=abc&amp;prop2=123">
          ??????? Hard-code the url parameters
          ??? </html:link>
          ??? <!-- or -->
          ??? <html:rewrite page="/HtmlBasic.do?prop1=abc&amp;prop2=123"/>
          ??? 以上代碼生成如下HTML 內(nèi)容:
          ??? <a href=/lib/HtmlBasic.do?prop1=abc&amp;prop2=123">......</a>
          ??? rewrite: /HtmlBasic.do?prop1=abc&amp;prop2=123

          ??? 提示:在HTML 中&amp 代表特殊字符 "&"

          5、在URL 或 URI 中包含單個請求變量
          ?????????????????
          ??????? 如果要在URL 中包含一個請求參數(shù),而這人參數(shù)的值存在于當(dāng)前網(wǎng)頁可訪問的一個變量中,可以按以下方法來實(shí)現(xiàn)。
          ??????? 為了演示這一功能,首先創(chuàng)建一個當(dāng)前網(wǎng)頁可訪問的變量。例如,本例中創(chuàng)建了兩個變量,一個是字符類型,一個是CustomerBean , 它們存存于一個 page 范圍內(nèi):
          ??? <%
          ??????? /*
          ???????? * Create a string object to store as a bean in
          ???????? * the page content and embed in this link
          ???????? */
          ??????? String stringBean = "Value to Pass ont URL";
          ??????? pageContext.setAttribute("stringBean", stringBean);
          ??? %>
          ??? <jsp:useBean id = "customerBean" scope="page" class="htmltaglibs.beans.CurstomerBean"/>
          ??? <jsp:setProperty name="customerBean" property="name" value="weiqin"/>
          ??????? 接著,把這兩個變量作為請求參數(shù),加入到URL或URI 中:
          ??? <html:link page="/HtmlBasic.do"
          ????????????????????? paramId="urlParamName"
          ????????????????????? paramName="stringBean">
          ??????? URL encode a parameter based on a string bean value
          ??? </html:link>
          ??? <html:link page="/HtmlBasic.do"
          ?????????????????????? paramId="urlParamName"
          ?????????????????????? paramName="customerBean"
          ?????????????????????? paramProperty="name">
          ??????? URL encode a parameter based on a customer bean value
          ??? </html:link>

          ??? rewrite: <html:rewrite page="/HtmlBasic.do"
          ?????????????????????????????????????????? paramId="urlParamName" paramName="stringBean"/>
          ??? rewrite: <html:rewrite page="/HtmlBasic.do"???????????????????????????????????????????
          ?????????????????????????????????????????? paramId="urlParamName" paramName="customerBean"
          ?????????????????????????????????????????? paramProperty="name"/>

          ??? <html:link> 標(biāo)簽的 paramId 屬性指定請求參數(shù)名,paramName 屬性指定變量的名字。如果變量為JavaBean ,用paramProperty 屬性指定JavaBean 的屬性。
          ??? 對于本例的stringBean,請求參數(shù)值為stringBean 的字符串值。對于customerBean,指定了paramProperty 屬性,請求參數(shù)值為customerBean 的 name 屬性值。
          ??? 以上代碼生成如下HTML 內(nèi)容:
          ??? <a href="/HtmlBasic.do?urlParamName=Value to Pass on Url">
          ??????? Url encode a paramter based on a string bean value
          ??? </a>

          ??? <a href="/HtmlBasic.do?urlParamName=weiqin">
          ??????? url encode a parameter based on a customer bean value
          ??? </a>

          ??? rewrite: /HtmlBasic.do?urlParamName=Value to Pass on Url
          ??? rewrite: /HtmlBasic.do?urlParamName=weiqin
          6、在URL 或 URI 中包含多個請求變量
          ??? 如果在URL 或 URI 中包含多個請求參數(shù),而這些參數(shù)的值來自多個變量,需要先定義一個Map類型的java 類,如java.util.HashMap,用它來存放請求變量。例如:
          ??? <%
          ??????? /*
          ???????? * Strore values int a Map(HashMap in this case)
          ???????? * and construct the URL based on the Map
          ???????? * /
          ??????? java.util.HashMap myMap = new java.util.HashMap();
          ??????? myMap.put("myString", new String("myStringValue"));
          ??????? myMap.put("myArray" , new String[]{"str1","str2","str3"} );
          ??????? pageContext.setAttribute("map", myMap);
          ??? %>
          ??? 在以上代碼的HaspMap 中存放了兩個對象,其中第二個對象是個字符串?dāng)?shù)組。HashMap 被存放在PageContext 中。 接下來就可以把這個HashMap 作為請求參數(shù),加入到URL 或 URI 中:
          ??? <%-- For this version of the <html:link> tag: --%>
          ??? <%-- map = a map with name/value pairs to pass on the url --%>
          ??? <html:link page="/HtmlBasic.do" name="map">
          ??????? URL encode a parameter based on value in a Map
          ??? </html:link>
          ??? <%-- Create the same rewrite string for the above link. --%>
          ??? rewrite:<html:rewrite page="/HtmlBasic.do" name="map"/>

          ??? <html:link> 標(biāo)簽的name 屬性指定包含請求變量的HashMap 對象。HashMap 對象中的每一對"key/value" 代表一對或多對"請求參數(shù)名/請求參數(shù)值"。以上代碼生成如下的Html 內(nèi)容:
          ??? <a href="/HtmlBasic.do?myString=myStringValue&amp;myArray=str1&amp;myArray=str2&amp;myArray=str3">
          ??????? URL encode a parameter based on value in a Map
          ??? </a>
          ???
          ??? rewrite:/HtmlBasic.do?myString=myStringValue&amp;myArray=str1&amp;myArray=str2&amp;myArray=str3

          ??????

          ?


          FeedBack:
          # re: Struts -- html:link 標(biāo)簽的使用
          2007-02-08 13:28 | 水煮三國
          <html:link action="abc"/>
          也是可以的.
          不過如果有action就不必加abc.do這樣的后綴了,只須abc即可.
          但是page就必須加上.do  回復(fù)  更多評論
            
          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 210998
          • 排名 - 266

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 平和县| 定兴县| 阿拉尔市| 天峨县| 务川| 隆回县| 祁阳县| 靖西县| 石林| 井研县| 崇左市| 阿城市| 繁峙县| 阜康市| 宜阳县| 五常市| 庆城县| 百色市| 鱼台县| 大同市| 平塘县| 东至县| 厦门市| 万山特区| 凤城市| 罗山县| 施秉县| 博湖县| 吉安县| 普兰县| 鄂伦春自治旗| 耿马| 阜新市| 东乡县| 莱阳市| 南丰县| 金寨县| 大安市| 博野县| 龙井市| 广灵县|