自定义标签库_tag
1)最简单的标签库
1,继承Tag接口,重写doEndTag()方法,返回类型不同后面流程不一样
想要jsp的内容必须重写了setPageContent()方法
再JspWriter out = pageContext.getOut();
package myTag; import java.io.IOException;
import java.util.ResourceBundle; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag; public class Copyright implements Tag {
private PageContext pageContext;
private Tag parent; @Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
JspWriter out = pageContext.getOut();
try {
out.println("<div align=center style='line-height:22px;"
+ "font-size:12px;'>");
out.println(ResourceBundle.getBundle("copyright").getString(
"copyright"));
out.println("</div>");
} catch (IOException e) {
throw new JspException(e);
} return EVAL_PAGE;
} @Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
return SKIP_BODY;
} @Override
public Tag getParent() {
// TODO Auto-generated method stub
return this.parent;
} @Override
public void release() {
// TODO Auto-generated method stub } @Override
public void setPageContext(PageContext pc) {
// TODO Auto-generated method stub
this.pageContext = pc;
} @Override
public void setParent(Tag t) {
// TODO Auto-generated method stub
this.parent = t;
}
}
2,在WEB-INF/目录下创建tld文件(new/other创建
bodycontent有三个值,empty表示不可以有标签体,jsp表示可以有标签体,tagdependent可以有但不会执行
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>taglib</short-name>
<tag>
<name>copyright</name>
<tagclass>myTag.Copyright</tagclass>
<bodycontent>JSP</bodycontent>
</tag>
</taglib>
3,由于我用了资源文件
ResourceBundle.getBundle("copyright").getString("copyright")
所以src文件下一定要有这个文件的copyright属性
4,在jsp中首先声明,<%@ taglib uri="WEB-INF/xxx.tld" prefix="taglib">
下面就可以<taglib:copyright/>
2)带属性的第标签
TagSupport类实现了Tag接口,根据需要重写你的doStartTag或者doEndTag方法就好了
在类里面定义了这个private属性和setter方法
在tld文件也要去添加修改<attribute>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<required>表示是否必需的
<rtexprvalue>表明是否允许EL表达式或者<%= %>
当有多个参数的时候照样子添加private属性和setter方法
3)带标签体的标签
这时候我们可以使用BodyTagSupport来获得更加丰富的控制,如doInitBody()和doAfterBody()方法
不过他们在进行doStartTag或者doEndTag的方法的时候都会返回常量
SKIP_BODY=0//不跑标签体
EVAL_BODY_INCLUDE=1//跑标签体
SKIP_PAGE=5//强行结束
EVAL_PAGE=6//正常结束
使用this.getBodyContent().getString()获得标签体的内容
自定义标签库_tag的更多相关文章
- thinkphp自定义标签库
thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...
- ThinkPHP3.2.3 自定义标签库的使用
ThinkPHP 3.2.3 手册中标签库驱动的地址是: http://www.kancloud.cn/manual/thinkphp/1859 标签库的地址是:http://www.kancloud ...
- JSP自定义标签库
总所周知,JSP自定义标签库,主要是为了去掉JSP页面中的JAVA语句 此处以格式化输出时间戳为指定日期格式为例,简单介绍下JSP自定义标签的过程. 编写标签处理类(可继承自javax.servlet ...
- ThinkPHP - 自定义标签库 - 标签驱动
ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html 创建一个类,继承自TagLib类: <?php / ...
- jsp 自定义标签库
自定义标签的作用 *** 自定义标签的主要用于移除jsp页面中java代码 *** JSP页面中使用自定义的标签 使用jsp指令<% @taglib uri="标签库的uri" ...
- [JSP]自定义标签库taglib
自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...
- JavaWeb学习之JSTL自定义标签库的使用、JSTL自定义函数库(7)
一.自定义标签,步骤 * 确定需求 * <my:date /> 输出当前系统的时间 yyyy-MM-dd hh:mm:ss:SSS * 编写Java类 新建包名:com.yxl.tag,新 ...
- JavaWeb学习记录(十九)——jstl自定义标签库之传统标签
一.传统标签 (1)JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法. public void setPageContext(PageCo ...
- 学习笔记_Java_day13_JSTL_自定义标签库(9)
自定义标签 1 自定义标签概述 1.1 自定义标签的步骤 其实我们在JSP页面中使用标签就等于调用某个对象的某个方法一样,例如:<c:if test=””>,这就是在调用对象的方法一样.自 ...
随机推荐
- spark学习13(spark RDD)
RDD及其特点 1)RDD(Resillient Distributed Dataset)弹性分布式数据集,是spark提供的核心抽象.它代表一个不可变.可分区.里面的元素可并行计算的集合 2)RDD ...
- 鼠标指向表格时 显示更多信息 toolTipController1
//窗体添加 控件 ,然后将GridControl 相关属性栏对应上新加的控件 切记 本文是转帖,稍作修改 private void toolTipController1_GetActiveObjec ...
- java 使用反射
java程序中的对象在运行时会出现两种类型:编译时类型和运行时类型.例如List list = new ArrayList().其中变量list的编译时类型是List,运行时类型是ArrayList ...
- .NET、C#和ASP.NET三者之间的区别与联系
.NET.C#和ASP.NET三者之间的区别与联系 1..net(dot net) .net是一个平台,抽象的平台概念. 实现形式是库:①定义了基本的类型(通用类型系统CTS,common type ...
- Java基础16:Java多线程基础最全总结
Java基础16:Java多线程基础最全总结 Java中的线程 Java之父对线程的定义是: 线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进 ...
- eclipse配置tomcat运行项目访问不加项目名
- HTTP metadata数据
信息元位置 信息元名称 信息元ID 信息元描述 1 MetadataVersion 5000 Metadata版本号 当前版本号为1.0 2 MetadataID 1019 MetadataID 3 ...
- Stylus的基础用法
介绍 在学习一个 Vue.js 项目的过程中,注意到源码中样式的部分并没有用熟悉的 .css 样式文件,而是发现了代码长得和 CSS 相像的 .styl 文件.这个 .styl 以前没见过啊,你是谁? ...
- 详述 SQL 中的 distinct 和 row_number() over() 的区别及用法
1 前言 在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在 ...
- LeetCode OJ:Remove Element(移除元素)
Given an array and a value, remove all instances of that value in place and return the new length. T ...