TLD术语解释:标签库描述文件. 如要在JSP页面中实现JSP标签,必须首先定义实现标签的类,然后在标签库描述文件(TLD)中将写好的类映射成jsp标签,最后在JSP文件中使用定义好的标签,就可以生成动态的JSP内容.
比如,我自定义一个out标签,用tld文件描述.
<!DOCTYPE taglibPUBLIC "-//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;//开始标签的方法@Overridepublic int doStartTag() throws JspException {try { //界面显示接收的属性值pageContext.getOut().print(value);;} catch (Exception e) {e.printStackTrace();}//显示标签内容 EVAL_BODY_INCLUDE//不显示标签内容 SKIP_BODYreturn EVAL_BODY_INCLUDE; }//结束标签的方法@Overridepublic int doEndTag() throws JspException {//跳过闭签后的内容 直到html闭签 SKIP_PAGE//不跳过闭签之后的内容 EVAL_PAGEreturn 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>
输出结果为:
以上是较为简单的示范了一下如何使用自定义标签输出,比较浅显易懂,以后会更深入的去了解一下更多关于标签的知识,还请各位 大神多多指教,谢谢,嘻嘻!