JSTL中的自定义标签使用方法

JSTL语法使用时,需要导入jstl.1.2包,通过引用包中的标签实现具体的语法。可以仿照其中的标签自定义一些特殊功能的标签,例如定义输出系统时间的标签。

1、创建tld文件,文件名自己定义尽量简洁,文件以tld结尾,例如:k.tld

<?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/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <description>My tag library</description>
  <display-name>My JSTL core</display-name>
  <tlib-version>3.2</tlib-version>
  <!--下面一项前缀和文件名相同,前面三项自己定义-->
  <short-name>k</short-name>
  <!--uri地址自己定义-->
  <uri>/my-tag</uri>
   <!--下面几项格式是套路,逐一填写-->
   <tag>
   	<description>标签描述</description>
   	<name>sysdate</name>
   	<!--标签类,包名.类名-->
   	<tag-class>web.SysDateTag</tag-class>
   	<!--双标签中的内容,如果是单标签,则是empty-->
   	<body-content>empty</body-content>
   	<attribute>
   		<description>属性格式></description>
   		<name>format</name>
   		<!-- 是否必须输入 -->
   		<required>true</required>
   		<!-- 是否允许EL表达式输入 -->
   		<rtexprvalue>true</rtexprvalue>
   	</attribute>
   </tag>
  
</taglib>

2、创建类

package web;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SysDateTag extends SimpleTagSupport {
	//给方法传入参数,该变量与标签里面的属性名一致
	private String format;
	
	
	public String getFormat() {
		return format;
	}


	public void setFormat(String format) {
		this.format = format;
	}


	@Override
	public void doTag() throws JspException, IOException {
		Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat(format);
		String time=sdf.format(date);
//		输出时间,该方法声明返回值类型是JspContext,
//		而实现方法时的实际类型是PageContext,PageContext extends JspContext
		PageContext ctx=(PageContext)getJspContext();
		
		JspWriter out=ctx.getOut();
		out.println(time);
//		此处不能关闭流,因为其他标签也要使用,Tomcat会自动关闭
		
	}
	
	
}

3、写jsp文件

<%@ page pageEncoding="utf-8" %>
<!--使用taglib指令,prefix是标签文件的前缀-->
<%@taglib uri="/my-tag" prefix="k" %>
<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title>自定义标签输出当前时间</title>
</head>
<body>
	<h1>自定义标签输出当前时间</h1>
	<p>
	<!--sysdate是自定义标签中的标签名-->
		<k:sysdate format="yyyy-MM-dd HH:mm:ss"/>
	
	</p>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值