自定义标签

=========自定义标签学习总结=========
标签的运行方式是:
JSP页面解析中发现自定义标签,则到上面的标签说明中寻找:如
<%@ taglib uri="/mytitle.tld" prefix="dada"%>
此时它会找到该标签的uri ,uri 在web.xml中已经定义了
 <taglib>
    
<taglib-uri>/mytitle.tld</taglib-uri>
    
<taglib-location>/WEB-INF/mytitle.tld</taglib-location>
  
</taglib>
此时它会通过uri在web.xml中查找到该标签的描述文件tld。那么在tld描述文件中又定义了该标签的处理类,具体完成业务的操作,标签处理类继承TagSupport,处理类完成操作后将返回页面。
<name>title</name>
    
<tagclass>com.derek.tags.TitleTag</tagclass>
 
 准备工作 :首先在WEB-INF/lib下添加taglibs-log.jar包
1、创建标签描述文件
     在WEB-INF下新建一个tld文件,该文件描述了此tld文件将由那个处理类完成操作,并且定义了该标签的属性。一个<taglib>中可以有很多个<tag>,由<name>标签名区分。
<?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>html</shortname>
<uri>http://jakarta.apache.org/struts/tags-html</uri>

<tag>
     
<name>title</name>
    
<tagclass>com.derek.tags.TitleTag</tagclass>
    
<bodycontent>empty</bodycontent>
    
<attribute>
        
<name>begin</name>
        
<required>true</required>
    
</attribute>
        
<attribute>
        
<name>end</name>
        
<required>true</required>
    
</attribute>
</tag>

</taglib>

2、创建标签处理类
     该类继承  TagSupport,覆盖doEndTag()方法
   
package com.derek.tags;

import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import java.util.Properties;
import java.io.
*
;
import javax.servlet.jsp.JspWriter;

public class
 TitleTag extends TagSupport {
  
private String begin = null
;
  
private String end = null
;
  
public
 TitleTag() {}
  
public String getBegin() {return
 begin;}
  
public void setBegin(String begin) {this.begin =
 begin;}
  
public String getEnd(){return
 end;}
  
public void setEnd(String end){this.end =
 end;}

  
public int
 doEndTag() throws JspException {
    Properties ps 
= (Properties)pageContext.getAttribute("ps",pageContext.APPLICATION_SCOPE);//从上下文中取的message.properties

                  JspWriter jw =  pageContext.getOut();
    
if(begin!=null&&begin.length()>0
){
       String header 
=
 ps.getProperty(begin);
       System.
out.println("页眉"+
begin);
       
try
 {
      jw.println(header);
        }
catch
 (IOException ex) {ex.printStackTrace();}
    }
    
if(end!=null&&end.length()>0
){
       String footer 
=
 ps.getProperty(end);
       System.
out.println(" 页脚"+
end);
    
try
 {
      jw.println(footer);
      }
catch
 (IOException ex1) {ex1.printStackTrace();}
    }
    
return
 SKIP_BODY;
  }

  
public void
 release() {
    super.release();
  }
}

3、修改web.xml文件
  在web.xml中<web-app>下添加,将标签的uri与具体标签描述文件绑定
<taglib>
    
<taglib-uri>/mytitle.tld</taglib-uri>
    
<taglib-location>/WEB-INF/mytitle.tld</taglib-location>
</taglib>

4、在页面中使用标签
首先在页面中导入标签
<%@ taglib uri="/mytitle.tld" prefix="dada"%>
该句表示标签前缀为“dada”的标签将调用uri指定的标签,uri可以随便起名字,但一定要可web.xml中定义的uri相对应。
然后就可以在页面中使用了
<dada:title begin="" end="footer"/>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值