自定义标签(二)

一、移除JSP页面的Java代码:写一个获取当前时间的程序。

     1、你首先写一个Java类,这个类继承Tag的默认实现类TagSupport,然后覆盖doStartTag()方法,代码如下:

package cn.tag;

import java.io.IOException;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
 * 移除jsp页面的Java代码。
 * Porject Name:tag
 * File Name:Demo1.java
 * Description:
 * Author:zhangjl
 * Date:2014-1-12
 * Copyright (c) 2014,[email protected] All Rights Reserved.
 */
public class Demo1 extends TagSupport {

	@Override
	public int doStartTag() throws JspException  {
		JspWriter out=this.pageContext.getOut();
		try {
			/*
			 * 返回当前的Java代码。
			 */
			out.print(new Date().toLocaleString());
		} catch (IOException e) {
			throw new RuntimeException();
		}
		return super.doStartTag();
	}
}

 2、写一个tld文件,这个没有就去tomcat的example web应用中拷贝。

<?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>JSTL 1.1 functions library</description>
	<display-name>JSTL functions sys</display-name>
	<tlib-version>1.1</tlib-version>
	<short-name>fns</short-name>
	<uri>http://java.sun.com/jsp/jstl/functionss</uri>
	<tag>
		<name>show</name>
		<tag-class>cn.tag.Demo1</tag-class>
		<body-content>empty</body-content>
	</tag>
</taglib>

 注意:1、<short-name>标签体中可以随便写。2、<tag>标签体中有个<describe>这个标签,这个你可以不要,或者写你的注释。3、<name>这个很重要,名字要写的有识别性。4、<tag-class>这个就是之前的Java类的路径。5、<body-content>这个表示你要写的标签是否有标签体,没有是empty,有就是一般写JSP(注意要大写)。6、<uri>这里的地址你可以写一个公司的网址之类的,这个很重要,要在JSP页面引用这个URI。

3、写一个jsp文件,然后在jsp文件中引用这个tld文件,或文件中配置的uri地址。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functionss"  prefix="fns"%>
<!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>
<fns:show/>
</body>
</html>

 这里注意红色字体的部分,perfix表示你写标签体的前缀<fns:show/>,show就是tld文件中配置的name标记。

 

你可能感兴趣的:(自定义标签)