Simple的生命周期:
1.在jsp中使用这个标签的实例后,调用setJspContext()
2.调用setParent():这个方法是在有标签嵌套的情况下调用
3.setters
4.setJspBody():如果标签体有body,调用此方法
5.doTag():所有的标签逻辑,业务计算,迭代都在这里实现
6.doTag() return的时候锁定属性值
和1TagSupport.2BodyTagSupport的区别:
没有doS,doE方法
doTag()只调用一次
没有标签池,每次再用的话需要从新创建
在body中不能有表达式
API:
SimpleTag接口和SimpleTagSupport实现类
引例1:
程序目标:有if功能的自定义标签
知识点:
1.JspFragment对象,原始body
2.getJspBody()将得到body
3.invoke(null):body的方法,执行body
4.tld的写法:在<body-content>中写scriptless
java类:
package yuchen.ctab.simpleTag.s1;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.*;
public class SimpleIf extends SimpleTagSupport{
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>private boolean cond;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>public void setCond(boolean cond) {</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>this.cond = cond;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>@Override</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>public void doTag() throws JspException, IOException {</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// TODO Auto-generated method stub</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>JspFragment body=getJspBody();//原始body</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if(this.cond){</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>getJspBody().invoke(null);//执行body</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
}
tld:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>"<a href="http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd</a>"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<taglib>
<wbr><wbr><wbr><wbr><tlib-version>1.0</tlib-version></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><jsp-version>2.0</jsp-version></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><short-name>simpleif</short-name></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><uri>/mysimpleif</uri></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><tag></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><name>if</name></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><tag-class>yuchen.ctab.simpleTag.s1.SimpleIf</tag-class></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><body-content>scriptless</body-content></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><attribute></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><name>cond</name></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><required>true</required></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><rtexprvalue>true</rtexprvalue></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></attribute></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></tag></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
</taglib>
jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
<wbr><wbr><wbr><wbr>pageEncoding="ISO-8859-1"%></wbr></wbr></wbr></wbr>
<%@taglib prefix="mysimpleif" uri="/mysimpleif" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<wbr><wbr><wbr><wbr><wbr><mysimpleif:if cond="true"></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>hello world!</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></mysimpleif:if></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><mysimpleif:if cond="false"></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>hello world!</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></mysimpleif:if></wbr></wbr></wbr></wbr></wbr>
</body>
</html>
引例2:
带有while循环功能的标签
知识点:
doTag方法只执行一次
invoke(null)null为默认的输出流,相当于getJspContext().getOut()
java类:
package yuchen.ctab.simpleTag.s2;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.*;
public class SimpleWhile extends SimpleTagSupport{
<wbr><wbr><wbr><wbr><wbr>private int counts;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>public void setCounts(int counts) {</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>this.counts = counts;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>@Override</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>public void doTag() throws JspException, IOException {</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>// TODO Auto-generated method stub</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>JspFragment body=getJspBody();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>for(int i=0;i<this.counts;i++){</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>body.invoke(null);//null为默认的输出流,相当于</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//getJspContext().getOut()</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
}
tld:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>"<a href="http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd</a>"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<taglib>
<wbr><wbr><wbr><wbr><tlib-version>1.0</tlib-version></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><jsp-version>2.0</jsp-version></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><short-name>simplewhile</short-name></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><uri>/mysimplewhile</uri></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><tag></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><name>loop</name></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><tag-class>yuchen.ctab.simpleTag.s2.SimpleWhile</tag-class></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><body-content>scriptless</body-content></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><attribute></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><name>counts</name></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><required>true</required></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><rtexprvalue>true</rtexprvalue></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></attribute></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr></tag></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>
</taglib>
jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
<wbr><wbr><wbr><wbr>pageEncoding="ISO-8859-1"%></wbr></wbr></wbr></wbr>
<%@taglib prefix="mysimplewhile" uri="/mysimplewhile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<wbr><wbr><wbr><wbr><wbr><mysimplewhile:loop counts="5"></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>hello world<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr></mysimplewhile:loop></wbr></wbr></wbr></wbr></wbr>
</body>
</html>
相关推荐
jsp使用自定义标签taglib分页系列——完整例子
一个tag就是一个普通的java类,它唯一特别之处是它必须继承TagSupport或者BodyTagSupport类。这两个类提供了一些方法,负责jsp页面和你编写的类之间的交互,例如输入,输出。而这两个类是由jsp容器提供的,无须开发...
讲述Taglib 自定义标签
NULL 博文链接:https://wujie2008.iteye.com/blog/1694631
Taglib自定义标签.doc
使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 <%@ taglib uri="/priveliege" prefix=...
feilong-taglib,是 JSP常用自定义标签集 主要由两部分组成 Common 包含所有自定义标签的base类,以及常用的自定义标签 和el function taglib 说明 isContains 判断一个值,...
自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标签类还有如下要求。 如果标签类包含属性,每个属性都有对应的getter和setter方法。 重写doTag()...
SSHConformity【display标签和taglib标签】,display标签,pager-taglib标签
idea需要的taglib标签库包,idea没有自带的taglib标签库,需要手动导入taglib包,并且配置对应的路径,进入“settings”设置选项,然后搜“DTD”然后如下图,在左边的标签选项卡找到“Schemas and DTDS” ,在url的...
带有参数的自定义标签,比较简单的哦
JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: ...使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jsp自定义标签,比如说if,foreach,out,format
在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不需要Struts2的支持,一般情况下,只需要继承javax.servlet.jsp.tagext.BodyTagSupport类,重写doStartTag,doEndTag等...
一个完整的工程,放到tomcat里就可以用了,很好用,采用自定义标签实现分页
这样在界面jsp中引入其中的标签库或者标签库文件,然后才可以正常使用其中定义的标签。 代码如下:<%@ taglib prefix =”bean” uri= “http://struts.apache.org/tags-bean” %> <%@ taglib
SSHConformity【display标签和taglib标签缺架包】,ssh整合,分页,display标签,pager-taglib标签
自定义标签实现分页,分页信息都封装在一个继承自TagSupport的java文件中,自定义一个tld文件,jsp页面通过taglib指令引入tld文件,使用自定义标签。
资源内容:java自定义标签开发;JSP页面中自定义标签详解教程;JSP自定义标签简介;taglib_原理和实现;更多场景的示例Demo;