博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义JSP中的Taglib标签之一简单入门篇(无参数的自定义标签)
阅读量:3740 次
发布时间:2019-05-22

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

今天写了个简单的基于jsp2.0的自定义Taglib标签,JSP2规范简化了标签库的开发,在JSP2中开发标签库只需如下几个步骤:

  1. 开发自定义标签处理类;
  2. 建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库对应多个标签;
  3. 在JSP文件中使用自定义标签。

1 开发自定义标签类
当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。
自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标签类还有如下要求。

  1. 如果标签类包含属性,每个属性都有对应的getter和setter方法。
  2. 重写doTag()或者doStartTag()或doEndTag()方法方法,这个方法负责生成页面内容。

首先介绍是不带属性的标签以HelloWorld为例:

Java代码如下:

public class HelloWorldTag extends TagSupport {	private static final long serialVersionUID = -3382691015235241708L;	@Override	public int doEndTag() throws JspException {		try {			pageContext.getOut().write("Hello World !");			return super.doEndTag();		} catch (JspException e) {			e.printStackTrace();			return 0;		} catch (IOException e) {			e.printStackTrace();			return 0;		}	}	@Override	public int doStartTag() {		try {			pageContext.getOut().write("Hello World");			return super.doStartTag();		} catch (JspException e) {			e.printStackTrace();			return 0;		} catch (IOException e) {			e.printStackTrace();			return 0;		}	}}

注意:

问题1:tagsupport中的dostartTag和doEndTag这两个方法有什么区别

doStartTag是在扫描到起始标签时调用,doEndTag是在扫描到结束标签是调用。  
  例如:<helloWorld>  helloWorld</helloWorld>  
  则jsp引擎分析到<helloWorld>   时调用doStratTag,   分析到</helloWorld>时调用doEndTag

2 建立TLD文件
TLD是Tag Library Definition的缩写,即标签库定义,文件的后缀是tld,每个TLD文件对应一个标签库,一个标签库中可包含多个标签,TLD文件也称为标签库定义文件。
标签库定义文件的根元素是taglib,它可以包含多个tag子元素,每个tag子元素都定义一个标签。通常我们可以到Web容器下复制一个标签库定义文件,并在此基础上进行修改即可。例如Tomcat6.0,在webapps\examples\WEB-INF\jsp2路径下包含了一个jsp2-example-taglib.tld文件,这就是示范用的标签库定义文件。
将该文件复制到Web应用的WEB-INF/路径,或WEB-INF的任意子路径下,并对该文件进行简单修改,修改后的helloworld.tld文件代码如下:

1.0
myhelloworld
helloWorld
org.lxh.taglib.HelloWorldTag
empty

转载地址:http://xxlin.baihongyu.com/

你可能感兴趣的文章
scala符号初体验
查看>>
kafka生产者常用参数含义
查看>>
mysql编写函数
查看>>
面试笔试题之hql
查看>>
sql函数之cast()
查看>>
hql中substr函数截取字符串匹配
查看>>
mysql之指定ip、用户、数据库权限
查看>>
zookeeper的读和写数据流程(有图欧)
查看>>
bin/schematool -dbType mysql -initSchema HiveMetaException: Failed to get schema version.
查看>>
flink知识总结
查看>>
flink之检查点(checkpoint)和保存点(savepoint)的区别
查看>>
Linux系统编程---进程I/O
查看>>
spring学习知识补充
查看>>
杂文之生成随机字符串
查看>>
springBoot基础(一)
查看>>
springBoot基础(二)
查看>>
在springBoot中使用Mapper类问题
查看>>
filebeat___log -input
查看>>
GitHub使用
查看>>
关于学习Java的一点点心得。附Dos命令的基操
查看>>