欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp自定义标签

程序员文章站 2022-05-30 22:11:29
...

一:JSP 自定义标签

自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。

JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。

你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。


二:自定义标签的开发过程

第一步:编写标签处理类,并继承TagSupport,重写其中的doStartTag()方法
代码如下:

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class LoginDateTag extends TagSupport{
	private static final long serialVersionUID = 1L;
	@Override
	public int doStartTag() throws JspException {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr = simpleDateFormat.format(new Date());
		try {
			pageContext.getOut().println(dateStr);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}
}

第二步:定义标签库描述文件xxx.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/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <description>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    <short-name>SimpleTagLibrary</short-name>
    <uri>/xx-tag</uri>
    <tag>
        <name>loginDate</name>
        <tag-class>com.xx.tag.LoginDateTag</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>

第三步:将标签库描述文件xxx.tld放到WEB-INF或其子目录下

jsp自定义标签

第四步:在jsp文件中使用自定义标签,代码如下:

<%-- <%@page import="java.text.SimpleDateFormat,java.util.Date"%> --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="xxx" uri="/hanweb-tag"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- 	<%
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr = simpleDateFormat.format(new Date());
	%> --%>
	欢迎来到德莱联盟 !您的登录时间为:<%-- <%=dateStr %> --%> <xxx:loginDate/>
</body>
</html>