自定义标签,方便你复习

来源:互联网 发布:珠江钢琴天猫淘宝 编辑:程序博客网 时间:2024/06/08 07:32
                             自定义标签


  自定义标签分为传统标签和简单标签
  
 自定义标签开发步骤
   
   1.编写标签处理器
    
      传统标签需要实现tag接口 实现类有TagSupport bodytagsupport


      简单标签需要实现simpleTag接口 实现类有simpleTagSupport


  bodytagsupport
     常用方法  getString() 获取jsp的内容
     getEnclosingWrite().write()把内容输入到jsp页面     
   
  simpleTagSupport
    常用方法
     JspTag  getParent()得到父标签               
     JspFragment  getJspBody()获取jsp标签体内容
     jspFragment.invoke(null)把内容输入到jsp页面




   2.编写标签库描述符文件简称tld文件
   
 <?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 


xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-


jsptaglibrary_2_0.xsd">
 <tlib-version>1.0</tlib-version>
 <short-name>myTag</short-name>
 <uri>/myTag</uri>
 <tag>
     指定自定义标签的注册名称
    <name>simpleIterate</name>
      指定自定义标签处理器类
     <tag-class>
       cn.sdbi.simpleTag.Demo1
      
     </tag-class>
     <!-- 指定标签体的类型,scriptless表示除了jsp脚本元素之外的jsp元素 
         empty表示标签体为空
         JSP 表示标签体可以为任意的jsp元素
         tagdependent表示jsp容器对标签体内容不进行解析处理
      -->
   <body-content>scriptless</body-content>
   <attribute>
      属性num
      <name>num</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>//表示属性值为动态
   </attribute>
 
 </tag>
</taglib>


     3.在jsp页面导入和使用自定义标签
      <%@ taglib prefix="gz" uri="/myTag" %> 
 
案例实现一个自定义简单标签 用来循环遍历


定一个标签处理器类去继承simpleTagSupport
package cn.sdbi.simpleTag;




import java.io.IOException;


import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;


public class Demo1 extends SimpleTagSupport {
    private int num;
    

public void setNum(int num) {
this.num = num;
}




public void doTag() throws JspException, IOException{

//获取标签体
JspFragment js = this.getJspBody();
//对标签体进行循环
for(int i=0;i<num;i++){
js.invoke(null);
}
}
}


  
 2.编写标签库描述符文件简称tld文件
   
 <?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 


xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-


jsptaglibrary_2_0.xsd">
 <tlib-version>1.0</tlib-version>
 <short-name>myTag</short-name>
 <uri>/myTag</uri>
 <tag>
   
    <name>simpleIterate</name>
     
     <tag-class>
       cn.sdbi.simpleTag.Demo1
      
     </tag-class>
    
   <body-content>scriptless</body-content>
   <attribute>
     
      <name>num</name>
      <required>true</required>
   </attribute>
 
 </tag>
</taglib>


 3.在jsp页面导入和使用自定义标签
      <%@ page language="java" import="java.util.*" pageEncoding="UTF-


8"%>
<%@ taglib prefix="gz" uri="/myTag" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    
    <title>My JSP 'hello.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" 


content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

  </head>
  
  <body>
   <gz:simpleIterate num="10">
   
      hello boby<br>
   </gz:simpleIterate>
  </body>
</html>