JSP自定义标签的学习(简单标签)

 

1.写一个类(标签处理器类)实现simpleTag接口(可以直接实现simpleTagSupport,jsp-api.jar)覆盖doTag方法

        1.移除jsp页面java代码,把需要移除的代码放到接口的doTag方法内

   例如:          PageContext context = (PageContext) this.getJspContext();

                               HttpServletRequest request = (HttpServletRequest) context.getRequest();

                              String ip = request.getRemoteAddr();

                               context.getOut().write(ip);

        2.控制标签体是否执行,在dotag方法体内,控制代表标签体的jspFragment是否执行,就可以实现控制标签体是否执行

    例如:          //拿到标签体

                                 JspFragment jf = this.getJspBody();

                                 //执行标签体

                                 jf.invoke(null);  //null代表写给浏览器

          3.控制jsp页面某一段内容重复执行,在dotag方法体内,循环执行代表标签体的jspFragment对象即可。

          4.修改标签体(修改jsp页面内容)在dotag方法体内,得到代表标签体的jspFragment对象,让这个对象执行时,其执行结果写到一个容器中,然后开发人员可以从容器中取数据修改后再输出给客户机.

    例如:         JspFragment  jf = this.getJspBody();

                                StringWriter sw = new StringWriter();

                                jf.invoke(sw);

                                String content = sw.getBuffer().toString();

                                String result = content.toUpperCase();

                                this.getJspContext().getOut().write(result);

         5.控制jsp页面是否执行在dotag方法内抛SKIPPageException异常,则容器就不会执行标签后面的余下jsp

             例如:         throw new SkipPageException();

  2.对于标签的属性,可以通过在标签处理器类中定义相应的set方法接收属性

  3.在tld文件中对标签进行描述

          <tag>

             <name>test</name>

<tag-class>com.xxx.testTag</tag-class>

<body-content>scriptless</body-content><!--  指定标签体的内容是非脚本的,常用的还有一个是empty -->

<attribute>

                           <name>id</name>

                          <required>true</required>

                          <rtexprvalue>true</rtexprvalue>  <!-- 指定属性值是否可以是一个脚本或EL表达式 -->

</attribute>

         </tag>

 4.jsp页面中导入标签库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值