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页面中导入标签库

你可能感兴趣的:(jsp,浏览器,脚本)