jstl自定义标签

首先先在包中创建一个标签处理器(一个类servlet的java类),让类继承TagSupport.

然后在类中重写父类的 doStartTag()方法.

如果在调用的时候往里面传入值的话,再定义一个私有属性path(名称随便),生成它的get,set方法.

在doStartTag()方法中放入你想写入的代码.

比如:
JspWriter out = this.pageContext.getOut();
try {
   out.print("Hello World");
} catch (IOException e) {
   e.printStackTrace();
}
这个类就创建完成了.



接着开始创建JSTL自定义标签的标签描述符(一个XML风格的tld文件)


在项目/WEB-INF文件夹下创建一个后缀名为tld的xml文件,在创建的时候选择 Create XML file from a DTD file 给该XML文件添加DTD验证,

然后选择Select XML Catalog entry添加Sun Microsystems, Inc.//DTD JSP Tag Libray 1.2//EN

然后打开新创建好的tld
写入如下标签
<!-- tlib-version标签版本号 -->
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>分页标签</short-name>
  <uri>http://www.wupager.com</uri>

  <tag>
    <name>myp</name>
    <tag-class>util.HelloTag</tag-class>
    <!-- 为当前标签配置页面属性 -->
    <attribute>
      <name>path</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>

  </tag>

1. <tlib-version>是当前标签版本号
2. <jsp-version>1.2</jsp-version>当前使用的JSP版本
3. <short-name>分页标签</short-name>注释
4. <uri>xxxx</uri>在页面使用时引用的地址
5. <name>myp</name>在页面使用时需要的name
6. <tag-class>util.HelloTag</tag-class>对应该标签的标签处理器位置
7. <attribute> 是属性的意思
8. <name>xx</name> 是要传入的属性的名称,根据它调用该属性的GET方法
9. <required>true</required> required的是指该属性是否为必须
10. <rtexprvalue>true</rtexprvalue>

rtexprvalue的全称是 Run-time Expression Value, 它用于表示是否可以使用JSP表达式,
当里面的值为true时,表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定.

例如:
<myTag:cupSize cupSize="1" cupSizes="${result}"></myTag:cupSize>
<myTag:cupSize cupSize="${nameid}" cupSizes="${result}"></myTag:cupSize>
当里面的值为false时,表示该自定义标签的某属性的值只能直接指定.
例如:
<myTag:cupSize cupSize="1" cupSizes="${result}"></myTag:cupSize>


所有的定义都完成了.现在可以在页面里调用了.
先声明标签 <%@taglib uri="xxxx" prefix="x"%>

1. 这里面uri就是上面定义的uri.
2. prefix是值定义一个变量标识x使用该标签

在想使用该标签的地方写入
<x:myp path="index.jsp"></x:myp>

这样在页面上就输出了一句Hello World.
该标签的定义跟使用就完成了.

你可能感兴趣的:(Web,jsp,xml,servlet,sun)