关于自定义标签 jsp

来源:互联网 发布:windows 关闭窗口 编辑:程序博客网 时间:2024/05/02 16:29

自定义标签的使用需要四步:  
   
  第一、编写用于实现功能的.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>

自定义标签的使用需要四步:  
   
  第一、编写用于实现功能的.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> 

原创粉丝点击