定制标记库

 

我自己的学习笔记

 

 

 

 

定制标记库-------
定制标记库的作用:增加表现层的处理能力,减少jsp文件中的java代码,定制标记库的作用类似:<jsp:useBean>   <jsp:setProperty><jsp:g
etProperty> 


定制一个标记库,需要一个标记库处理类,和用来描述这个标记的tld文件,这个tld文件实际上是一个xml文件,用来描述这个标记库所对应的标记处理类,以及其他的一些描述类的东西。

要定制标记库需要继承TagSupport类,这个类位于javax.servlet.jsp.tagext这个包中,在jsp中这个包里主要放一些处理标记库的类

定制标记库,需要重写doStartTag()这个方法,在开始执行这个标记库时将自动调用doStartTag这个方法,在这个标记结束时将自动调用doEndTag()方法。

如:package com.austit.tags;
import java.io.IOException;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class TimerTag extends TagSupport{
 private static final long serialVersionUID = -4534299l;
 private long start;
 private long end;

 public int doStartTag(){
  start = System.currentTimeMillis();
  return EVAL_BODY_INCLUDE;
 }


 public int doEndTag() throws JspTagException{
  end = System.currentTimeMillis();
  long elapsed = end - start;
  try {
   JspWriter out = pageContext.getOut();
   out.println("runningtime:"+elapsed+"ms");
  }catch (IOException e){
   throw new JspTagException(e):
  }
  return EVAL_PAGE;   
 }
}

随后要写一个tld文件,用来描述这个标记库处理类。

在当前项目下的webroot目录下新建一个xml文件,但后缀不写成xml,而将后缀改为tld文件

在写这个tld文件时较容易出错,可以从tomcat  webapps 目录下的examples中的jsp2项目中的tld文件的一些重要标记复制进来

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/nx/j2ee"
 xmlnx:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/nx/j2ee/web-jsptaglibrary_2_0.xsd"
 version="2.0">
 <description>  </description>  //对当前定制标记库的一个描述
 <tlib-version> </tlib-version>//是你自己设置的版本
 <short-name>   </short-name>  //你的标记库使用时推荐的前最名称

 <uri>         </uri>  //你定义的引用这个标记库的uri地址
 <tag>   //对你的标记库中的标记的说明
  <decription>   </description>//描述当前这个标记
  <name>     </name> //标记的名称,这个名称要出现在jsp代码中
  <tag-class>     </tag-class>//这个标记的标记处理类,要写全名
  <body-content>[Jsp,empty,scriptless//指不能包含脚本代码,tagdependent]</body-content>//定义这个标记里包含的内容
 </tag>
</taglib>

标记库的处理类中需要使用参数时可以用<attribute>这个标记来指定
<name>来指定这个参数名 <rtexprvalue>来指定这个参数是可以是jsp表达式,<required>类指定这个参数是否是必须的

 

在jsp页面中使用标记库的使用类似jstl标记库的使用类似

标记库打包:
可以将自己定制的标记库打包成jar文件,然后进行使用,在标记库打包成的jar文件中应该包含tld文件和标记库的处理类,其中标记库的描述性文件tld文件应该放在META-INF目录下


常用的开源标记库:
jstl  
jakarta  taglibs
display tag  //分页显示  displaytag.sf.net  对数据进行分页 并进行表格输出

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值