天天看点

JSP自定义标签(笔记)

自定义jsp标签:

       step1,写一个java类,继承SimpleTagSupport类。

       step2,在doTag方法里面,编写处理逻辑。

       step3,在.tld文件里面,描述标签。

          <body-content>empty</body-content>:

          empty: jsp标签没有标签体。

                     <body-content>scriptless</body-content>

          scriptless:jsp标签可以有标签体,但是,标签体

                          的内容不能够出现java代码。即不能够使用

                          <% %>,<%= %>,<%!  %>

                          <body-content>JSP</body-content>

          JSP:jsp标签有标签体,并且标签体的内容可以是

                 java代码。只有复杂标签技术才支持这个值,简

                 单标签技术不支持。

自定义JSP标签的例子:

       1.新建一个java类:

               package jspTagTest;

               import java.io.IOException;

               import java.text.SimpleDateFormat;

               import java.util.Date;

               import javax.servlet.jsp.JspException;

               import javax.servlet.jsp.JspWriter;

               import javax.servlet.jsp.PageContext;

               import javax.servlet.jsp.tagext.SimpleTagSupport;

               public class CustomJspTag extends SimpleTagSupport {

                   private String pattern;

                   public void setPattern(String pattern) {

                        this.pattern = pattern;

                    }

                   @Override

                   public void doTag() throws JspException, IOException {

                        PageContext ctx = (PageContext) getJspContext();

                        Date date = new Date();

                        SimpleDateFormat sdf = new SimpleDateFormat(pattern);

                        JspWriter out = ctx.getOut();

                        out.println(sdf.format(date));

                   }

              }

         2.在WEB-INF目录下新建一个 xx.tld 文件,配置相关信息:

                <?xml version="1.0" encoding="UTF-8"?>

                <taglib xmlns="http://java.sun.com/xml/ns/j2ee"

                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

                version="2.0">

                <tlib-version>1.1</tlib-version>

                <short-name>c1</short-name>

                <uri>http://webTest7/mytag</uri>

                <tag>

                <name>date</name>

                <tag-class>jspTagTest.CustomJspTag</tag-class>

                <body-content>empty</body-content>

                <attribute>

                    <name>pattern</name>

                    <required>true</required>

                    <rtexprvalue>false</rtexprvalue>

                </attribute>

                </tag>

                </taglib>

        3.应用到JSP中:

               <%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>

               <%@taglib uri="http://webTest7/mytag" prefix="c1" %>

                   ... ...

                   <c1:date pattern="yyyy年MM月dd日" /><!-- date为tld文件中的<name>date</name> 名字必 须一致 -->

                   ... ...