自定义JSP标签总结

作者: he_321 | 来源:发表于2016-11-09 01:02 被阅读0次

自定义标签可以实现的功能:

  • 移除jsp中的java代码
  • 控制jsp中的某段程序是否执行
  • 控制jsp页面中的所有内容是否执行
  • 控制jsp中的程序重复执行
  • 修给jsp中的内容。

传统标签库 总结:

创建传统标签
  • 创建jsp标签类继承TagSupport类。
  • 重写doStartTag()方法,在doStartTag()方法中书写程序,此方法在执行开始标签的时候被服务器调用。服务器在遇到标签的时候先调用tag类的setPageContext(pageContext)方法将pageContext类传递进去。
  • 在WEB-INF下创建tld文件,在文件中对标签进行配置。
<?xml version="1.0" encoding="UTF-8" ?>
<taglib 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-jsptaglibrary_2_0.xsd"
    version="2.0">
    <description>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    <short-name>SimpleTagLibrary</short-name>
      //将此标签绑定的uri,通过此uri引用标签
    <uri>http://www.baixinping.com</uri>

<tag>
    <description>Outputs Hello, World</description>
      //引用时的名称
    <name>ha</name>
      //标签类的目录
    <tag-class>baixinping.tag.Ha</tag-class>
     //标签体中是否有内容
    <body-content>empty</body-content>
</tag>
</taglib>
  • 使用:<%@ taglib uri="http://www.baixinping.com" prefix="ha" %>
控制jsp中的某段程序的输出:

1、继承TagSupport
2、重写doStartTag();
3、如果doStartTag()返回TagSupport.SKIP_BODY,则不执行标签体中的内容,如果返回的是TagSupport.EVAL_BODY_INCLUDE则执行标签体中的内容。

控制jsp页面是否执行。
  • 继承TagSupport
  • 重写doEndStart()
  • 如果doEndTag()返回TagSupport.SKIP_PAGE,则不执行余下的jsp中的内容。如果返回TagSupport.EVAL_PAGE,则继续执行余下的内容。
控制部分代码重复执行
  • 继承继承TagSupport
  • 重写doAfterBody()方法,此方法在执行完标签体中的内容之后执行。
  • 如果doAfterBody()方法返回TagSupport.EVAL_BODY_AGAIN,则继续执行标签体中的内容。如果返回TagSupport.SKIP_BODY则继续执行doEndTag()方法。
修改jsp中的内容
  • 继承BodyTagSupport。此类在执行完doStartTag()完之后会自动执行setBodyContent()方法将标签体中的内容传递给标签类。然后执行doEndTag方法。
  • doEndTag()方法中通过this.getBodyContent()获取标签体内容对象,然后对其进行修改即可。

简单标签库使用 总结:

继承SimpleTagSupport。tld文件中声明有标签体使用<body-content>scriptless</body-content>,意思是标签体中不能有脚本代码(java程序)

简单标签执行步骤(原理):

  • 遇到简单标签之后,先实例化标签类。
  • 调用setJspContext()pageContexr()将jsp页面对象传递过来。
  • 调用setParent()方法将标签的父标签传递过来,如果没有父标签传递null.
  • 调用setJspBody()将封装了标签体内容的JspFragment对象传递过来。
  • 执行标签(调用doTag()方法),控制标签之后的内容不被执行,只需要抛出new SkipPageException()即可。
    JspFragment content = this.getJspBody();
    content.invoke(this.getJspContext().getOut());
    使用invoke()方法将内容写入对应的流缓冲区中。
  • 垃圾回收器回收标签对象(在传统标签中,标签对象会驻留在内存中继续服务之后的调用)

标签定义属性:

  • 在标签类中创建属性值,并创建set方法。
  • 在tld文件中声明属性。
            <tag>
            <description>Outputs Hello, World</description>
            <name>test6</name>
            <tag-class>baixinping.tag.Test6</tag-class>
            <body-content>scriptless</body-content>
            <attribute>
                //属性名
                <name>count</name>
                //属性是否必须
                <required>true</required>
                //属性值是否可以使用表达式
                <rtexprvalue>true</rtexprvalue>
            </attribute>
            </tag>

注意:set方法会自动有服务器调用,服务器赋值只能够进行8中基本数据类型转换。若是复杂类型,则在jsp页面中使用表达式。

相关文章

  • 自定义jsp标签

    笔记 JSP自定义标签 自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servl...

  • 14.自定义标签库开发(我的JavaEE笔记)

    一、 自定义标签简介 自定义标签主要用于移除jsp页面中的java代码。工程(tag) 使用自定义标签移除jsp页...

  • JavaWeb之自定义标签

    JSP标签 JSP脚本不够方便,与HTML代码混杂,因此采用具有和HTML标签类似的JSP自定义标签 步骤: 编写...

  • jsp

    jsp介绍 jsp语法 jsp指令 EL表达式 自定义标签 jsp指令 - page jsp指令 - includ...

  • javaweb自定义标签

    为什么使用自定义标签 减少在jsp写java代码。简言之,就是简化jsp。 如何创建自定义标签 1、方式一 :实现...

  • 2022-03-26 Web基础知识(15)- JSP (七)

    JSP 标准标签库(JSTL)、JSP 自定义标签 查看内容请点击下面的链接: https://www.cnblo...

  • 标签学习01

    1、标签的作用 自定义标签是属于JSP规范的。 开发原则:JSP中不要使用<%%>(标签替换)和<%=%>(EL表...

  • EL表达式与JSP标签(学习笔记)

      本文内容主要介绍EL表达式、JSP标准标签库(JSTL)、JSP自定义标签库。其中拿EL表达式和JSP技术做对...

  • 自定义JSP标签总结

    自定义标签可以实现的功能: 移除jsp中的java代码 控制jsp中的某段程序是否执行 控制jsp页面中的所有内容...

  • 自定义标签属性

    本文主要介绍在JSP中自定义标签属性和自定义标签来满足实际业务需要(自定义标签,以后写了例子后进行补充;此例仍有可...

网友评论

    本文标题:自定义JSP标签总结

    本文链接:https://www.haomeiwen.com/subject/bxyzuttx.html