博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp自定义标签
阅读量:5311 次
发布时间:2019-06-14

本文共 3804 字,大约阅读时间需要 12 分钟。

此文的最终效果是:生成一个select下拉框,里面的值从start到end

1、编写标签的生成定义类

package com.taglib;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;public class TestTag extends TagSupport {    private static final long serialVersionUID = 2598164158273902707L;        //下面3个属性对应jsp页面的标签的3个属性    private String name;    private String start;    private String end;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getStart() {        return start;    }    public void setStart(String start) {        this.start = start;    }    public String getEnd() {        return end;    }    public void setEnd(String end) {        this.end = end;    }    public static long getSerialversionuid() {        return serialVersionUID;    }    @Override    public int doEndTag() throws JspException {        return super.doEndTag();    }    @Override    public int doStartTag() throws JspException {        JspWriter out = this.pageContext.getOut();                int startInt = Integer.parseInt(start);        int endInt = Integer.parseInt(end);        if(endInt
"); for(int i=startInt; i<=endInt; i++){ out.write("
"); } out.write(""); }catch (Exception e) { throw new JspException(e); } return super.doStartTag(); }}

2、在web-inf下编写tld定义文件

1.0
1.2
ytag
TestSelectTag
com.taglib.TestTag
empty
name
true
true
start
true
true
end
true
true

3、在web.xml中加入定义的标签

/yzlTestTag
/WEB-INF/yzlTags.tld

4、在jsp中使用

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/yzlTestTag" prefix="ytag"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>          My JSP 'index.jsp' starting page          

 

注意事项

特别说明:在tomcat4.1之后的版本中默认开启了标签缓冲池(websphere和weblogic并不会这么做),所以执行完标签后并不会执行release()方法(_jspDestroy()时才释放),也就是说同一个jsp页面自定义标签不管使用多少次只会存在一个实例,但也并不是每一个标签都会为其创建一个缓冲池,要根据参数来判断,例如:
上面例子中由于参数不同就会创建两个标签缓冲池。 这个问题可以通过设定tomcat的配置文件加以解决:在%tomcat%\conf\web.xml加入enablePooling参数,并设置为false(不缓存自定义标签)。
enablePooling
false
清空%tomcat%\conf\目录

 

 

TagSupport类的几个重要方法说明

doStartTag()      在开始标签属性设置后调用,如果返回SKIP_BODY则忽略标签之中的内容,如果返回EVAL_BODY_INCLUDE则将标签体的内容进行输出doEndTag()         在结束标签之前调用,返回SKIP_PAGE跳过整个jsp页面后面的输出,返回EVAL_PAGE执行页面余下部分release()          生命周期结束时调用

 

tld文件定义的相关配置说明

1.0
1.2
ytag
TestSelectTag
com.taglib.TestTag
empty
name
false
    
true

 

 

 

 

 

转载于:https://www.cnblogs.com/yangzhilong/archive/2013/03/28/2986684.html

你可能感兴趣的文章
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
无法根据中文查找
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
转载 python多重继承C3算法
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
css文本溢出显示省略号
查看>>
git安装和简单配置
查看>>
面向对象:反射,双下方法
查看>>
鼠标悬停提示文本消息最简单的做法
查看>>
Java面向对象重要关键字
查看>>
课后作业-阅读任务-阅读提问-2
查看>>
面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序...
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>