zoukankan      html  css  js  c++  java
  • 自定义标签

        自定义标签
        实现simpleTag接口  继承这个类就可以了SimpleTagSupport 它实现 了接口simpleTag
            重写5个方法
                  setJspContext方法 用于把JSP页面的pageContext对象传递给标签处理器对象
                 setParent方法 用于把父标签处理器对象传递给当前标签处理器对象
    getParent方法 用于获得当前标签的父标签处理器对象
    setJspBody方法 用于把代表标签体的JspFragment对象传递给标签处理器对象
    doTag方法 用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。
    在doTag方法中可以抛出javax.servlet.jsp.SkipPageException异常,
    用于通知WEB容器不再执行JSP页面中位于结束标记后面的内容,
    这等效于在传统标签的doEndTag方法中返回Tag.SKIP_PAGE常量的情况。
              当web容器开始执行标签时,会调用如下方法完成标签的初始化 WEB容器调用标签处理器对象的setJspContext方法,将代表JSP页面的pageContext对象传递给标签处理器对象。 WEB容器调用标签处理器对象的setParent方法,将父标签处理器对象传递给这个标签处理器对象。注意,只有在标签存在父标签的情况下,WEB容器才会调用这个方法。 如果调用标签时设置了属性,容器将调用每个属性对应的setter方法把属性值传递给标签处理器对象。如果标签的属性值是EL表达式或脚本表达式,则WEB容器首先计算表达式的值,然后把值传递给标签处理器对象。 如果简单标签有标签体,容器将调用setJspBody方法把代表标签体的JspFragment对象传递进来。
             执行标签时: 容器调用标签处理器的doTag()方法,开发人员在方法体内通过操作JspFragment对象,就可以实现是否执行、迭代、修改标签体的目的。
    1.新建类继承实现 了simpleTag接口的类
     
    /**
     * 对外输出一名Hello
     *
     * @author sunyb
     *
     */
    public class tag_son extends SimpleTagSupport {
     
         private PageContext pc;
     
         @Override
         public void doTag() throws JspException, IOException {
                pc.getOut(). write("Hello");
         }
     
         @Override
         public void setJspContext(JspContext pc) {
                this. pc = (PageContext) pc;
         }
     
    }
     
     
    2.添加tld文件进行类及uri的配置文件
     < tlib-version>1.0</tlib-version >
     < short-name> myc</ short-name>
     < uri> http://www.it.cast.org.myc</ uri>
     
     
     <!-- 配置自定义标签不带主体的 -->
     < tag>
     <!-- 配置标签名称 -->
     < name> print</ name>
      <!-- 配置标签类 -->
     < tag-class> tag.tag_son</ tag-class>
     <!-- 配置标签主体 -->
     < body-content>empty</body-content >
     </ tag>
     
     
     <!-- 配置自定义标签带主体的 -->
    <tag>
     <!-- 配置标签名称 -->
     < name> out</ name>
      <!-- 配置标签类 -->
     < tag-class> tag.tag_withBody</ tag-class>
     <!-- 配置标签主体 -->
     < body-content>scriptless </body-content >
     </ tag>
    </taglib>
     
    3.引用进到页面中
     <%@ taglib uri ="http://www.it.cast.org.myc" prefix= "myc" %>
    <myc:print/>
  • 相关阅读:
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
    简单的使用SLF4J门面和log4j
    详细的Log4j使用教程
    java的Mybatis动态代理方式(二)
    java的一个基础的Mybatis例子(一)
    java的注解学习
    ArrayList输出的几种方法
    自己写的一个java链接数据库的类
    ipv4的TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)
    tomcat的CATALINA_HOME环境变量可以不用设置
  • 原文地址:https://www.cnblogs.com/haofaner/p/5645113.html
Copyright © 2011-2022 走看看