- 浏览: 81581 次
- 性别:
- 来自: 广州
文章分类
最新评论
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 2098服务端连接了成功处理了两个客户端的登录并且成功打洞后的log记 ... -
记录一下我的p2p的UDP打洞过程【localhost局域网版本】
2014-07-19 21:08 2001MainServer在两个客户端都启动成功之后并且打洞成功之后 ... -
有hadoop_zookeeper的pom.xml
2014-06-03 23:39 828FROM:http://blog.csdn.net/zph2 ... -
省市县三级联动数据库
2014-06-03 09:42 3159/* *@名称: myaddress.js ... -
Java中的注解机制--比较详细
2014-05-31 17:33 553http://blog.csdn.net/a243932069 ... -
记录一下这次mvn 淘宝的开源MVC框架 Webx的过程
2014-05-24 21:44 810[INFO] ------------------ ... -
恶心的Enum类型
2014-05-24 09:59 662public enum InvoiceType { ... -
分页标签<w:pager>
2014-05-09 17:05 9721.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 1034解决办法: D:\>cd D:\Users\Admin ... -
数据库映射只@OneToMany的两个区别
2014-03-31 21:07 769========================== (不加 ... -
接着报错,连接问题Cannot open a connection
2014-03-28 18:39 1357HTTP Status 500 - ------- ... -
让spring启动时应用不需要加载数据库【default-lazy-init="true"】
2014-03-28 14:33 5317spring启动时应用不需要加载数据库,需要时在加载,如何实现 ... -
异常的Tomcat输出信息-修正log4j配置文件之后仍然异常
2014-03-28 11:51 10312014-3-28 11:46:50 org.apache ... -
异常的Tomcat输出信息
2014-03-28 11:27 655正常情况下是没有换行的。现在异常的情况是有换行的。 20 ... -
正常的Tomcat输出信息
2014-03-28 11:26 9542014-3-28 11:23:07 org.apache ... -
烦人的后台首页index.jsp弄好了
2014-03-25 14:39 45611.<title>微信公众平台后台管理< ... -
MAVEN官网地址
2014-03-25 10:12 670http://mvnrepository.com/artifa ... -
正则表达式
2014-03-25 10:11 512[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
2014-03-24 16:03 1023Window 通过cmd查看端口占用、相应进程、杀死进程等的命 ... -
java synchronized详解
2014-03-16 11:30 431Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ...
相关推荐
jsp使用自定义标签taglib分页系列——完整例子
Taglib指令,其实就是定义一个标签库以及自定义标签的前缀。 比如struts中支持的标签库,html标签库、bean标签库、logic标签库。 其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难...
讲述Taglib 自定义标签
Taglib自定义标签.doc
NULL 博文链接:https://wujie2008.iteye.com/blog/1694631
Struts2中实现自定义标签很简单,主要分为3步: 1.创建taglib文件(.tld),编写标签声明。 2.编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不...
JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...
一个完整的工程,放到tomcat里就可以用了,很好用,采用自定义标签实现分页
Struts2拦截器:需要配置action进行拦截。而且。有时候我们并不想让用户看到不改属于他...<%@ taglib uri="/priveliege" prefix="privilege"%>自定义标签文件 删除 可以控制页面中的每个元素,只需要一个类就能够实现
带有参数的自定义标签,比较简单的哦
feilong-taglib,是 JSP常用自定义标签集 主要由两部分组成 Common 包含所有自定义标签的base类,以及常用的自定义标签 和el function taglib 说明 isContains 判断一个值,...
资源内容:java自定义标签开发;JSP页面中自定义标签详解教程;JSP自定义标签简介;taglib_原理和实现;更多场景的示例Demo;
jsp自定义标签,比如说if,foreach,out,format
资料内容为教程,介绍taglib_原理和实现;JSP自定义标签;JSP页面中自定义标签详解教程;java自定义标签开发;角色标签库;自定义标签帮助文档;自定义标签其它重要资料。
自定义标签实现jdbc的分页,使用的mysql数据库。
自定义标签实现分页,分页信息都封装在一个继承自TagSupport的java文件中,自定义一个tld文件,jsp页面通过taglib指令引入tld文件,使用自定义标签。
自定义标签的简单例子 hello 包括四个文件, 自定义标签由标记处理程序( java) 和标签的描述组成(tld,xml). <br>java中是定义一个类,jsp所有的标签都实现jsptag接口。 标签库的接口与类的继承...
1.需要用到的类 TimeTage.java 继承了 SimpleTagSupport 类的一个 dotag 方法 2.还需要一个 TimeTage.tld <tlib-version>1.1 ...<%@taglib prefix="TimeOut" uri="http://www.TimeTag.com"%> <TimeOut:out/>