1、一个普通的JSP标签如下图所示:
2、简单标签
1)定义:
无正文无属性或无正文有属性的JSP标签
2)简单标签和正文标签的区别:
3)一个简单无属性标签的示例:
<mytag:helloworld /> 或 <mytag:helloworld></mytag:helloworld>
4)制作简单无属性标签
首先要在对应的 java 文件中实现标签处理类
①扩展javax.servlet.jsp.tagext.TagSupport
②重写public int doEndTag()方法(需要抛出JspException异常)
5)简单无属性标签使用示例
index.jsp(在web/目录下)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="myfn" uri="/WEB-INF/tld/myfn.tld" %> <html> <head> <title>JSTL-自定义无正文标签</title> </head> <body> <myfn:HelloWorld/> </body> </html>
myfn.tld(在web/WEB-INF/tld/目录下)
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>Myfu</short-name> <!-- 直接输出Hello World!--> <tag> <name>HelloWorld</name> <tag-class>cn.qi.Myfu.MyFunctions</tag-class> <!-- 标签正文为空时为empty--> <body-content>empty</body-content> </tag> </taglib>
MyFunctions.java(在src/cn.qi.Myfu/目录下)
package cn.qi.Myfu; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; import java.io.IOException; public class MyFunctions extends TagSupport { @Override public int doEndTag() throws JspException { try { pageContext.getOut().print("hello"); } catch (IOException e) { // 捕获异常并输出在控制台中 throw new JspException(e.getMessage()); } return super.doEndTag(); } }
6)制作简单有属性标签
①扩展javax.servlet.jsp.tagext.TagSupport
②重写public int doEndTag()并抛出JspException异常
③增加类属性 text 及其 Getter 和 Setter 方法
7)简单有属性标签使用示例
index.jsp(在web/目录下)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="myfn" uri="/WEB-INF/tld/myfn.tld" %> <html> <head> <title>JSTL-自定义无正文标签</title> </head> <body> <myfn:printString text="hehe"/> </body> </html>
myfn.tld(在web/WEB-INF/tld/目录下)
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>Myfu</short-name> <tag> <name>printString</name> <tag-class>cn.qi.Myfu.MyFunctions</tag-class> <body-content>empty</body-content> <attribute> <name>text</name> <required>true</required> <!-- 从页面里进行传递--> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
MyFunctions.java(在src/cn.qi.Myfu/目录下)
package cn.qi.Myfu; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; import java.io.IOException; public class MyFunctions extends TagSupport { private String text; public String getText() { return text; } public void setText(String text) { this.text = text; } @Override public int doEndTag() throws JspException { try { pageContext.getOut().print(text); } catch (IOException e) { // 捕获异常并输出在控制台中 throw new JspException(e.getMessage()); } return super.doEndTag(); } }
原文:https://www.cnblogs.com/GjqDream/p/11687996.html