自定义标签基础

一、自定义标签作用

  自定义标签主要用于移除Jsp页面中的java代码。

二、实现步骤

  1、编写一个实现Tag接口的Java类,把页面java代码移到这个java类中(便签处理器类)。

  Tag接口定义了doStartTag()、doEndTag()、getParent()、setParent()、release()、setPageContext()这六个接口方法;

  SUN公司提供了TagSupport类供开发者调用继承。方便开发;开发者只需覆盖doStartTag()方法,dostartTag与doEndTag都行,习惯上放在doStartTag方法内;

  2、编写标签库描述符(tld)文件,在tld文件中对表签处理器类描述成一个标签。

  具体tld文件格式及内容配置可参考tomcat服务器中提供的样例中的tld文件。

三、原理

  1、web服务器解析jsp页面

  2、JSP解析器遇到自定义标签后实例化标签对应的处理器类,该类是Tag的实现类

  3、执行该类的setPageContext()方法,传递pageContext对象

  4、检查该标签是否存在父标签,如果有,则把父标签作为一个对象,调用setParent)()方法传递给该处理器类,如果没有,仍然调用setParent()方法,传值为null。

  5、完成以上标签初始化工作后,服务器就开始执行标签,这时遇到标签的开始标签,就执行doStrartTag()方法。

  6、如果有标签体,这时服务器一般会执行标签体  //此处较为复杂,另有专题细讲

  7、服务器遇到结束标签,则调用标签处理器类的doEndTag方法

  8、标签执行完后,服务器一般情况下会调用release()方法释放标签工作时所占用的资源

  注:具体标签怎么执行可以查看web服务器将jsp页面翻译后的servlet源码

    //我查看时与视频中讲的源码实现方式不一致,大致是因为tomcat的版本不同,内部实现做了修改

四、自定义标签功能扩展

  自定义标签除了可以移除jsp页面java代码外,它也可以实现一下功能:

    控制jsp页面某一部分内容是否执行。

    控制整个jsp页面是否执行。  

    控制jsp页面内容重复执行。

    修改jsp页面内容输出。

  

posted on 2018-02-23 11:23  songpan  阅读(268)  评论(0编辑  收藏  举报

导航