TLD术语解释:标签库描述文件. 如要在JSP页面中实现JSP标签,必须首先定义实现标签的类,然后在标签库描述文件(TLD)中将写好的类映射成jsp标签,最后在JSP文件中使用定义好的标签,就可以生成动态的JSP内容.
比如,我自定义一个out标签,用tld文件描述.
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Simple Tags</short-name>
<uri>/zking</uri>
<!-- hello world标签 -->
<tag>
<!-- 标签名 -->
<name>out</name>
<!-- 标签助手类(实现类) 放入类的全限定名 -->
<tag-class>com.tag.OutTag</tag-class>
<!-- 标签的内容类型:empty表示空标签(使用空标签会报错),jsp表示可以为任何合法的JSP元素 -->
<body-content>JSP</body-content>
<attribute>
<!-- 属性名 -->
<name>value</name>
<!-- 是否为必填项 -->
<required>true</required>
<!--是否可以填jsp表达式 el表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
现在显示一个标签助手类OutTag
public class OutTag extends BodyTagSupport{
//一个属性对应一个实体中的属性
private Object value;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
//继承一个标签类
/**
*
*/
private static final long serialVersionUID = 1L;
//开始标签的方法
@Override
public int doStartTag() throws JspException {
try {
//界面显示接收的属性值
pageContext.getOut().print(value);;
} catch (Exception e) {
e.printStackTrace();
}
//显示标签内容 EVAL_BODY_INCLUDE
//不显示标签内容 SKIP_BODY
return EVAL_BODY_INCLUDE;
}
//结束标签的方法
@Override
public int doEndTag() throws JspException {
//跳过闭签后的内容 直到html闭签 SKIP_PAGE
//不跳过闭签之后的内容 EVAL_PAGE
return EVAL_PAGE;
}
}
SKIP_BODY隐含0 :跳过了开始和结束标签之间的代码。
EVAL_BODY_INCLUDE隐含1:将body的内容输出到存在的输出流中
SKIP_PAGE隐含5 : 忽略剩下的页面。
EVAL_PAGE隐含6:继续执行下面的页
doStartTag()和doEndTag()返回值是在Tag Interface里定义的静态int
任何使用自定义标签
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="z" uri="/zking" %>
<!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=UTF-8">
<title>Out标签</title>
</head>
<body>
<%
String str="哈哈哈,很高兴见到你!";
request.setAttribute("str", str);
%>
<!-- 使用文本输出 -->
<z:out value="这是我的第一个自定义标签"> 噢耶</z:out>
</br>
<!-- 使用EL表达式输出 -->
<z:out value="${str}"></z:out>
<!-- 使用jsp表达式输出 -->
</br>
<z:out value="<%=1+1 %>"></z:out>
</body>
</html>
输出结果为:
以上是较为简单的示范了一下如何使用自定义标签输出,比较浅显易懂,以后会更深入的去了解一下更多关于标签的知识,还请各位 大神多多指教,谢谢,嘻嘻!