`

自定义JSTL函数库

阅读更多
/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2009-04-09
博客:http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
jstl标签库的配置
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)

注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境
      是目前较为常用的环境

    
标签库的使用
* 采用taglib指令引入
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

 
自定义函数库:
1、定义类和方法(方法必须是public static)
2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
3、在jsp中采用taglib指令引入自定义函数库
4、采用 前缀+冒号+函数名 调用即可


下面举一个例子,可以在取服务器今天、明天等日期。

1、MyFunctions.java

public class MyFunctions {
	
	public static String today(String pattern){
		return formatdate(new java.util.Date(),pattern);
	}
	
	public static String today(){
		return today("yyyy-MM-dd");
	}
	
	public static String formatdate(java.util.Date date,String pattern){
		SimpleDateFormat f = new SimpleDateFormat(pattern);
		return f.format(date);
	}
	
	public static String tomorrow(String pattern){
		Calendar c =  Calendar.getInstance();
		c.setTime(new java.util.Date());
		c.add(Calendar.DATE, 1);
		return formatdate(c.getTime(),pattern);
	}
	
	public static String tomorrow(){
		return tomorrow("yyyy-MM-dd");
	}
	
	public static String date(String type,int offset,String pattern){
		Calendar c =  Calendar.getInstance();
		c.setTime(new java.util.Date());
		int field = Calendar.DATE;
		if("m".equals(type)){
			field=Calendar.MONTH;
		}
		else if("y".equals(type)){
			field = Calendar.YEAR;
		}
		c.add(field, offset);
		return formatdate(c.getTime(),pattern);
	}
	public static String date(String type,int offset){
		return date(type,offset,"yyyy-MM-dd");
	}
}


2、myfunctions.tld
<?xml version="1.0" encoding="UTF-8"?>

<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/webjsptaglibrary_2_0.xsd"
	version="2.0">
	<description>functions library by wallimn, 2009-08-11</description>
	<display-name>functions of wallimn</display-name>
	<tlib-version>1.0</tlib-version>
	<short-name>wlm</short-name>
	<uri>http://wallimn.iteye.com</uri>
	<function>
		<name>encode</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String encode(java.lang.String)</function-signature>
	</function>
	<function>
		<name>decode</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String decode(java.lang.String)</function-signature>
	</function>
	<function>
		<name>today</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String today()</function-signature>
	</function>
	<function>
		<name>todayex</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String today(java.lang.String)</function-signature>
	</function>
	<function>
		<name>tomorrow</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String tomorrow()</function-signature>
	</function>
	<function>
		<name>tomorrowex</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String tomorrow(java.lang.String)</function-signature>
	</function>
	<function>
		<name>formatdate</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String formatdate(java.util.Date,java.lang.String)</function-signature>
	</function>
	<function>
		<name>dateex</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String date(java.lang.String,int,java.lang.String)</function-signature>
	</function>
	<function>
		<name>date</name>
		<function-class>com.wallimn.gyz.tld.MyFunctions</function-class>
		<function-signature>java.lang.String date(java.lang.String,int)</function-signature>
	</function>
</taglib>



注意:有两项内容要与前面的配置文件myfunctions.tld相对应,

prefix对应<short-name>wlm</short-name>
uri对应 <uri>http://wallimn.iteye.com</uri>


3、使用示例test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="wlm" uri="http://wallimn.iteye.com"%>
<li>测试自定义函数库</li><br>
 今天:${wlm:today() }<br>
 明天:${wlm:tomorrow() }<br>
 一个月后:${wlm:date('m',1) }<br>

分享到:
评论

相关推荐

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

    JSTL函数库允许我们创建类似`fmt:formatDate`这样的函数,用于在表达式语言(EL, Expression Language)中使用。实现自定义JSTL函数需要创建一个函数库和相应的Java类。 1. **创建函数库XML文件**: 创建一个名为`...

    自定义JSTL

    **自定义JSTL详解** JavaServer Pages Standard Tag Library(JSTL)是Java Web开发中的一个标准标签库,它提供了用于处理常见任务的标签,如迭代、条件语句、XML处理等,使得开发者可以避免在JSP页面中编写过多的...

    自定义EL函数

    1. 创建函数库:你需要创建一个实现了`javax.el.FunctionMapper`接口的类。这个类的职责是映射自定义函数到实际的Java方法。 2. 注册函数:在你的`FunctionMapper`实现中,你需要重写`resolveFunction`方法。在这个...

    jstl自定义标签和函数思维导图

    jstl自定义标签和函数思维导图

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

    JSTL主要包含核心标签库(Core)、XML处理标签库(XML)、函数库(Functions)和JDBC标签库(JDBC)。在这个场景中,我们重点关注的是JSTL的核心标签库以及如何使用自定义标签。 `jstl.jar`是JSTL的核心库,包含了...

    JSTL.rar_JSTL_JSTL下载

    2. **可扩展性**:通过自定义TLD,开发者可以创建自己的标签库,扩展JSTL的功能。 3. **性能提升**:JSTL标签在服务器端被解析成Java代码执行,相比在JSP中使用脚本,性能通常会有所提升。 4. **遵循标准**:作为...

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

    - 创建函数库描述符:与自定义标签类似,也需要一个TLD文件来描述函数库,包括函数名称、参数和返回值等。 - 注册函数库:在web.xml中声明函数库的位置。 2. **使用自定义标签函数** 在JSP页面的EL表达式中,...

    从JSTL和STRUTS的TLD文件到自定义EL函数

    ### 从JSTL和STRUTS的TLD文件到自定义EL函数 #### TLD文件简介 在Java Web开发中,特别是在使用JSP技术时,我们经常需要使用到一些预定义好的标签库来简化页面的开发过程。JSTL(JavaServer Pages Standard Tag ...

    jstl自定义函数[文].pdf

    2. **编写TLD文件**:TLD(Tag Library Descriptor)文件是描述你的自定义函数库的XML文件。在这个文件中,你需要指定函数的URI(Uniform Resource Identifier),这将帮助JSP找到你的TLD文件。此外,你还需要定义`...

    JSTL标签库jar包文件

    4. **taglibs:** 提供自定义标签库的支持。 **配置JSTL:** 在`web.xml`中,需要配置JSTL的标签处理器工厂,以使服务器知道如何处理JSTL标签。例如: ```xml ... &lt;taglib-uri&gt;/tags/jstl-core ...

    jstl标签库依赖tld文件和jar

    **TLD文件**,全称Tag Library Descriptor,是JSTL等自定义标签库的元数据文件。TLD文件中包含了关于标签库的详细信息,如标签的名称、属性、方法映射等。在JSTL中,每个标签都有对应的TLD文件,它们定义了这些标签...

    jstl标签库jar包

    - **Function**: 提供一系列自定义函数,增强JSP页面的功能。 在描述中提到的`jstl.jar`包含了JSTL的核心库,而`standard.jar`则是另一个关键组件,它是JSTL的依赖,提供了EL(Expression Language)和JSTL共同使用...

    JSTL自定义EL表达式

    4. 在JSP页面中使用:在JSP页面中,你可以像使用内置EL函数一样,通过`my:myFunction`这种形式调用你的自定义函数,其中`my`是函数库的前缀,`myFunction`是函数名。 举例来说,假设我们有一个自定义函数库,名为`...

    jstl标签库与使用教程

    - Function库包含了一些实用的函数,可以扩展EL(Expression Language)表达式。 - I18N库支持多语言环境,帮助开发者实现国际化。 - SQL库则提供与数据库交互的标签,简化了数据库操作。 **2. 引入JSTL依赖:** 在...

    JSTL标签库_资料下载.zip

    4. **可扩展性**:JSTL允许自定义标签库,方便扩展功能。 **使用JSTL的步骤:** 1. 添加JSTL库的JAR文件到项目的类路径中,如`jstl.jar`和`standard.jar`。 2. 在JSP页面头部引入JSTL库,使用`指令`,例如:`...

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

    -- 使用JSTL内置的fn函数库 --&gt; ${my:uppercase('hello')} &lt;!-- 使用自定义函数库 --&gt; ``` 至于`taglib`,它是Java Web应用中用来定义和管理自定义标签和函数的机制。TLD文件就是taglib的一部分,它提供了标签库的...

    jstl两个核心包和jstl标签库EL表达式详解

    - **standard-1.1.2.jar**:这个库是JSTL的依赖,也称为JSTL的函数库。它提供了额外的标签功能,如日期和时间处理、URL重写、国际化等。这些功能是通过一系列自定义标签实现的,这些标签与JSTL的主库一起使用,可以...

    jstl标签库.rar

    5. **Function**: 提供一些自定义函数,可以扩展标签库的功能。 在IDEA中配置JSTL,我们需要以下步骤: 1. **下载JSTL库**:首先,你需要从官方网站或者Maven仓库下载jstl.jar和standard.jar这两个文件,它们是...

    JSTL标签库

    【JSTL标签库】是Java服务器页面(JSP)中的一种重要工具,它旨在增强HTML表单的功能,规范自定义标签的使用,以适应软件开发的分层设计原则,避免在JSP页面中混杂Java逻辑代码。JSTL(JavaServer Pages Standard ...

Global site tag (gtag.js) - Google Analytics