- 浏览: 84373 次
- 性别:
- 来自: 广州
文章分类
最新评论
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> © 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
发表评论
-
记录一下我的p2p的UDP打洞过程【云服务器公网版本】
2014-07-19 21:14 2153服务端连接了成功处理了两个客户端的登录并且成功打洞后的log记 ... -
记录一下我的p2p的UDP打洞过程【localhost局域网版本】
2014-07-19 21:08 2044MainServer在两个客户端都启动成功之后并且打洞成功之后 ... -
有hadoop_zookeeper的pom.xml
2014-06-03 23:39 860FROM:http://blog.csdn.net/zph2 ... -
省市县三级联动数据库
2014-06-03 09:42 3212/* *@名称: myaddress.js ... -
Java中的注解机制--比较详细
2014-05-31 17:33 589http://blog.csdn.net/a243932069 ... -
记录一下这次mvn 淘宝的开源MVC框架 Webx的过程
2014-05-24 21:44 849[INFO] ------------------ ... -
恶心的Enum类型
2014-05-24 09:59 697public enum InvoiceType { ... -
分页标签<w:pager>
2014-05-09 17:05 10051.WEB-INF/tlds/pager.tld < ... -
MyEclipse has detected that less than 5% of the 31MB of Eden Space (Heap memory)
2014-04-27 12:48 1079解决办法: D:\>cd D:\Users\Admin ... -
数据库映射只@OneToMany的两个区别
2014-03-31 21:07 809========================== (不加 ... -
接着报错,连接问题Cannot open a connection
2014-03-28 18:39 1399HTTP Status 500 - ------- ... -
让spring启动时应用不需要加载数据库【default-lazy-init="true"】
2014-03-28 14:33 5356spring启动时应用不需要加载数据库,需要时在加载,如何实现 ... -
异常的Tomcat输出信息-修正log4j配置文件之后仍然异常
2014-03-28 11:51 10832014-3-28 11:46:50 org.apache ... -
异常的Tomcat输出信息
2014-03-28 11:27 696正常情况下是没有换行的。现在异常的情况是有换行的。 20 ... -
正常的Tomcat输出信息
2014-03-28 11:26 10022014-3-28 11:23:07 org.apache ... -
烦人的后台首页index.jsp弄好了
2014-03-25 14:39 46001.<title>微信公众平台后台管理< ... -
MAVEN官网地址
2014-03-25 10:12 719http://mvnrepository.com/artifa ... -
正则表达式
2014-03-25 10:11 551[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
2014-03-24 16:03 1061Window 通过cmd查看端口占用、相应进程、杀死进程等的命 ... -
java synchronized详解
2014-03-16 11:30 471Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ...
相关推荐
jsp使用自定义标签taglib分页系列——完整例子
**JSP自定义标签Taglib实现过程重点总结** 在Java Server Pages (JSP) 技术中,自定义标签(Taglib)是一个强大的工具,它允许开发者创建可重用的自定义组件,以提高代码的可维护性和可读性。自定义标签库(Taglib...
在ThinkPHP 3.0中,自定义标签通常在`TagLib`类库下创建。首先,你需要在`ThinkPHP/Lib/TagLib`目录下创建一个新的PHP文件,例如`XyTagLib.php`,然后在这个文件中定义一个继承自`Think\TagLib\TagLib`的类,比如`...
3. 在JSP页面中引入标签库:通过`<%@ taglib %>`指令引入TLD文件,然后就可以在页面中使用自定义标签了。 ```jsp <%@ taglib prefix="my" uri="/WEB-INF/mytags.tld" %> ``` 接下来,我们讨论自定义函数。自定义...
在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...
在Java Web开发中,自定义标签(Taglib)是一种扩展JSP功能的重要方式,它可以将复杂的业务逻辑封装起来,使得视图层更加简洁易读。本项目“Taglib自定义标签分页”提供了一个完整的解决方案,它实现了在网页上进行...
下面我们将详细探讨“带有参数的taglib(自定义标签)”。 ### 一、什么是taglib? Taglib是JSP标准标签库(JSTL)的一部分,它提供了一系列预定义的标签,用于简化JSP页面中的常见任务,如迭代、条件判断等。同时...
3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`<jsp:taglib>`指令引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。例如,`<myTag:myTag attribute1="value1" attribute2="value2">`。 在给定...
在 Struts 中,我们可以通过实现 `org.apache.struts.taglib.Tag` 接口来创建自定义标签。 二、创建自定义标签库 1. 创建 Tag 类:首先,我们需要创建一个 Java 类,该类继承自 `org.apache.struts.taglib.Tag` 或...
### Taglib自定义标签库详解 #### 一、Taglib简介与作用 Taglib,即Tag Library(标签库),是JavaServer Pages (JSP) 技术中的一个重要组成部分,允许开发者创建可重用的定制标签,这些标签可以封装复杂的业务...
在JSP页面中,通过`<%@ taglib %>指令`引入自定义标签库,并使用`属性...</tag-name>`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL...
4. **JSP页面使用自定义标签**:在JSP页面中,通过`<%@ taglib %>`指令导入标签库,然后就可以像使用HTML标签一样使用自定义标签了。 5. **属性和表达式语言(Expression Language, EL)**:自定义标签可以接收属性...
例如,`<taglib-uri>`定义了标签库的URI,`<taglib-location>`指定了TLD文件的位置,而`<tag>`元素则定义了具体的自定义标签,其中`<name>`是标签名,`<tag-class>`指定处理该标签的Java类。 在实际项目中,我们...
【Taglib自定义标签】是JavaServer Pages (JSP)技术中的一种机制,允许开发者创建可重用的自定义标签库,以提高代码的可读性和可维护性。自定义标签能够封装复杂的业务逻辑,使得非Java程序员(如网页设计师)也能...
在Java Web开发中,自定义标签(Custom Tags)是一个强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP...
一个“自定义标签”是开发者为了扩展JSP(JavaServer Pages)功能而创建的,它允许我们封装复杂逻辑并将其作为可重用的组件。本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用...
自定义标签是Freemarker的一个重要特性,它允许开发者扩展模板语言的功能,以满足特定项目的需求。本篇文章将对Freemarker自定义标签进行深入的总结。 1. **自定义标签基础** 自定义标签在Freemarker中被称为`...
3. **在JSP页面中使用**:在JSP页面中,通过`<%@ taglib %>`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...