关于自定义标签 jsp
2007-06-22 11:04
387 查看
自定义标签的使用需要四步:
第一、编写用于实现功能的.java 文件。
第二、编写该 .java 文件对应的 .tdl文件。
第三、在web.xml中添加你自定义的标签
第四、在页面的头中,引入,然后在页面中使用。
举例:以List标签为例
第一、编写用于实现功能的.java 文件。
package com.gwssi.wssl.taglib;
import java.util.*;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import org.jdom.*;
public class ListTag extends BodyTagSupport {
StringBuffer results = new StringBuffer();
private String key;
public void setKey(String key) {
this.key = key;
}
public String getKey() {
return key;
}
public ListTag() {
}
public int doStartTag() throws JspException {
return EVAL_BODY_BUFFERED;
}
public int doEndTag() throws JspException {
//获得请求对象
ServletRequest request = pageContext.getRequest();
//从请求对象中获得元素对象
Element e = (Element) request.getAttribute(key);
if (e != null) {
//从元素对象中获得子对象集
String other=e.getAttributeValue("other");
List children = e.getChildren();
Iterator iterator = children.iterator();
while (iterator.hasNext()) {
Element row = (Element) iterator.next();
List attributes = row.getAttributes();
Iterator it = attributes.iterator();
results.append("<tr>");
while (it.hasNext()) {
Attribute attributename = (Attribute) it.next();
String attributevalue = attributename.getValue();
results.append("<td ");
results.append(other);
results.append(">");
results.append(attributevalue);
results.append("</td>");
}
results.append("</tr>");
}
}
try {
pageContext.getOut().println(results);
} catch (Exception ex) {
System.out.println(new Date().getTime());
ex.printStackTrace();
}
return super.doEndTag();
}
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
public void release() {
bodyContent = null;
super.release();
}
}
第二、编写该 .java 文件对应的 .tdl文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>saic</shortname>
<uri>http://jakarta.apache.org/struts/tags-template</uri>
<tag>
<name>list</name>
<tagclass>com.gwssi.wssl.taglib.ListTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>key</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
第三、在web.xml中添加你自定义的标签 (wssl 但实际中却没有这个……)
<taglib>
<taglib-uri>/WEB-INF/saic.tld</taglib-uri>
<taglib-location>/WEB-INF/saic.tld</taglib-location>
</taglib>
第四、在页面的头中,引入,然后在页面中使用。
<%@taglib uri="/WEB-INF/saic.tld" prefix="saic" %>
使用:<saic:list>……</saic:list>
第一、编写用于实现功能的.java 文件。
第二、编写该 .java 文件对应的 .tdl文件。
第三、在web.xml中添加你自定义的标签
第四、在页面的头中,引入,然后在页面中使用。
举例:以List标签为例
第一、编写用于实现功能的.java 文件。
package com.gwssi.wssl.taglib;
import java.util.*;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import org.jdom.*;
public class ListTag extends BodyTagSupport {
StringBuffer results = new StringBuffer();
private String key;
public void setKey(String key) {
this.key = key;
}
public String getKey() {
return key;
}
public ListTag() {
}
public int doStartTag() throws JspException {
return EVAL_BODY_BUFFERED;
}
public int doEndTag() throws JspException {
//获得请求对象
ServletRequest request = pageContext.getRequest();
//从请求对象中获得元素对象
Element e = (Element) request.getAttribute(key);
if (e != null) {
//从元素对象中获得子对象集
String other=e.getAttributeValue("other");
List children = e.getChildren();
Iterator iterator = children.iterator();
while (iterator.hasNext()) {
Element row = (Element) iterator.next();
List attributes = row.getAttributes();
Iterator it = attributes.iterator();
results.append("<tr>");
while (it.hasNext()) {
Attribute attributename = (Attribute) it.next();
String attributevalue = attributename.getValue();
results.append("<td ");
results.append(other);
results.append(">");
results.append(attributevalue);
results.append("</td>");
}
results.append("</tr>");
}
}
try {
pageContext.getOut().println(results);
} catch (Exception ex) {
System.out.println(new Date().getTime());
ex.printStackTrace();
}
return super.doEndTag();
}
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
public void release() {
bodyContent = null;
super.release();
}
}
第二、编写该 .java 文件对应的 .tdl文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>saic</shortname>
<uri>http://jakarta.apache.org/struts/tags-template</uri>
<tag>
<name>list</name>
<tagclass>com.gwssi.wssl.taglib.ListTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>key</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
第三、在web.xml中添加你自定义的标签 (wssl 但实际中却没有这个……)
<taglib>
<taglib-uri>/WEB-INF/saic.tld</taglib-uri>
<taglib-location>/WEB-INF/saic.tld</taglib-location>
</taglib>
第四、在页面的头中,引入,然后在页面中使用。
<%@taglib uri="/WEB-INF/saic.tld" prefix="saic" %>
使用:<saic:list>……</saic:list>
相关文章推荐
- 关于jsp页面自定义jstl标签简单项目配置
- 关于jsp自定义标签
- 关于打包自定义标签,并导入项目使用时,出现java.lang.NoClassDefFoundError: JspException异常,解决方法和注意事项!
- 关于自定义标签 jsp
- 关于jsp2.0中简单的自定义标签
- JSP自定义简单标签入门之带有属性
- JavaWeb之 JSP:自定义标签
- JavaWeb之 JSP:自定义标签
- 看jstl标签做个类似 的 自定义jsp 页面标签
- 自定义JSP中的Taglib标签之一简单入门篇(无参数的自定义标签)
- 关于jsp标签
- Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示
- 第十八天3月14日之JSP标签,自定义标签和jstl
- Jsp_demo:自定义标签
- JSP:自定义标签——开发实例[3]
- JSP自定义标签开发Foreach迭代标签
- JSP自定义标签开发入门
- JSP:自定义标签之开发迭代标签
- 自定义JSP标签
- Jsp自定义分页标签