`

开发JSTL自定义标签

阅读更多

有一次看到同事写的自定义标签,发现是如此的简单。

1,写个.tld放在classpath下,如下,

myselfxu.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib 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-jsptaglibrary_2_0.xsd"
    version="2.0">
    
	<description>Custom Functions</description>
  	<tlib-version>1.0</tlib-version>
 	<short-name>xu</short-name>
 	<uri>/myfunction</uri>
 	 
 	<function>
	  	<name>testMyself</name>
	  	<function-class>com.kuanglong.commons.MySelf</function-class>
	  	<function-signature>java.lang.String testMyself(java.lang.String)</function-signature>
  	</function>
  	
	  <function>
	  	<name>encode</name>
	  	<function-class>java.net.URLEncoder</function-class>
	  	<function-signature>java.lang.String encode(java.lang.String,java.lang.String)</function-signature>
	  </function>
</taglib>

 

2,java类的代码,

    Myself.java

package com.kuanglong.commons;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class MySelf {
	
	public static String testMyself(String ss){
		return ss ;
	}

	final static int ISO_TIME = 0;
	final static int ISO_DATETIME = 1;
	final static int ISO_DATE = 2;
	final static int SLASH_DATETIME = 3;
	final static int SLASH_DATE = 4;
	final static int NO_SLASH_DATETIME = 5;
	final static int NO_SLASH_DATE = 6;
	final static int NO_SLASH_DATE_ExcludeYear = 8;
	final static int SIMPLE_DATE_ExcludeYear = 9;
	
	static SimpleDateFormat dateFormatDashSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    static SimpleDateFormat dateFormatDashDay = new SimpleDateFormat("yyyy-MM-dd");
	static SimpleDateFormat dateFormatSlashSecond = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    static SimpleDateFormat dateFormatSlashDay = new SimpleDateFormat("yyyy/MM/dd");
    static SimpleDateFormat dateFormatSecond = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
    static SimpleDateFormat dateFormatDay = new SimpleDateFormat("yyyyMMdd");
    static SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
    static SimpleDateFormat dateFormatDashDayExcludeYear = new SimpleDateFormat("MM-dd");
    static SimpleDateFormat dateFormatDayExcludeYear = new SimpleDateFormat("MMdd");
    
	public static String dateFormat(Object date,int type){
		if(date instanceof Date){
			if(type == ISO_TIME){
				return timeFormat.format(date);
			} else if(type == ISO_DATE){
				return dateFormatDashDay.format(date);
			} else if(type == SLASH_DATETIME){
				return dateFormatSlashSecond.format(date);
			} else if(type == SLASH_DATE){
				return dateFormatSlashDay.format(date);
			} else if(type == NO_SLASH_DATETIME){
				return dateFormatSecond.format(date);
			} else if(type == NO_SLASH_DATE){
				return dateFormatDay.format(date);
			}else if(type == NO_SLASH_DATE_ExcludeYear){
				return dateFormatDashDayExcludeYear.format(date);
			}else if(type == SIMPLE_DATE_ExcludeYear){
				return dateFormatDayExcludeYear.format(date);
			} else{//type == ISO_DATETIME
				return dateFormatDashSecond.format(date);
			}
		} else if(date instanceof Calendar){
			return dateFormat(((Calendar)date).getTime(),type);
		} else 
			return "";
	}
}

 

3,jsp上引用自己定义的标签。。

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib prefix="myfn" uri="/myfunction" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

    ${myfn:testMyself("时的方式方式来得及浮士德了家里开始就")}

<body>
</body>
</html>

 

 

分享到:
评论
2 楼 xuganggogo 2009-12-11  
呵呵,这里是我写的另外一个方法。。。没有说明就直接贴出来了
1 楼 yzzh9 2009-12-11  
   final static int ISO_TIME = 0;   
    final static int ISO_DATETIME = 1;   
    final static int ISO_DATE = 2;   
    final static int SLASH_DATETIME = 3;   
    final static int SLASH_DATE = 4;   
    final static int NO_SLASH_DATETIME = 5;   
    final static int NO_SLASH_DATE = 6;   
    final static int NO_SLASH_DATE_ExcludeYear = 8;   
    final static int SIMPLE_DATE_ExcludeYear = 9;   
       
    static SimpleDateFormat dateFormatDashSecond = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
    static SimpleDateFormat dateFormatDashDay = new SimpleDateFormat("yyyy-MM-dd");   
    static SimpleDateFormat dateFormatSlashSecond = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");   
    static SimpleDateFormat dateFormatSlashDay = new SimpleDateFormat("yyyy/MM/dd");   
    static SimpleDateFormat dateFormatSecond = new SimpleDateFormat("yyyyMMdd HH:mm:ss");   
    static SimpleDateFormat dateFormatDay = new SimpleDateFormat("yyyyMMdd");   
    static SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");   
    static SimpleDateFormat dateFormatDashDayExcludeYear = new SimpleDateFormat("MM-dd");   
    static SimpleDateFormat dateFormatDayExcludeYear = new SimpleDateFormat("MMdd");   
       
    public static String dateFormat(Object date,int type){   
        if(date instanceof Date){   
            if(type == ISO_TIME){   
                return timeFormat.format(date);   
            } else if(type == ISO_DATE){   
                return dateFormatDashDay.format(date);   
            } else if(type == SLASH_DATETIME){   
                return dateFormatSlashSecond.format(date);   
            } else if(type == SLASH_DATE){   
                return dateFormatSlashDay.format(date);   
            } else if(type == NO_SLASH_DATETIME){   
                return dateFormatSecond.format(date);   
            } else if(type == NO_SLASH_DATE){   
                return dateFormatDay.format(date);   
            }else if(type == NO_SLASH_DATE_ExcludeYear){   
                return dateFormatDashDayExcludeYear.format(date);   
            }else if(type == SIMPLE_DATE_ExcludeYear){   
                return dateFormatDayExcludeYear.format(date);   
            } else{//type == ISO_DATETIME   
                return dateFormatDashSecond.format(date);   
            }   
        } else if(date instanceof Calendar){   
            return dateFormat(((Calendar)date).getTime(),type);   
        } else    
            return "";   
    } 
 
这些代码和你说的自定义标签有啥关系?

相关推荐

    JSTL自定义标签实例解析

    **JSTL自定义标签实例解析** JavaServer Pages Standard Tag Library (JSTL) 是一套标准的标签库,用于简化JSP开发。JSTL允许开发者使用预定义的标签来处理常见任务,如迭代、条件判断、XML处理等。本文将深入讲解...

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

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

    jstl 自定义标签

    JSTL自定义标签允许开发者扩展标准标签库的功能,满足特定需求。自定义标签由三部分组成:标签库描述符(TLD),标签处理类(Tag Handler Class)以及标签体(Tag Body)。 1. **标签库描述符(TLD)**:这是一个XML...

    JSTL 开发自定义标签使用的jar

    开发自定义标签是扩展JSTL功能的一个重要方式。自定义标签可以封装复杂的业务逻辑,使得JSP页面更加简洁。以下是一些关键步骤: 1. **创建标签处理类(Tag Handler Class)**:自定义标签的核心是Java类,它实现了`...

    JSTL 自定义标签

    **JSTL自定义标签详解** JavaServer Pages Standard Tag Library(JSTL)是用于简化JSP开发的一个标准标签库,它将常见的JSP代码片段封装成了可重用的标签,提高了代码的可读性和可维护性。在JSTL中,我们可以...

    这个压缩包里有JSTL自定义标签开发实例的源码及相关文件

    在这个压缩包中,包含的是关于JSTL自定义标签的开发实例源码,对于正在学习JavaWeb技术的开发者来说,这是一个非常有价值的参考资料。 首先,我们要理解JSTL的基本概念。JSTL主要由五个核心部分组成:Core、XML、...

    jstl自定义标签

    综上所述,JSTL自定义标签是JSP开发中的一个重要工具,它允许我们创建可复用、模块化的代码,提高代码质量,同时也降低了维护成本。通过理解和实践自定义标签的创建和使用,可以提升我们在Web应用开发中的专业能力。

    JavaWeb-12:自定义标签库开发&JSTL标签库

    在JavaWeb开发中,自定义标签库和JSTL(JavaServer Pages Standard Tag Library)是两个重要的组件,它们极大地提高了代码的可读性和可维护性。本教程将深入探讨这两个主题,帮助开发者更好地理解和应用它们。 一、...

    自定义JSTL标签java项目文件

    4. **在JSP页面中使用自定义标签**:完成以上步骤后,就可以在JSP页面中像使用标准JSTL标签一样使用自定义标签了。 例如,假设我们有一个名为`myTag`的自定义标签,其处理类为`com.example.MyTag`,在TLD文件中定义...

    jsp 自定义标签的使用

    JSTL中的某些标签功能可能与自定义标签重复,但在实际开发中,两者常常结合使用,互补不足。例如,自定义标签可以处理特定业务逻辑,而JSTL则负责通用的控制流、迭代和I/O操作。 总结,通过自定义标签,我们可以...

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

    在Java Server Pages (JSP) 2.0版本中,自定义标签和自定义标签函数极大地扩展了JSP开发的灵活性和可重用性。这些特性允许开发者创建可复用的组件,使代码更加清晰,易于维护。本文将深入探讨JSP 2.0中的自定义标签...

    JSTL自定义EL表达式

    在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)是一个标准的标签库,它提供了一系列的标签来简化JSP页面中的编程工作。EL(Expression Language)是JSP 2.0引入的一种轻量级的脚本语言,用于在...

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

    自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP页面更加简洁。本篇文章将深入探讨自定义标签的概念、工作原理以及如何创建和使用它们。 一、自定义标签概述 自定义标签可以...

    JSTL标准标签库.pdf

    从JSP 1.1规范开始JSP就支持使用自定义标签,使用自定义标签大大降低了JSP页面的复杂度,同时增强了代码的重用性,因此自定义标签在WEB应用中被广泛使用。许多WEB应用厂商都开发出了自己的一套标签库提供给用户使用...

    关于自定义标签的开发说明

    自定义标签的开发涉及到JSP、Servlet、XML解析等多个领域的知识,理解并熟练运用自定义标签可以极大地提升Java Web项目的开发效率和质量。在实际项目中,常见的应用包括表单处理、数据展示、国际化等复杂场景,通过...

    自定义标签 JAVA web项目开发经验

    在Java Web项目开发中,自定义标签(Custom Tags)是一个重要的技术点,它极大地提高了代码的可读性和可维护性。自定义标签是JSP(JavaServer Pages)的一部分,允许开发者创建自己的视图组件,就像HTML标签一样,但...

    JAVAEE自定义标签的使用

    在实际开发中,自定义标签通常与Expression Language (EL) 和JSTL结合使用,可以处理更复杂的逻辑和数据绑定。自定义标签也可以通过继承已有的标签库,比如JSTL的`fmt`或`c`标签,进一步扩展其功能。 总之,理解和...

    jstl自定义函数[文].pdf

    下面我们将详细探讨JSTL自定义函数的开发步骤、使用方法以及JSTL提供的标准函数。 首先,开发自定义函数主要分为以下几步: 1. **创建Java类**:你需要定义一个Java类,该类包含你需要在EL表达式中调用的静态方法...

    JSP应用开发-自定义标签的使用.pptx

    在JSP页面中,自定义标签就像使用JSTL或Struts标签一样,通过`&lt;myTag:tagName attribute1="value1" attribute2="value2"&gt;`的形式调用。对于有标记体的标签,还可以传递内容。 **6. 示例:创建简单无标记体的标签** ...

    自定义标签和自定义jstl函数的具体项目实现

    在Java Web开发中,自定义标签和自定义JSTL(JavaServer Pages Standard Tag Library)函数是提升代码可复用性和可维护性的重要工具。它们允许开发者创建自己的语义化标签,以替代复杂的Java脚本或者JSP标签,使得...

Global site tag (gtag.js) - Google Analytics