`

自定义标签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实现过程重点总结

    Taglib指令,其实就是定义一个标签库以及自定义标签的前缀。 比如struts中支持的标签库,html标签库、bean标签库、logic标签库。 其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难...

    Taglib自定义标签库

    讲述Taglib 自定义标签

    Taglib自定义标签

    Taglib自定义标签.doc

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

    NULL 博文链接:https://wujie2008.iteye.com/blog/1694631

    struts2自定义标签案例详解

    Struts2中实现自定义标签很简单,主要分为3步: 1.创建taglib文件(.tld),编写标签声明。 2.编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不...

    JSTL 以及自定义标签开发相关

    JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...

    Taglib自定义标签分页

    一个完整的工程,放到tomcat里就可以用了,很好用,采用自定义标签实现分页

    jsp权限控制,jsp自定义标签实现

    Struts2拦截器:需要配置action进行拦截。而且。有时候我们并不想让用户看到不改属于他...&lt;%@ taglib uri="/priveliege" prefix="privilege"%&gt;自定义标签文件 删除 可以控制页面中的每个元素,只需要一个类就能够实现

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

    带有参数的自定义标签,比较简单的哦

    JSP常用自定义标签集feilong-taglib.zip

    feilong-taglib,是 JSP常用自定义标签集 主要由两部分组成 Common 包含所有自定义标签的base类,以及常用的自定义标签 和el function  taglib  说明 isContains  判断一个值,...

    Java自定义标签开发.zip

    资源内容:java自定义标签开发;JSP页面中自定义标签详解教程;JSP自定义标签简介;taglib_原理和实现;更多场景的示例Demo;

    jsp自定义标签

    jsp自定义标签,比如说if,foreach,out,format

    自定义标签+struts2标签控制访问链接权限.zip

    资料内容为教程,介绍taglib_原理和实现;JSP自定义标签;JSP页面中自定义标签详解教程;java自定义标签开发;角色标签库;自定义标签帮助文档;自定义标签其它重要资料。

    自定义标签分页

    自定义标签实现jdbc的分页,使用的mysql数据库。

    自定义标签代替Struts标签实现分页

    自定义标签实现分页,分页信息都封装在一个继承自TagSupport的java文件中,自定义一个tld文件,jsp页面通过taglib指令引入tld文件,使用自定义标签。

    自定义标签的简单例子

    自定义标签的简单例子 hello 包括四个文件, 自定义标签由标记处理程序( java) 和标签的描述组成(tld,xml). &lt;br&gt;java中是定义一个类,jsp所有的标签都实现jsptag接口。 标签库的接口与类的继承...

    自定义标签模式 输出动态时间

    1.需要用到的类 TimeTage.java 继承了 SimpleTagSupport 类的一个 dotag 方法 2.还需要一个 TimeTage.tld &lt;tlib-version&gt;1.1 ...&lt;%@taglib prefix="TimeOut" uri="http://www.TimeTag.com"%&gt; &lt;TimeOut:out/&gt;

Global site tag (gtag.js) - Google Analytics