jsp 定制标签(Custom Tag)

2016-02-19 09:49 23 1 收藏

下面图老师小编跟大家分享jsp 定制标签(Custom Tag),一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - Web开发 】

怎样自己定制标签(Custom Tag)
(整理的学习笔记)
步骤1、创建一个Tag handler class(标记处理器类)
package javax.servlet.jsp.tagext
开发空Body的标签处理器类-----1)implements Tag 2)extends TagSupport
空Body的标签处理器类需要覆盖方法:
doStartTag()
返回值:Tag.SKIP_BODY
doEndTag()
返回值:
1)Tag.EVAL_PAGE:让标签下面的内容继续执行
2)Tag.SKIP_PAGE:让标签下面的内容不执行
开发带Body的标签处理器类-----1)implements BodyTag 2)extends BodyTagSupport
带Body的标签处理器类需要覆盖方法
doStartTag()
返回值:
BodyTag.SKIP_BODY:执行后直接调用doEndTag()方法
BodyTag.EVAL_BODY_INCLUDE:执行后直接调用doAfterBody()方法
BodyTag.EVAL_BODY_BUFFERED:
doEndTag()
返回值:
BodyTag.EVAL_PAGE:标签下面的内容继续执行
BodyTag.SKIP_PAGE:标签下面的内容不执行
doAfterBody()
返回值:
BodyTag.SKIP_BODY:执行后调用doEngTag()方法
BodyTag.EVAL_BODY_AGAIN:执行后调用doAfterBody()方法
步骤2、创建一个tld文件(tag library descriptor)
一个XML格式的文件,用于对标记进行描述
通常放在WEB-INF目录下 (/WEB-INF/*.tld)
abc.tld
?xml version="1.0" encoding="UTF-8" ?
!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"
!-- template test --
taglib
tlib-version1.0/tlib-version
jsp-version1.2/jsp-version
short-nametagSample/short-name
uri/tagSample/uri
descriptionA blank tag library template./description
tag
namewelcome/name
tag-classtagapp.HelloTag/tag-class
body-contentempty/body-content
display-namemy first tag/display-name
small-icon /small-icon
large-icon /large-icon
description /description
attribute
namename/name
requiredtrue/required
rtexprvaluetrue/rtexprvalue
typejava.lang.String/type
/attribute
/tag
/taglib
步骤3.创建一个JSP文件
%@taglib uri="[tld_url]" prefix=""%
%@taglib uri="/WEB-INF/abc.tld" prefix="mike"%
...
mike:welcome name=""/
uri的值可以是:
A、/WEB-INF/mytag.tld ----- uri="/WEB-INF/mytag.tld"
B、tld文件中 uri/tagSample/uri ------ uri="/tagSample"
C、利用web.xml文件映射tld文件与taglib-uri的值 ----- uri="/abc"
taglib
taglib-uri/abc/taglib-uri
taglib-location/WEB-INF/mytag.tld/taglib-location
/taglib
带Body的标签处理器类的方法的注释:
doStartTag()
return value: SKIP_BODY 空BODY标记
EVAL_BODY_INCLUDE 带BODY标记,执行流程进入doAfterBody
EVAL_BODY_BUFFERED 带BODY标记,执行流程进入setBodyContent
doEndTag()
return value: SKIP_PAGE 忽略标记后剩余的JSP内容
EVAL_PAGE 继续执行标记后剩余的JSP内容
doAfterBody()
return value: SKIP_BODY 结束doAfterBody()方法,流程进入doEndTag()
EVAL_BODY_AGAIN 继续执行doAfterBody()方法
SimpleTagSupport
较好的练习题:
一、
1、模仿jstl标签库开发下列标签:
1)sql:setDataSource
属性有:
driver:必须的,可以用表达式
url;必须的,可以用表达式
user:必须的,可以用表达式
password:必须的,可以用表达式
2)sql:query
属性有:
dataSource:必须的,可以用表达式
sql:必须的,可以用表达式
3)sql:update
属性有:
dataSource:必须的,可以用表达式
sql:必须的,可以用表达式
2、开发类似于c:forEach的标签,可以遍历一个集合对象(可选,如不能完成,可直接利用jstl的标签来完成)

来源:https://www.tulaoshi.com/n/20160219/1592263.html

延伸阅读
标签: Web开发
1,TagForm.java 代码如下: package com.tarena.struts.tag.form; import org.apache.struts.action.*; import javax.servlet.http.*; import java.util.*; public class TagForm extends ActionForm { private int id; private String userName; private String password; private int sex; private String[] hobbies; priva...
标签: Web开发
JSP Struts之HTML标签库详解 Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。  标签库  说明  HTML 标签  用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单  Bean 标签  在访问JavaBeans 及其属性,以及定义一个新的bean 时使用  Logic...
手机谷歌浏览器标签定制教程   1、首先,小编解释一下chrome这个新功能:当用户在应用中点击访问到需要跳转外部浏览器时或者应用内网页视图的时候,允许开发者部署定制好的Chrome标签页,直接在应用中显示网页内容。 2、具体的操作方法:用户在点击应用中的一个链接,在应用中打开定制的Chrome的标签,标签里面就显示用户想要查...
标签: Java JAVA基础
  一、前言 (本文译自Orion官方站点) 本文将一步一步介绍在Orion Application Server下定义自己的标签,然后,实现该标签的功能,最后用一个jsp例子测试。 二、建立标签,实现该标签的功能。 1.命名package为:com.acme.mytags(为了和原文相同,我不做改动) package com.acme.mytags; 2.import相关class import javax.servlet...
标签: Web开发
注意,实现的方法必须是静态的 %...@ taglib uri="http://hxex.cn/vote" prefix="vote" % c:forEach var="vote" items="${votes}"         tr             td${vote.name}/td        ...

经验教程

738

收藏

29

精华推荐

JSP 自定义标签之一 简单实例

JSP 自定义标签之一 简单实例

568776186

什么是Tag?

什么是Tag?

村外那口井

WindowTabs给所有软件加个tag

WindowTabs给所有软件加个tag

开始比结局美

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部