鐵手劍譜

          上善若水
          數據加載中……
          Struts秘籍之第1段:第2.1式:關于標簽庫聲明

          第2.2式. 標簽庫聲明

          問題

          在每次你需要使用一個新的標簽庫時,想要避免非要在web.xml中加入taglib元素。

          動作要領

          創建一個JSP 文件包含引用到你所使用的標簽庫描述符的絕對路徑的taglib指令。Example 2-4 (taglibs.inc.jsp) 就展示了一個包含對Struts bean, html, 和logic標簽庫聲明以及JSTL的core 和formatting 標簽庫的taglib聲明的JSP 文件。

          Example 2-4. 通用標簽庫聲明

           

          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
          <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
          <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
          <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
          <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>

          然后在JSP使用下面的指令包含這個文件:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

          <!-- start taglib -->
          <%@ include file="/includes/taglibs.inc.jsp" %>
          <!-- end taglib -->

          <html:html>
            
          <body>
              

          因為你在taglib中使用的是絕對路徑,你將不需要在web.xml文件中輸入對應的taglib元素。

          動作變化

          如果你使用的是符合JSP 1.2/Servlet 2.3 的容器,比如Tomcat 4.x 或者更高,你就可以在JSP頁面的taglib指令中使用絕對路徑而不必在web.xml中指定taglib元素。

          對于早于Servlet 2.3 規范的情況,你仍然需要在web.xml中聲明所有你所使用的JSP 標簽。下面摘自web.xml部署描述符中的代碼片斷展示了用于Struts應用的典型taglib聲明:

          <!-- Struts Tag Library Descriptors -->
          <taglib>
            
          <taglib-uri>/tags/struts-bean</taglib-uri>
            
          <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
          </taglib>
          <taglib>
            
          <taglib-uri>/tags/struts-html</taglib-uri>
            
          <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
          </taglib>
          <taglib>
            
          <taglib-uri>/tags/struts-logic</taglib-uri>
            
          <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
          </taglib>
          <taglib>
            
          <taglib-uri>/tags/struts-nested</taglib-uri>
            
          <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
          </taglib>

          從Servlet 2.3 之后,標簽庫的絕對URI 在該庫的標簽庫描述符 (TLD) 文件中指定。比如,下面就是struts-bean.tld文件中的相應聲明:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag 
          Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"
          >
          <taglib>
            
          <tlibversion>1.0</tlibversion>
            
          <jspversion>1.1</jspversion>
            
          <shortname>bean</shortname>
            
          <uri>http://jakarta.apache.org/struts/tags-bean</uri>

          任何需要使用這個標簽庫的頁面都可以通過下面的頁面級指令來引用它。標簽庫不需要再在web.xml文件中引用:

          <%@ taglib
                  
          uri="http://jakarta.apache.org/struts/tags-bean"
                  prefix
          ="bean" %>

          如果你在整個應用中使用相同的標簽庫,你可以使用基本動作中所述的方法,即創建一個包含通用標簽庫聲明指令的包含JSP文件。如果你引用了不需要的標簽庫,其實也不會有太大的性能損失,所以你可以在每個JSP頁面中安全的包含這個文件。如果URI 改變,你將只需要修改一個地方而不是每一個JSP文件。

          Table 2-1 展示了版本1.1 和1.2 的Struts中的標簽庫絕對URI的完整列表。

          Table 2-1. Struts 標簽庫URI

          Tag library

          Struts 1.1 URI

          Struts 1.2 URI

          struts-bean

          http://jakarta.apache.org/struts/tags-bean

          http://struts.apache.org/tags-bean

          struts-html

          http://jakarta.apache.org/struts/tags-html

          http://struts.apache.org/tags-html

          struts-logic

          http://jakarta.apache.org/struts/tags-logic

          http://struts.apache.org/tags-logic

          struts-nested

          http://jakarta.apache.org/struts/tags-nested

          http://struts.apache.org/tags-nested

          struts-template

          http://jakarta.apache.org/struts/tags-template

          不再包括,被Tiles代替

          struts-tiles

          http://jakarta.apache.org/struts/tags-tiles

          http://struts.apache.org/tags-tiles

          struts-bean-el

          http://jakarta.apache.org/struts/tags-bean-el

          http://struts.apache.org/tags-bean-el

          struts-html-el

          http://jakarta.apache.org/struts/tags-html-el

          http://struts.apache.org/tags-html-el

          struts-logic-el

          http://jakarta.apache.org/struts/tags-logic-el

          http://struts.apache.org/tags-logic-el

           

          有些開發人員喜歡使用絕對URI,而有些仍然喜歡使用web.xml的聲明。需要指出的是,后一種方式可以將你的應用代碼和下層的標簽庫改變隔離開來。如果URI 改變,你只需要修改web.xml文件中的相關聲明。你并不需要修改每個JSP頁面,包括被包含的JSP片斷。這種方式也是有效的,也有可取之處。最后,采用那種方式完全取決于個人喜好。

          相關招式

          JSP規范有一些稍微有點復雜的規則來解析標簽庫的URI。詳細的信息可以參考JSP的規范,它可以在http://java.sun.com/jsp處下載。

          第3.1式將向你展示在Struts應用中使用JSP 標準標簽庫(JSTL) 。

           

          posted on 2005-05-11 10:04 鐵手 閱讀(2482) 評論(1)  編輯  收藏 所屬分類: JavaStruts系列

          評論

          # Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

          本系列源改編自O'Reily的Strus Cookbook
          [引用提示]阿泠引用了該文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
            回復  更多評論    
          主站蜘蛛池模板: 山西省| 泗阳县| 阳朔县| 秀山| 娄底市| 通渭县| 达拉特旗| 丰县| 石狮市| 高雄市| 深州市| 林西县| 姚安县| 山东| 阜阳市| 克拉玛依市| 汉源县| 沂水县| 舟山市| 吉木萨尔县| 双城市| 靖边县| 旌德县| 贡山| 商河县| 深泽县| 清镇市| 平凉市| 威海市| 饶平县| 朝阳市| 林芝县| 长丰县| 梅州市| 邢台县| 广河县| 乃东县| 元江| 眉山市| 丰城市| 合川市|