前言:
前面我学了核心的标签
但是如果我想要实现的内容核心标签 和jstl标签库不能解决怎么办?
有人说可以用jsp脚本,但是jsp主要是展示数据用的,不应该大量出现java代码才对。这个时候自定义标签就出现了。
(也有人说jsp耦合度太高了,这些姑且不考虑)
自定义标签目的:
替代jsp脚本,用于在jsp页面中执行java代码
步骤有四:
编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法
在WEB-INF目录下建立tld文件,在tld配置标签
在jsp页面导入标签库,使用taglib指令
在jsp页面中使用标签库中的标签
第一步:编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类
注意:SimpleTagSupport需要导包jsp-api.jar,这个可以在Tomcat的lib中找到
重点:自定义标签的内容要覆盖doTag方法
自定义标签的执行过程
问题: http://localhost:8080/day14/01.hellotag.jsp 如何访问到自定义标签?
前提: tomcat服务器启动时,加载到每个web应用,加载每个web应用的WEB-INF目录下的所有文件!!!例如。web.xml, tld文件!!!
1)访问01.hellotag.jsp资源
2)tomcat服务器把jsp文件翻译成java源文件->编译class->构造类对象->调用_jspService()方法
3)检查jsp文件的taglib指令,是否存在一个名为http://gz.itcast.cn的tld文件。如果没有,则报错
4)上一步已经读到itcast.tld文件
5)读到<itcast:showIp> 到itcast.tld文件中查询是否存在<name>为showIp的<tag>标签
6)找到对应的<tag>标签,则读到<tag-class>内容
7)得到 gz.itcast.a_tag.ShowIpTag
构造ShowIpTag对象,然后调用ShowIpTag里面的方法
自定义标签处理器类的生命周期
SimpleTag接口:
void