首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> J2EE >> 应用服务器 >> 正文

J2EE自定义标签的详细

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;

    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>\"); [Page]
                    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 [Page]

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

[1] [2] 下一页

【责编:Ken】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航