现在的位置: 首页 > 综合 > 正文

JSP自定义标签

2014年02月10日 ⁄ 综合 ⁄ 共 1788字 ⁄ 字号 评论关闭

创建自定义标签的流程:
   * 定义标签的样式,标签要完成的功能
         <xxxx:date/>   --转化为系统的当前日期
   * 编写标签处理类
      public class DateTag implements SimpleTag
     
   * 定义tld文件(标签的配置文件)
             <!-- 标签库的描述文件 -->
     <description>mytag 1.0 core library</description>
     <!-- 标签库的概述 -->
     <display-name>mytag core</display-name>
     <!-- 标签库的版本 -->
     <tlib-version>1.0</tlib-version>
     <!-- 在jsp页面时标签时,建议使用的前缀名 -->
     <short-name>itcast</short-name>
     <!-- 标签库名称的唯一标识,不同标签库,名称必须不一致 ,也就是每个tld文件中该名称唯一-->
     <uri>http://www.xxxx/jsp/mytag/core</uri>
   
    <!-- 配置显示日期的标签 xxxxt:date-->
     <tag>
        <!-- 标签的名称 是唯一-->
        <name>date</name>
        <!-- 标签处理类的完整路径 -->
       <tag-class>com.itcast.tag.DateTag</tag-class>
        <!--定义标签体的类型,empty表示没有标签体  -->
       <body-content>empty</body-content>
     </tag> 
  
   * 在web.xml文件中注册tld文件(servler2.4 jsp2.0规范及以后的版本不用再web.xml文件中注册tld文件)
        
    <!-- 在web.xml文件中配置标签库文件 -->
    <jsp-config>
      <taglib>
        <!-- 在jsp页面中taglib指令中uri的值 -->
        <taglib-uri>/WEB-INF/mytag.tld</taglib-uri>
        <!-- 标签的完整路径  /表示从根路径开始查找-->
        <taglib-location>/WEB-INF/tld/mytag.tld</taglib-location>
      </taglib>
    </jsp-config>
 
   * 在jsp中使用标签
       * 导入标签库
      
   <!--
      导入标签库
     uri 属性定义的是标签库的tl文件,通常是指向的一个路径的文件
         *  为web.xml文件中taglib-uri的值
         *   tld文件中uri标签的值 http://www.xxxx/jsp/mytag/core
     prefix属性:    给uri起的引用名称
   -->
   <%@  taglib uri="/WEB-INF/mytag.tld"  prefix="itcast" %>
     
       * 使用标签
          <xxxx:date/>
         
         
  标签的执行流程:
     * 浏览器请求jsp页面
     * jsp引擎执行jsp页面,执行中碰到标签指令itcast:date
        * 根据itcast  <%@  taglib uri="/WEB-INF/mytag.tld"  prefix="itcast" %>
            找到tld文件.
        * 根据date 在tld文件中查找tag标签中  <name>date</name>  等于date的name标签
        * 根据name标签找到<tag-class>com.xxxx.tag.DateTag</tag-class>对应的标签处理类
        * 执行标签处理类
           * 按照执行SimpleTag接口的标签处理类的声明周期执行.
           * 执行doTag()方法时,在jsp页面输出信息在  <xxxx:date/>所在的位置输出

 

抱歉!评论已关闭.