上篇讲解的是JSTL常用的核心标签,本篇介绍JSTL自定义标签的使用。还记得在学js的时候,我们学习了JQuery框架,同时学习了构造自己的js库,再去调用自己的js库,这就如同根据自己的需要些一个内聚性强的函数一样,我们创建一个函数后,再去调用这个函数。在学习J2ee规范JSTL标签这一节的时候,同样我们可以根据自己的需要构造自己的标签库,再去使用自己定义的这个标签。

JSTL自带的标签功能时非常强大的,但是不能完全满足我们的需要,开发标签首先是需要开发标签对应的功能类,就和写函数一样,这个函数是什么功能的呢?其次,编写描述标签的tld,并把这个文件放到web-inf/目录下,才能在jsp页面上调用自定义的标签。

自定义标签示例:

我们编写自定义标签需要三个步骤:

1、标签的功能处理程序

java源代码:

package taglibs;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
public class DateTag implements Tag {
private PageContext pageContext;
private Tag tag;
/**
* 标签初始化功能。
*/
public int doEndTag() throws JspException {
try
{
//定义日期。
Date date = new Date();
//日期格式
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy年MM月dd日");
pageContext.getOut().print(dateFormater.format(date));
}catch(IOException e)
{
e.printStackTrace();
}
return Tag.EVAL_PAGE;
}
/**
* 标签开始
*/
public int doStartTag() throws JspException {
return Tag.SKIP_BODY;
}
public Tag getParent() {
return null;
}
public void release() {
}
public void setPageContext(PageContext arg0) {
this.pageContext = arg0;
}
public void setParent(Tag arg0) {
this.tag = arg0;
}
}

上述程序段说明:

我们自己定义的DateTag标签实现了Tag接口,如果需要处理正文的内容,即需要处理开始标签和结束标签之间的内容的时候,需要实现BodyTag接口,我们在这里不需要处理正文内容,所以选择实现Tag接口即可。

因为这里要实现的标签不对正文内容处理,所以只需要实现doEndTag方法即可,在这个方法中取出当前系统时间,并指定格式输出。

2 、标签描述文件tld文件

标签处理功能开发完成之后,需要对标签库进行配置,也就是配置对标签功能实现类的引用,JSP引擎会根据页面中的标签引用找到对应的标签配置文件,然后根据配置文件找到实现标签功能的java类,从而调用其中的功能。

在eclipse中选择新建文件,选择新建tld类型的文件,会有如下如所示:

其中包括我们.tld文件名 Name:datetag,文件的版本号 version:1.2,标签库的版本 Tlibversion:1.0,标签库要求的JSP版本为1.2,理解标签库描述性名字ShortName,URI唯一标识该标签库的URI为/mytags。我们代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!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>dateTagExample</short-name>
<uri>/mytags</uri>
<tag>
<name>date</name>
<tag-class>taglibs.DateTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>

<tag></tag> 描述了标签库中的一个标签,其中标签的名字是date,也就是在JSP页面上访问的名字为date;这个标签的功能处理类为taglibs.DateTag,<body-content></body-content>表明这个标签没有正文内容,即在开始标签和结束标签不能包含其他内容。

在一个标签库中,可以包括一组标签,也可以只描述一个标签,一般情况下,都是把一组功能类似标签放置在一个标签库中,可以包括一组标签也可以只描述一个标签,一般情况下都是一组功能类似的标签放置在一个标签库中,用一个描述文件,只要增加<tag></tag>节点就可以了。

3、在JSP中调用这个标签

首先把这个描述文件. tld 放到web-inf文件夹下,然后在JSP页面中使用这个标签库:

<%@  taglib   uri="/web-inf/datetag.tld"       prefix="mytags"          %>

代码如下所示:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib uri="/WEB-INF/datetag.tld" prefix="mytags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
自定义标签示例<br>
</head>
<body>
<font size="3">
使用自定义标签输出日期:
<mytags:date/>
</font>
</body>
</html>

调用结果显示图:

4、JSP页面不使用标签和使用标签的执行过程

如下图所示:

这样终于理解了JSTL,就是把JSP页面上嵌入的java代码穿上一层外衣,但这个“外衣”不用进行编译就可以直接在浏览器上运行,更加接近于界面制作显示的要求,原来J2EE的这个JSTL规范是在解耦,如此让系统的扩展性和可维护性更强了。

JSTL自定义标签(三)相关推荐

  1. 自己封装JSTL 自定义标签

    第一步,做一个类,派生自SimpleTagSupport,"alt+/"选重写doTag()方法. public class TestTag extends SimpleTagSu ...

  2. jstl自定义标签接口介绍

    2019独角兽企业重金招聘Python工程师标准>>> 1. JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法. ...

  3. jstl自定义标签问题Unable to find taglib

    错误如下:找不到自定义的jstl标签 严重: Servlet.service() for servlet [jsp] in context with path [/3_19day13] threw e ...

  4. Java-Web JSTL标签库、自定义标签库和MVC设计模式

    目录 一.JSTL标签库 1.什么是JSTL 2.JSTL标签库 3.使用taglib指令导入标签库 4.core标签库常用标签 (1)out和set (2)remove (3)url (4)if ( ...

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

    JSTL  JSTL简介: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发人员一个标准通用的标签函数库   和EL ...

  6. 自定义标签JSTL标签库详解

     自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面就来看一下自定义标签的简 ...

  7. JSP标签:jsp内置标签、jstl标签、自定义标签

     一.jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签    1 ...

  8. 修改meta标签 查看源码没效果怎么办_Spring 源码学习(三)-自定义标签

    又来填坑啦,上一篇讲完默认标签的解析,这篇笔记记录一下自定义标签的解析吧. 我们知道,Spring 源码的核心模块是 Spring-core 和 Spring-beans,在此基础上衍生出其他模块,例 ...

  9. 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

    学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签.  jsp标签的分 ...

最新文章

  1. 信息熵及其相关概念--数学
  2. 第七章 移动自动化持续化集成(下)
  3. vue2.0小示例一个~~新鲜出炉哦。欢迎大家留言
  4. awk应用小结(所有命令行均经调试)
  5. 琥珀项目:较小的,面向生产力的Java语言功能
  6. 模块导入以及书写规则
  7. c语言找两个数中的最大值,不用任何比较判断找出两个数中的最大值
  8. 深圳美景品牌策划机构:美景推动国际品牌MASHIMARO闪电招商,3天签约211家
  9. 解决警告“ld: warning: directory not found for option”
  10. Linux学习笔记十七——Linux系统启动流程
  11. 路灯灭了,路灯干扰者经过
  12. Java面试——多线程面试题
  13. Python内置函数
  14. 计算各个城市实际地区生产总值(附各个城市实际GDP)
  15. 2022-2028年全球一次性视频内窥镜行业收入年复合增长率CAGR为 42.6%
  16. C++ limits头文件的用法(numeric_limits)
  17. Doctrine 查询语法
  18. 转码解密挖矿 显卡计算能力大对比
  19. MYSQL学习思维导图
  20. MySQL数据库05 数据库控制和设计

热门文章

  1. 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的
  2. 图解CRM(客户关系管理)全流程
  3. 物联网案例(二):物联网系统如何进行实时决策
  4. Beyond Compare实现Class文件对比
  5. 凹凸技术揭秘:如何服务 toG 项目——数字人民币项目前端总结
  6. 大神尝试扒迅雷的代码,竟然被扒了个精光!
  7. 开涛老师对Java的全部理解,很透彻。
  8. Mac电脑使用Charles抓取Android手机app的包
  9. 去中心化自治组织DAO简要介绍
  10. PPT VBA:批量转PDF