问题:自定义标签的执行过程?
http://localhost:8080/day14/definedLables.jsp 如何访问到自定义标签?
前提: tomcat服务器启动时,加载到每个web应用,加载每个web应用的WEB-INF目录下的所有文件!!!例如。web.xml, tld文件!!!
1)访问definedLables.jsp资源
2)tomcat服务器把jsp文件翻译成java源文件->编译class->构造类对象->调用_jspService()方法
3)检查jsp文件的taglib指令,是否存在一个名为www.mylables.showip的tld文件。如果没有,则报错
4)上一步已经读到iplable.tld文件
5)读到<show:showIp> 到iplable.tld文件中查询是否存在<name>为showip的<tag>标签
6)找到对应的<tag>标签,则读到<tag-class>内容
7)得到 defineLables.showIp,Class文件。
构造ShowIpTag对象,然后调用ShowIpTag里面的方法
问题: 自定义标签处理器类的生命周期
实现SimpleTag接口才能成为自定义标签处理器类:
void setJspContext(JspContext pc) --设置pageContext对象,传入pageContext(一定调用) 通过getJspCotext()方法得到pageContext对象
void setParent(JspTag parent)--设置父标签对象,传入父标签对象,如果没有父标签, 则不调用此方法。通过getParent()方法得到父标签对象。
void setXXX(值) --设置属性值。
void setJspBody(JspFragment jspBody)
--设置标签体内容。标签体内容封装到JspFragment对象中,然后传入JspFragment对象。通过getJspBody()方法得到标签体内容。如果没有标签体内容,则不会调用此方法
void doTag() --执行标签时调用的方法。(一定调用)