`

编写自己的定制标记库(二)

阅读更多

上一篇文章记录了怎么编写定制标记库,如果认真看的,并且动手去实现了的,想必一定会觉的很容易。同时也会有一些疑问,什么疑问呢? 我见JSP中的标记啊,EL的标记啊有的可以设定属性值,但是我们编写的这个没有属性值。别急,在这里我讲记录一下怎么编写可以自己设定属性的标记。

1.学习目标:通过这个实例,了解如何为自己编写的定制标记添加属性。

2. 首先编写标记处理类

 

       /** 
	 * 按照设定的日期时间格式,格式化给定的日期后输出,
         * 如果没有给定日 期 时间
	 * 就输出当前的日期时间,如果没有给定日期时间的输出格式
	 * 按照yyyy-MM-dd hh:mm:ss格式输出
	 */
public class DateTimeTag extends TagSupport {
	private static final long serialVersionUID = 1L;
	private String pattern = "yyyy-MM-dd hh:mm:ss";
	private Date date;
	
	public void setDate(Date date){
		this.date = date;
	}
	public void setPattern(String pattern){
		this.pattern = pattern;
	}
	public int doEndTag() throws JspTagException{
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		
		if(date == null){
			date = new Date();
		}
		JspWriter out = pageContext.getOut();
		
		try {
			out.println(sdf.format(date));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return EVAL_PAGE;
	}
}

 DateTimeTag类与上个实例的TimerTag类相比较,只重写了doEndTag()方法。如果标记不包含内容或者不显示标记所包含内容,就可以不用重写doStartTag() 方法。(ps:个人感觉这边可能应用了适配器模式,我没有看源代码,所以也不十分确定)。但是这里新增加了两个setter方法,分别为date和pattern两个实例赋值,这两个变量的值是通过定制标记的属性传递到类中的。

3.编写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaeeweb-jsptablibrary_2_1.xsd"
     version ="2.1" >
     <tlib-version>1.0</tlib-version>
     <short-name>util</short-name>
     <uri>http://crazy.com/taglib/util</uri>
     <display-name>utilitytags</display-name>
     <description>custom web utility tags</description>
     <tag>
     	<name>Timer</name>
     	<tag-class>practice.TimerTag</tag-class>
     	<body-content>JSP</body-content>
     </tag>
     
     <tag>
     	<name>dateTime</name>
     	<tag-class>practice.DateTimeTag</tag-class>
     	<body-content>empty</body-content>
     	<attribute>
     		<name>date</name>
     		<requried>false</requried>
     		<rtexprvalue>true</rtexprvalue>
     		<description>input date</description>
     	</attribute>
     	<attribute>
     		<name>pattern</name>
     		<requried>false</requried>
     		<rtexprvalue>false</rtexprvalue>
     		<description>date time format pattern</description>
     	</attribute>
     </tag>
</taglib>

 <body-content> empty<body-content>的值为empty,表示<util:dateTime>标记不包含内容。<required>设定这个属性是否为可选属性,false为可选,true为必选,默认值为false。<rtexprvalue>设定属性值是否接受JSP表达式的计算结果,默认为false。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="util" uri="http://crazy.com/taglib/util"%>
<html>
  <head></head>
  <body>
	<util:Timer>
		<%
		for(int i =0;i<1000000;i++);
		 %>
	</util:Timer>	
	<br/>
     <util:dateTime/>
     <br/>
	 <util:dateTime pattern= "yyyy年MM月  HH:mm:ss" />
	<br/>
</html>

 部署一下。运行即可。

1
0
分享到:
评论

相关推荐

    JSP定制标记使用手册

    2. **TILES定制标记库** TILES是一个流行的JSP标签库,它提供了一套用于构建可复用和模块化的页面布局的定制标记。TILES的核心概念是定义和插入“tiles”,即页面的各个部分。 - **INSERT标记**:INSERT标记用于...

    将定制标签库开发为标记文件

    这篇博客文章“将定制标签库开发为标记文件”深入探讨了如何创建自己的标签库,并将其转化为标记文件,以便在JSP页面中方便地使用。以下是对这一主题的详细阐述: 首先,我们来理解什么是自定义标签库。在Java Web...

    Struts标记库.chm

    在传统的JSP开发中,开发者通常需要编写大量的Java脚本来处理页面逻辑,而Struts标记库则通过提供一系列定制化的标签来实现这一目的,从而提高了代码的可读性和可维护性。 Struts标记库分为几个主要部分: 1. **...

    定制标签库

    "定制标签库"这个标题暗示了我们将在讨论如何构建和使用这样的库,以便更好地控制和扩展HTML的标记能力。 标签库(Tag Library)在JavaServer Pages (JSP) 和其他类似的服务器端技术中扮演着重要角色。它将可重用的...

    java源码:增强现实标记跟踪软件库 AccuTag.zip

    这个库的核心功能是识别和跟踪特定的图像标记,这些标记可以是二维条形码或者定制的图案,通过摄像头捕捉到这些标记后,AccuTag能够实时地将虚拟信息叠加到真实世界中,实现增强现实的效果。 1. **Java编程语言**:...

    基于Java的实例源码-增强现实标记跟踪软件库 AccuTag.zip

    【描述】描述中的“基于Java的实例源码”表明这个AccuTag库是一个可编程的工具,开发者可以下载并研究其源代码,理解其工作原理,甚至根据自己的需求进行定制和扩展。增强现实标记跟踪是AR技术的关键组成部分,通过...

    基于java的增强现实标记跟踪软件库 AccuTag.zip

    在AR技术中,标记是实现虚拟与现实世界交互的关键元素,它们可以是二维条形码、二维码或特定图案,通过摄像头捕获后,由AccuTag库进行解析和跟踪。 1. **Java语言基础**:AccuTag使用Java编程语言编写,Java是一种...

    pytest定制自动化测试编写规范.pdf

    此外,测试用例可以使用装饰器来标记和定制,如`@pytest.mark.wpsplus`和`@allure.title`,分别用于添加自定义标记和测试用例标题。 在实际的测试用例编写中,如`test_getdeptusers01`,可以使用with语句和allure....

    EZCAD激光打标软件;EZCAD2软件源代码;二次开发动态链接库MarkEzd.dll;.zip

    通过引用这个库,开发者可以创建自己的应用程序或控件,与EZCAD进行交互,实现特定的打标需求,比如自定义标记算法、集成其他系统数据等。使用C#编程语言,开发者可以方便地调用库中的函数,实现与EZCAD的无缝对接。...

    EzCad打标软件二次开发原件以及代码

    它的核心优势在于提供了用户友好的界面和强大的定制能力,使得用户可以根据自身需求进行二次开发,以满足特定的打标任务。本资料包主要包含以下几个关键组成部分: 1. **EZCAD激光打标软件**:这是一款基础的激光...

    ppt课件-第6章 JSP自定义标记.zip

    - **扩展性**:通过添加新的标记库,可以轻松扩展JSP应用的功能。 通过学习和实践JSP自定义标记,开发者可以构建出更高效、更可维护的Web应用。同时,了解和掌握自定义标记也是成为熟练JSP开发者的必经之路。

    Python打造出适合自己的定制化Eclipse IDE

    Eclipse IDE是一个强大且可扩展的开发环境,而通过集成Python,我们可以创建适合自己需求的定制化版本。本文主要介绍如何利用Python和Eclipse的扩展框架EASE来实现这一目标,使得无需编写Java代码也能实现自定义功能...

    extjs扩展标记

    3. **EXTTLD**:EXTTLD文件是EXTJS扩展标记库的描述文件,它定义了EXTJS JSP标签的属性、事件、默认值等。开发者可以通过EXTTLD文件定制EXTJS标签的行为,比如添加新的属性、扩展已有标签的功能。 4. **使用与集成*...

    libpandoc:C绑定到Pandoc,这是用Haskell编写的标记转换器库

    要使用libpandoc,开发者需要了解C语言,并且需要将库编译链接到自己的项目中。在完成编译后,可以通过libpandoc提供的API调用来执行转换任务,如读取输入文件、设置转换参数、选择输出格式以及保存转换后的结果。 ...

    JSTL Step by Step 中文教材.pdf

    它于2002年6月发布了1.0版本,并由四个定制标记库和一对通用标记库验证器组成。 #### 二、JSTL 1.0 版本概述 JSTL 1.0版本主要包含了以下几个部分: - **核心标记库(Core Tag Library)**:提供了一组常用功能,...

    基于jq+htmlde库存日历插件

    首先,jQuery是JavaScript的一个库,它简化了JavaScript的DOM操作、事件处理、动画制作和Ajax交互。在库存日历插件中,jQuery被用来处理用户与日历元素的交互,如点击日历上的日期、滑动切换月份等。通过使用jQuery...

    基于amplitudeJS开源HTML5网页音频库编写的音乐播放器.zip

    【标题】:“基于amplitudeJS开源HTML5网页音频库编写的音乐播放器” 【描述】:“html5开发” 在这个项目中,我们关注的是利用HTML5技术来开发一个音乐播放器,特别是通过集成amplitudeJS这一开源的HTML5网页音频...

    jstl教程

    JSTL 1.0主要由四个定制标记库和两个通用标记库验证器组成: 1. **Core标记库**:提供了用于数据管理、迭代、条件操作以及URL生成和操作的标签。这些标签帮助开发者管理页面内的数据流,控制内容的展示方式,以及...

    JavaScript_请随意使用FLASHMD,记得在分叉后标记Repo.zip

    "Flash-Md"可能是其中一个这样的库,可能提供了额外的功能,比如动画效果、交互性或者其他定制化选项,使得Markdown的渲染更加生动和吸引人。 在使用这个库之前,开发者首先需要解压"Flash-Md_main.zip",里面可能...

Global site tag (gtag.js) - Google Analytics