当前位置:首页 > 网络编程 > 软件语言 > J2EE > J2EE自定义标签的详解

J2EE自定义标签的详解

点击次数:52 次 发布日期:2008-11-11 16:58:05 作者:源代码网
源代码网推荐
广告载入中

源代码网整理以下1,关于自定义标签的几个重要组成部分:

源代码网整理以下继承的类:javax.servlet.jsp.tagext.*:TagSupport

源代码网整理以下一个属性: protected PageContext pageContext
两个方法: public int doStartTag()
   public int doEndTag()
三个常量: SKIP_BODY,SKIP_PAGE,EVAL_PAGE
   SKIP_PAGE,EVAL_PAGE是doEndTag()方法的返回值

源代码网整理以下标签库描述文件 (*.tld)

源代码网整理以下2,流程(工具:eclipse):

源代码网整理以下1,           新建一个web project

源代码网整理以下2,            在项目下新建一个包,包里建类,继承TagSupport

源代码网整理以下3,            完成标签处理类

源代码网整理以下
package demo.tag;

软件开发网 www.mscto.com

源代码网整理以下import javax.servlet.jsp.JspException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.*;
//需要导入的几个常用的包

源代码网整理以下@SuppressWarnings("serial")
public class TagDemo extends TagSupport ...{

源代码网整理以下    private int pageSize;//pageSize属性,控制页面显示的个数,并且要生成get和set方法

源代码网整理以下    public int getPageSize() ...{
        return pageSize;
    }

源代码网整理以下    public void setPageSize(int pageSize) ...{
        this.pageSize = pageSize;
    }

源代码网整理以下//    public int doEndTag() throws JspException {
//        在这里没有用
//        return super.doEndTag();
//    }

源代码网整理以下    public int doStartTag() throws JspException ...{

源代码网整理以下        JspWriter out = pageContext.getOut();//用pageContext获取out,他还能获取session等,基本上jsp的内置对象都能获取,非常有用
       
        for (int i=0; i<pageSize; i++) ...{
            try ...{
                out.println("<table>");
                out.println("<tr>");
                out.println("<td>");
 out.println(i);
                out.println("</td>");
                out.println("<td>");
                out.println(i*10);
                out.println("</td>");
                out.println("</tr>");
                out.println("</table>");
            } catch (IOException e) ...{
                e.printStackTrace();
            }
        }
       
        return SKIP_BODY;
    }

源代码网整理以下   
}

源代码网整理以下 

源代码网整理以下
       1. 标签处理类应该继承自TagSupport类

源代码网整理以下       2.  标签处理类应该覆盖父类的至少一个方法 doStartTag() 或 doEndTag(),如果你覆盖是doStartTag()方法应该返回  SKIP_BODY,      如果你覆盖是doEndTag()方法应该返回 SKIP_PAGE,EVAL_PAGE

源代码网整理以下              3. 充分利用标签处理类的pageContext属性,可以通过该属性获取使用自定义标签的JSP页面的各种对象:

源代码网整理以下getOut(): 获取JSP页面的输出流            out

源代码网整理以下          getRequest: 获取JSP页面的请求对象               request

源代码网整理以下          getSession: 获取JSP页面的会话对象       session

源代码网整理以下          getServletContext: 获取JSP页面的应用对象      application

源代码网整理以下
       4. 如果我们要完成一个带属性自定义标签,需要在标签处理类声明相关属性

源代码网整理以下4,            在WEB-INF下新建一个.tld文件完成标签库描述文件 软件开发网 www.mscto.com

源代码网整理以下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>MyTagLib</short-name>
    <tag>
        <name>showDataTag</name>
        <tag-class>demo.tag.TagDemo</tag-class>
        <attribute>
            <name>pageSize</name>
            <required>true</required>


            <type>Integer</type>
        </attribute>
    </tag>
</taglib>
 

源代码网整理以下    1. 标签库描述文件必须以 tld 为 文件的后缀名

源代码网整理以下    2. 标签库描述文件应该遵守 xml 语法要求

源代码网整理以下    3. 标签库描述文件的根元素 必须是 <taglib>

源代码网整理以下    4. taglib根元素下必须完成以下四个子元素

源代码网整理以下tlib-version :  jsp-version:       short-name: 标签库描述文件的简要说明,且只能出现一次

源代码网整理以下tag: 能出现一到多次 , 描述标签库中的标签名及你要对应的标签处理类

源代码网整理以下5. tag元素下出现的子元素:

源代码网整理以下name子元素:标签名

软件开发网 www.mscto.com

源代码网整理以下tag-class子元素:对应的标签处理类

源代码网整理以下attribute子元素:该标签应包含的属性

源代码网整理以下    6. attribute元素下出现的子元素: 软件开发网 www.mscto.com

源代码网整理以下             name:属性名

源代码网整理以下required:该属性名可不可省略 软件开发网 www.mscto.com

源代码网整理以下type:标签处理类中相关属性的类型

源代码网整理以下5,            在web.xml引入标签库描述文件

源代码网整理以下
<?xml version="1.0" encoding="UTF-8"?>

源代码网整理以下 

源代码网整理以下<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <jsp-config>
      <taglib>
          <taglib-uri>MyFirstTag</taglib-uri>
          <taglib-location>/WEB-INF/MyTagLib.tld</taglib-location>


      </taglib>
  </jsp-config>
</web-app>

源代码网整理以下 

源代码网整理以下       1. 在web.xml中实现taglib元素的子元素:

源代码网整理以下taglib-location: 标签库描述文件在Web应用中的相对路径

源代码网整理以下<taglib-location>/WEB-INF/MyTagLib.tld</taglib-location> 软件开发网 www.mscto.com

源代码网整理以下taglib-uri:该标签库在JSP中用什么名字来调用

源代码网整理以下<taglib-uri>abc</taglib-uri>

源代码网整理以下2. 在要调用标签库的JSP中声明 软件开发网 www.mscto.com

源代码网整理以下声明:<%@ taglib uri="MyFirstTag" prefix="suibian" %>        

源代码网整理以下调用:<suibian:showDataTag pageSize="10"></suibian:showDataTag>


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华