`

自定义标签taglib

    博客分类:
  • JAVA
 
阅读更多


JSP 最佳实践: taglib简介

实现一个标记:<site-utils:lastModified />

1.实现行为
创建一个时间戳标记

package com.newInstance.site.tags;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.tagext.TagSupport;
public class LastModifiedTag extends TagSupport {
    public int doEndTag() {
      try {
        HttpServletRequest request =
(HttpServletRequest)pageContext.getRequest();
        String path = pageContext.getServletContext().getRealPath(
          request.getServletPath());
        File file = new File(path);
        DateFormat formatter = DateFormat.getDateInstance(
          DateFormat.LONG);
        pageContext.getOut().println(
          formatter.format(new Date(file.lastModified())));
      } catch (IOException ignored) { }
      return EVAL_PAGE;
    }
}



该标记返回的 EVAL_PAGE . EVAL_PAGE 是一个预定义的整型常量,它指示容器处理页面的剩下部分。另一种选项就是使用 SKIP_PAGE ,它将中止对页面剩下部分的处理。如果您要将控制转移到另一个页面,例如您要前进(forward)或者重定向(redirect)用户,那么只需要使用 SKIP_PAGE 。剩下来的细节都是与时间戳自身有关的事情。
接下来,编译这个类,并将 LastModifiedTag.class 文件放到一个WEB-INF/classes 目录下,注意要放到正确的路径层次结构中。这个路径应该匹配该标记的包名,包名中的圆点(.)用斜杠(/)代替。在本例中,目录的路径是基路径(WEB-INF/classes)再加上层次结构com/newInstance/site/tags。如果有一个名为 foo.bar.tag.MyTag 的标记,那么它将被放在 WEB-INF/classes/foo/bar/tag中。这种路径层次结构确保了Web容器在任何需要装载该标记的时候都能够找到这个类。


2.创建TLD
创建一个 标记库描述符(tag library descriptor ,TLD)文件.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2/EN"
           "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>site-utils</short-name>
    <uri>http://www.newInstance.com/taglibs/site-utils</uri>
    <tag>
      <name>lastModified</name>
      <tag-class>com.newInstance.site.tags.LastModifiedTag</tag-class>
      <body-content>empty</body-content>
    </tag>
</taglib>



保存这个文件,并将其放到WEB-INF/tlds目录下(您可能需要在您的容器中创建这个目录)。我将这个文件保存为site-utils.tld,并在该标记库的URI(推荐的前缀)和TLD文件本身之间再次创建一个干净的链接。对于这个特定的标记库,要使其可以使用,最后一步要做的是让您的Web应用知道如何连接一个JSP页面中的URI,如何请求使用一个标记库。这可以通过应用的web.xml文件来做。

3.web.xml加入<jsp-config>
<web-app id="WebApp_ID" version="2.4" 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-app_2_4.xsd">
                ...
	<jsp-config>
	   <taglib>
	       <taglib-uri>/myjstl</taglib-uri>
	       <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
	   </taglib>
	</jsp-config>
                ...
</web-app>




4.使用新的标记库
<%@ taglib prefix="site-utils" uri="http://www.newInstance.com/taglibs/site-utils" %>
其实是:

<%@ taglib prefix="site-utils" uri="/myjstl" %>
          </td>
          <td width="16" align="left" valign="top"> </td>
    </tr>
    <!-- End main content -->
<!-- Begin footer section -->
    <tr>
      <td width="91" align="left" valign="top" bgcolor="#330066"> </td>
      <td align="left" valign="top"> </td>
      <td class="footer" align="left" valign="top"><div align="center"><br>
        &copy; 2003 
        <a href="mailto:webmaster@newInstance.com">Brett McLaughlin</a><br>
        Last Updated: <site-utils:lastModified />
        </div></td>
      <td align="left" valign="top"> </td>
      <td width="141" align="right" valign="top" bgcolor="#330066"> </td>
    </tr>
</table>
<!-- End footer section -->


参考:

1.http://www.ibm.com/developerworks/cn/java/j-jsp07233/

2.http://ericliu1986.iteye.com/blog/686378



分享到:
评论

相关推荐

    jsp使用自定义标签taglib分页系列——完整例子

    jsp使用自定义标签taglib分页系列——完整例子

    JSP自定义标签Taglib实现过程重点总结

    **JSP自定义标签Taglib实现过程重点总结** 在Java Server Pages (JSP) 技术中,自定义标签(Taglib)是一个强大的工具,它允许开发者创建可重用的自定义组件,以提高代码的可维护性和可读性。自定义标签库(Taglib...

    tp自定义标签

    在ThinkPHP 3.0中,自定义标签通常在`TagLib`类库下创建。首先,你需要在`ThinkPHP/Lib/TagLib`目录下创建一个新的PHP文件,例如`XyTagLib.php`,然后在这个文件中定义一个继承自`Think\TagLib\TagLib`的类,比如`...

    java自定义标签、自定义函数、taglib

    3. 在JSP页面中引入标签库:通过`&lt;%@ taglib %&gt;`指令引入TLD文件,然后就可以在页面中使用自定义标签了。 ```jsp &lt;%@ taglib prefix="my" uri="/WEB-INF/mytags.tld" %&gt; ``` 接下来,我们讨论自定义函数。自定义...

    struts2 自定义标签

    在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...

    Taglib自定义标签分页

    在Java Web开发中,自定义标签(Taglib)是一种扩展JSP功能的重要方式,它可以将复杂的业务逻辑封装起来,使得视图层更加简洁易读。本项目“Taglib自定义标签分页”提供了一个完整的解决方案,它实现了在网页上进行...

    带有参数的taglib(自定义标签)

    下面我们将详细探讨“带有参数的taglib(自定义标签)”。 ### 一、什么是taglib? Taglib是JSP标准标签库(JSTL)的一部分,它提供了一系列预定义的标签,用于简化JSP页面中的常见任务,如迭代、条件判断等。同时...

    jsp 自定义标签实例

    3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`&lt;jsp:taglib&gt;`指令引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。例如,`&lt;myTag:myTag attribute1="value1" attribute2="value2"&gt;`。 在给定...

    struts实现自定义标签

    在 Struts 中,我们可以通过实现 `org.apache.struts.taglib.Tag` 接口来创建自定义标签。 二、创建自定义标签库 1. 创建 Tag 类:首先,我们需要创建一个 Java 类,该类继承自 `org.apache.struts.taglib.Tag` 或...

    Taglib自定义标签库

    ### Taglib自定义标签库详解 #### 一、Taglib简介与作用 Taglib,即Tag Library(标签库),是JavaServer Pages (JSP) 技术中的一个重要组成部分,允许开发者创建可重用的定制标签,这些标签可以封装复杂的业务...

    jsp2.0 自定义标签和自定标签函数

    在JSP页面中,通过`&lt;%@ taglib %&gt;指令`引入自定义标签库,并使用`属性...&lt;/tag-name&gt;`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL...

    java自定义标签.......java自定义标签

    4. **JSP页面使用自定义标签**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令导入标签库,然后就可以像使用HTML标签一样使用自定义标签了。 5. **属性和表达式语言(Expression Language, EL)**:自定义标签可以接收属性...

    JSP自定义标签:最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例

    例如,`&lt;taglib-uri&gt;`定义了标签库的URI,`&lt;taglib-location&gt;`指定了TLD文件的位置,而`&lt;tag&gt;`元素则定义了具体的自定义标签,其中`&lt;name&gt;`是标签名,`&lt;tag-class&gt;`指定处理该标签的Java类。 在实际项目中,我们...

    Taglib自定义标签

    【Taglib自定义标签】是JavaServer Pages (JSP)技术中的一种机制,允许开发者创建可重用的自定义标签库,以提高代码的可读性和可维护性。自定义标签能够封装复杂的业务逻辑,使得非Java程序员(如网页设计师)也能...

    自定义标签,标签实例,ppt

    在Java Web开发中,自定义标签(Custom Tags)是一个强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP...

    一个用于分页的自定义标签

    一个“自定义标签”是开发者为了扩展JSP(JavaServer Pages)功能而创建的,它允许我们封装复杂逻辑并将其作为可重用的组件。本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用...

    freemark 自定义标签 总结

    自定义标签是Freemarker的一个重要特性,它允许开发者扩展模板语言的功能,以满足特定项目的需求。本篇文章将对Freemarker自定义标签进行深入的总结。 1. **自定义标签基础** 自定义标签在Freemarker中被称为`...

    jsp 自定义标签的使用

    3. **在JSP页面中使用**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...

Global site tag (gtag.js) - Google Analytics