为什么使用自定义标签
减少在jsp写java代码。简言之,就是简化jsp。
如何创建自定义标签
1、方式一 :实现接口方式 SimpleTag
2、方式二 :通过继承类 SimpleTagSupport
开发步骤:
1、实现SimpleTag或者继承SimpleSupportTag
2、实现或者重写方法
3、在WEB-INF下面新建一个xx.tld文件用来描述标签
4、在jsp引入
实现接口方式 SimpleTag
一
如上图,实现接口方式 SimpleTag需要实现下面这五个方法
1、setJspContext()
设置(获取)上下文
2、setJspBody()
获取标签体
3、setParent()
设置父标签
4、getParent()
获取父标签
5、doTag()
在这个方法里面操作我们想要实现功能的相关逻辑
二、在WEB-INF目录下新建一个test.tld文件,内容如下
三、在jsp引入,如图
接下来修改IPTag1.java代码,如下图
将项目部署到tomcat,运行,在浏览器输入http://localhost:8080/Day22/test.jsp,浏览器出现如下图:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
通过继承类 SimpleTagSupport
基本和上面的操作一样,只不过要重写相关的方法
如doTag(),废话不多说,直接截图:
正如你所见,SimpleTagSupport已经帮我们做好了相关事情,我们只需在doTag做相关的操作就可以了。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在test.tld中,body-content中有以下几个值:
body-contetn: 用来描述标签体的信息
empty 没有标签体
tagdependent 将内容原封不动交给标签处理
scriptless 标签体的内容可以是文本、el、其他标签【不要用jsp的脚本】
JSP jsp脚本,el...
一般开发中我们选择scriptless就可以了。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
使用场景:
|--直接输出内容
|--控制输出还是不输出
|--控制是否要执行标签体后的内容
|--处理标签体的内容
|--根据标签的属性处理不同业务逻辑(比如:控制循环次数)
标签案例
|--获取客户端的ip
|--验证simgTag执行顺序()
|--输出内容
|--跳过标签体之后的内容 SkipPageException
|--处理标签体内容
|--循环
|--循环(通过属性控制次数)
|--防盗链标签
|--模仿