`

自定义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自定义标签和函数思维导图

    JSTL标签库

    JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大...

    jstl标准标签库

    jstl 文档标准标签库JSTL – JSP Standard Tag Library,是JSP的标准标签库 自定义标签库 自定义函数

    JavaWeb开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)

    主要介绍了JavaWeb开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的),需要的朋友可以参考下

    jstl深入学习知识

    自定义标签: 我们可以自己去定义一些jsp... 函数标签库:http://java.sun.com/jsp/jstl/functions 用来读取已经定义的某个函数。  数据库标签库:http://java.sun.com/jsp/jstl/sql 可以做访问数据库的工作。

    JSP 标准标签库(JSTL)

    除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。 根据JSTL标签所提供的功能,可以将其分为5个类别。 核心标签 格式化标签 SQL 标签 XML 标签 JSTL 函数 JSTL 库安装 Apache Tomcat安装JSTL 库步骤如下...

    JSTL详细标签库介绍

    以下这些情况都可以引发异常:您的代码或调用的代码(如共享库)中有错误,操作系统资源不可用,公共语言运行库遇到意外情况(如无法验证代码),等等&lt;BR&gt;&lt;BR&gt;《Exception Handling for C++》关于异常处理论文,向...

    struts_jstl

    * 函数库的使用 * 自定义函数库 * 定义类和方法(必须定义为public static) * 编写tld文件,并且将tld文件放到WEB-INF下 * 在jsp中使用taglib指令引入自定义标签库 * 直接使用即可 &lt;br&gt; ...

    jsp动态网站开发与实例(第3版)

    内容包括JSP与Web技术概论、初探JSP、Java与JSP、JSP程序设计基础、JSP内建对象、表单与交互式网页、JSTL与标签函数库、EL、灵活设计JSP网页、文件I/O技术、Java Mail与联机邮件、JSP与XML、JDBC与数据库系统、数据...

    JSP2.0技术手册pdf(带示例源码).zip

    7-6 函数标签库(Functions tag library) 第八章 JSP 与 JavaBean 8-1 JavaBean 的简介 8-2 JSP 与 JavaBean 8-3 JavaBean 的范围 8-4 JavaBean 的移除 第九章 网页窗体的处理 9-1 HTML 窗体如何传送数据 9-2 窗体...

    黑马程序员安卓Android52期培训课

    2014/12/26 星期五 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例 2014/12/27 星期六 编码实战演练(指导老师:) 2014/12/28 星期日 mysql数据库 2014/12/29 星期一 2014/12/30 星期二 jdbc 2014/12/31...

    达内java培训目录

    Servlet/JSP Servlet生命周期及Servlet服务器、Tomcat部署配置、JSP语法、自定义标记、JSTL和EL表达式、JSP 新特性、Java Web 设计模式。 透彻理解Servlet核心原理;熟练掌握Servlet API;透彻理解JSP引擎工作原理;...

    Java资源包01

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    Spring中文帮助文档

    11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6. 用Java对象来表达JDBC操作 11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4...

    Spring API

    11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6. 用Java对象来表达JDBC操作 11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4...

    java开源包1

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包11

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包2

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

    java开源包3

    它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JS...

Global site tag (gtag.js) - Google Analytics