自定义标签库_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=””>,这就是在调用对象的方法一样.自 ...
随机推荐
- Jquery简单的选项卡实现
概述 原来对jQuery用的不是很多,主要就是表单验证这些部分,最近想要更深入的学习jQuery和JavaScript编码,就找来了一些视频进行学习,然后就做了这个简单的选项卡示例.视频学习地址见最后 ...
- PHP练习题二
1.抓取远程图片到本地,你会用什么函数? fsockopen, A 2.用最少的代码写一个求3值最大值的函数. function($a,$b,$c){* W0 z* u6 k+ e. L a: }5 ...
- java处理图片base64编码的相互转换
转载自http://www.cnblogs.com/libra0920/p/5754356.html 直接上代码 import sun.misc.BASE64Decoder; import sun.m ...
- 编写第一个springboot应用
1.1.1. 设置spring boot的parent <parent> <groupId>org.springframework.boot</groupId> ...
- JAVA 泛型意淫之旅(二)
编译器如何处理泛型 泛型类编译后长什么样? 接上文,JAVA 泛型意淫之旅1,成功迎娶白富美后,终于迎来了最振奋人心的一刻:造娃!造男娃还是造女娃?对于我们程序猿来说,谁还在乎是男娃女娃,只要是自己的 ...
- 文件IO大纲
文件流与文件描述符的区别 a) 任何进程在运行时都默认打开3个流对象,(stdin, stdout, stderr)它们都有对应的文件描述符,其文件描述符分别为0,1,2,以后打开的文件描述符的值一般 ...
- yii2:多表查询
啥都不说了,上代码: $list = static::find() ->leftJoin('book', 'book.RID = prices.RID')->select('prices. ...
- linux sed使用(转)
sed入门详解教程 sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作.sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed ...
- 基于Spring MVC实现基于form表单上传Excel文件,批量导入数据
在pom.xml中引入: <!--处理2003 excel--> <dependency> <groupId>org.apache.poi</groupId& ...
- JavaScrip练习
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...