10_JSP标签库(JSP Tag Library)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
doStartTag SKIP_BODY(不输出标签体) EVAL_BODY_INCLUDE(输出标签体)
带属性的标签
private String color; public void setColor(String color) { this.color = color; } //标签结束时输出 public int doStartTag() throws JspException{ JspWriter out=pageContext.getOut(); try { out.println("<font color=\""+color+"\" >自定义标签输 出doEndTag()</font>"); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; }
JSP标签库(JSP Tag Library)
主讲:宁恒生
主要内容 JSP标签库简介 编写自定义标签的步骤
开发不同的自定义标签
JSP标签库简介 JSP中定义了一套用于开发自定义标签的库
JspTag
Tag
SimpleTag
SimpleTagSupport
IterationTag
TagSupport
JspWriter out = getJspContext().getOut();
out.println("this is a test"); } }
练习 继承SimpleTagSupport类 实现Tag接口 实现以下标签
<newer:GridTag colspan="2" rowspan="5" width="200"/>
编写简单标签类描述 <tag> <name>TagTest</name>
<tag-class>com.web.TagTest</tag-class>
<body-content>jsp</body-content>
<attribute >
<name>color</name> <required>true</required> </attribute> </tag>
处理主体的标签
public int doEndTag() throws JspException { try { System.out.println(bodyContent.getString());
bodyContent.writeOut(bodyContent.getEnclosingWriter());
Tag的生命周期
开始
setPageContext setParent setAttribute
doStartTag
EVAL_BODY_INCLUDE 输出标签体的内容 SKIP_BODY doEndTag EVAL_PAGE SKIP_PAGE
输出页面余下的内容
release
循环标签
public class TagSupportTest extends TagSupport { private int counter; public int doStartTag() throws JspException { counter=0; return EVAL_BODY_INCLUDE; } public int doAfterBody() throws JspException { counter++; if (counter<5){ return EVAL_BODY_AGAIN; } return SKIP_BODY;来自百度文库} }
编写简单标签类描述
Newer.tld <?xml version="1.0" encoding="UTF-8"?> <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/webjsptaglibrary_2_0.xsd "> <tlib-version>1.0</tlib-version> <short-name>牛儿标签库</short-name> <tag> <name>TagTest</name> <tag-class>com.web.TagTest</tag-class> <body-content>empty</body-content> </tag> </taglib>
} catch (IOException e) { e.printStackTrace(); }
return EVAL_PAGE;
}
更简单的写法
public class SimpleTagSupportTest extends SimpleTagSupport { public void doTag() throws JspException, IOException {
使用标签 <%@ taglib uri="/WEB-INF/tlds/newer.tld" prefix="newer" %> <body>
<newer:TagTest/>
</body>
学习几个常量的含义 doEndTag SKIP_PAGE(不输出标签后的内容)
EVAL_PAGE (输出标签后的内容) <body-content>JSP</body-content>
BodyTag
BodyTagSupport
基本概念 标签的类型 简单标签
循环标签
处理主体的标签
PAGE页面
BODY主体
编写简单标签类
public class TagTest implements Tag { private PageContext pageContext; private Tag tag; //标签开始时输出 public int doEndTag() throws JspException { JspWriter out=pageContext.getOut(); try { out.println("自定义标签输出doEndTag()"); } catch (IOException e) { e.printStackTrace(); } return 0; } //标签结束时输出 public int doStartTag() throws JspException{ JspWriter out=pageContext.getOut(); try { out.println("自定义标签输出doStartTag()"); } catch (IOException e) { e.printStackTrace(); } return 0; } //获取标签库的父标签 public Tag getParent() { return tag; } //释放资源 public void release() { } //设置标签库的容器 public void setPageContext(PageContext pageContext) { this.pageContext=pageContext; } //设置标签库的父标签 public void setParent(Tag tag) { this.tag=tag; } }
带属性的标签
private String color; public void setColor(String color) { this.color = color; } //标签结束时输出 public int doStartTag() throws JspException{ JspWriter out=pageContext.getOut(); try { out.println("<font color=\""+color+"\" >自定义标签输 出doEndTag()</font>"); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; }
JSP标签库(JSP Tag Library)
主讲:宁恒生
主要内容 JSP标签库简介 编写自定义标签的步骤
开发不同的自定义标签
JSP标签库简介 JSP中定义了一套用于开发自定义标签的库
JspTag
Tag
SimpleTag
SimpleTagSupport
IterationTag
TagSupport
JspWriter out = getJspContext().getOut();
out.println("this is a test"); } }
练习 继承SimpleTagSupport类 实现Tag接口 实现以下标签
<newer:GridTag colspan="2" rowspan="5" width="200"/>
编写简单标签类描述 <tag> <name>TagTest</name>
<tag-class>com.web.TagTest</tag-class>
<body-content>jsp</body-content>
<attribute >
<name>color</name> <required>true</required> </attribute> </tag>
处理主体的标签
public int doEndTag() throws JspException { try { System.out.println(bodyContent.getString());
bodyContent.writeOut(bodyContent.getEnclosingWriter());
Tag的生命周期
开始
setPageContext setParent setAttribute
doStartTag
EVAL_BODY_INCLUDE 输出标签体的内容 SKIP_BODY doEndTag EVAL_PAGE SKIP_PAGE
输出页面余下的内容
release
循环标签
public class TagSupportTest extends TagSupport { private int counter; public int doStartTag() throws JspException { counter=0; return EVAL_BODY_INCLUDE; } public int doAfterBody() throws JspException { counter++; if (counter<5){ return EVAL_BODY_AGAIN; } return SKIP_BODY;来自百度文库} }
编写简单标签类描述
Newer.tld <?xml version="1.0" encoding="UTF-8"?> <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/webjsptaglibrary_2_0.xsd "> <tlib-version>1.0</tlib-version> <short-name>牛儿标签库</short-name> <tag> <name>TagTest</name> <tag-class>com.web.TagTest</tag-class> <body-content>empty</body-content> </tag> </taglib>
} catch (IOException e) { e.printStackTrace(); }
return EVAL_PAGE;
}
更简单的写法
public class SimpleTagSupportTest extends SimpleTagSupport { public void doTag() throws JspException, IOException {
使用标签 <%@ taglib uri="/WEB-INF/tlds/newer.tld" prefix="newer" %> <body>
<newer:TagTest/>
</body>
学习几个常量的含义 doEndTag SKIP_PAGE(不输出标签后的内容)
EVAL_PAGE (输出标签后的内容) <body-content>JSP</body-content>
BodyTag
BodyTagSupport
基本概念 标签的类型 简单标签
循环标签
处理主体的标签
PAGE页面
BODY主体
编写简单标签类
public class TagTest implements Tag { private PageContext pageContext; private Tag tag; //标签开始时输出 public int doEndTag() throws JspException { JspWriter out=pageContext.getOut(); try { out.println("自定义标签输出doEndTag()"); } catch (IOException e) { e.printStackTrace(); } return 0; } //标签结束时输出 public int doStartTag() throws JspException{ JspWriter out=pageContext.getOut(); try { out.println("自定义标签输出doStartTag()"); } catch (IOException e) { e.printStackTrace(); } return 0; } //获取标签库的父标签 public Tag getParent() { return tag; } //释放资源 public void release() { } //设置标签库的容器 public void setPageContext(PageContext pageContext) { this.pageContext=pageContext; } //设置标签库的父标签 public void setParent(Tag tag) { this.tag=tag; } }