JSP自定义标签
2015-03-15 21:29
225 查看
JSP自定义标签:
编写标签对应的实现类时,需要重载BodyTagSupport类的方法:doStartTag(), doEndTag()。自定义标签的步骤:
(1)第一步:开发标签实现类。
(2)第二步:编写标签描述tld文件,并将tld文件放于当前应用的/WEB-INF目录下。
(3)在JSP页面中声明并调用标签。
第一步:即编写Java代码,编写标签对应的实现类时,需要重载BodyTagSupport类的方法:doStartTag(), doEndTag()。
//一下代码打印出 hello + name;
package hall;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class test_tag extends TagSupport {
private String name = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int doEndTag() throws JspException {
try {
JspWriter out = pageContext.getOut();
out.print("hello !" + name);
} catch (Exception e) {
throw new JspException(e);
}
return EVAL_PAGE;
}
}
第二步:编写后缀名为tld的文件:
<?xml version="1.0" encoding="UTF-8"?> (文件头)
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>mytag</short-name> (标签库的名称)
<tag>
<description>打印页面</description> (简单描述该标签功能,不写也行)
<name>print</name>
(标签名,调用该标签时需要用到)
<tag-class>hall.test_tag</tag-class>(Java代码的目录,格式是:包名.类名)
<body-contnt>empty</body-contnt> (该案例标签体为空,若不为空则写JSP)
<attribute>
<name>name</name>
(指定属性的名称)
<required>false</required>
(设置该标签是否必须指定)
<rtexprvalue>false</rtexprvalue> (指明该属性能否接受JSP表达式)
</attribute>
</tag>
</taglib>
第三步:编写JSP代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="/WEB-INF/test_tag.tld" prefix="test_tag"%>(uri为tld文件的路径,prefix为调用这个标签的前缀)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Test tag <test_tag:print name="firhter"/>
(调用标签:前缀+标签名,前缀在上面自己设置,标签名在.tld文件里)
</body>
</html>
运行结果:
自定义带有体的标签:
开发标签,可实现BodyTag接口,也可从BodyTag接口的实现类BodyTagSupport继承,一般从BodyTagSupport类继承开发。编写标签对应的实现类时,需要重载BodyTagSupport类几个方法:doStartTag(), setBodyContent(), doInitBody(), doAfterBody(), doEndTag(),他们执行顺序如下:doStartTag()→doInitBody()→setBodyContent()→doAfterBody()→doEndTag()
package hall;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class test_tag1 extends BodyTagSupport{
public int doStartTag(){}
//----标签体执行完后调用此方法----
public int doInitBody(){}
public int setBodyContent(){}
public int doAfterBody(){}
//----标签结束时调用此方法-------
public int doEndTag(){}
}
相关文章推荐
- JSP自定义标签
- 【Tips】使用自定义标签时遇到org.apache.jasper.JasperException: Unable to compile class for JSP
- jsp自定义标签switch、case、default ---尚未写完
- 心得11--jsp自定义标签案例分析
- JSP 中自定义标签方法 小结
- jsp自定义标签--->张国亮总结心得第四季
- JSP自定义标签必知必会
- jsp自定义标签系列之---<function>用法实力
- 使用自定义标签实现JSP页面和代码的分离 - Q.yuhen(转载)
- 读书笔记-JSP自定义标签
- (转)掌握jsp自定义标签:(二)
- JSP 自定义标签
- JSP自定义标签-日期格式化
- jsp使用自定义标签taglib分页系列——ColumndeleteTag.java
- jsp自定义标签
- JSP自定义标签开发(八)—— xx.tag自定义标签开发之分页标签(jquery + div +css 美化)
- JSP之自定义标签
- JSP 自定义标签tld--页面片段fragment
- jsp中用自定义标签实现简单的分页
- JSP自定义标签(一)