javaweb自定义标签

为什么使用自定义标签

减少在jsp写java代码。简言之,就是简化jsp。

如何创建自定义标签

1、方式一 :实现接口方式 SimpleTag

2、方式二 :通过继承类  SimpleTagSupport

    开发步骤:

            1、实现SimpleTag或者继承SimpleSupportTag

            2、实现或者重写方法

            3、在WEB-INF下面新建一个xx.tld文件用来描述标签

            4、在jsp引入


实现接口方式 SimpleTag

        一

javaweb自定义标签_第1张图片

如上图,实现接口方式 SimpleTag需要实现下面这五个方法

            1、setJspContext()

                    设置(获取)上下文

            2、setJspBody()

                    获取标签体

            3、setParent()

                    设置父标签

            4、getParent()

                    获取父标签

            5、doTag()

                      在这个方法里面操作我们想要实现功能的相关逻辑

        二、在WEB-INF目录下新建一个test.tld文件,内容如下


javaweb自定义标签_第2张图片

          三、在jsp引入,如图


javaweb自定义标签_第3张图片

  接下来修改IPTag1.java代码,如下图


javaweb自定义标签_第4张图片

将项目部署到tomcat,运行,在浏览器输入http://localhost:8080/Day22/test.jsp,浏览器出现如下图:


javaweb自定义标签_第5张图片


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

通过继承类 SimpleTagSupport

基本和上面的操作一样,只不过要重写相关的方法

如doTag(),废话不多说,直接截图:


javaweb自定义标签_第6张图片

正如你所见,SimpleTagSupport已经帮我们做好了相关事情,我们只需在doTag做相关的操作就可以了。


javaweb自定义标签_第7张图片


javaweb自定义标签_第8张图片


javaweb自定义标签_第9张图片


javaweb自定义标签_第10张图片


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


javaweb自定义标签_第11张图片

在test.tld中,body-content中有以下几个值:

body-contetn: 用来描述标签体的信息

                    empty          没有标签体

                    tagdependent  将内容原封不动交给标签处理

                    scriptless    标签体的内容可以是文本、el、其他标签【不要用jsp的脚本】

                    JSP            jsp脚本,el...

一般开发中我们选择scriptless就可以了。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

使用场景:

|--直接输出内容

|--控制输出还是不输出

|--控制是否要执行标签体后的内容

|--处理标签体的内容

|--根据标签的属性处理不同业务逻辑(比如:控制循环次数)

标签案例

|--获取客户端的ip

|--验证simgTag执行顺序()

|--输出内容

|--跳过标签体之后的内容  SkipPageException

|--处理标签体内容

|--循环

|--循环(通过属性控制次数)

|--防盗链标签

|--模仿

你可能感兴趣的:(javaweb自定义标签)