自定义标签(四)

       早期 JSP 自定义标签类开发过程略微复杂一些,但 JSP 2 已经简化了这个过程,它只要自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,除此之外,JSP 自定义标签类还有如下要求

       1、如果标签类包含属性,每个属性都有对应的 getter 和 setter 方法。

       2、重写 doTag() 方法,这个方法负责生成页面内容。

下面写个例子:写一个执行标签体的类。

       1、先写一个标签处理器的Java类:

 

package cn.simpletag;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
 * 标签体的执行
 * Porject Name:tag
 * File Name:Demo1.java
 * Description:
 * Author:zhangjl
 * Date:2014-1-19
 * Copyright (c) 2014,[email protected] All Rights Reserved.
 */
public class Demo1 extends SimpleTagSupport {
	@Override
	public void doTag() throws JspException, IOException {
		/*
		 * 获取标签体
		 */
		JspFragment jf=getJspBody();
		/*
		 * invoke执行标签体,其实这个jf.invoke(null);也是只想能够标签体,默认就是创建了一个写给浏览器的流。
		 */
		jf.invoke(this.getJspContext().getOut());
	}
}

              2、在写一个映射Java类的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>JSTL 1.1 functions library</description>
	<display-name>JSTL functions sys</display-name>
	<tlib-version>1.1</tlib-version>
	<short-name>simplefns</short-name>
	<uri>//simple</uri>
	<tag>
		<name>demo1</name>
		<tag-class>cn.simpletag.Demo1</tag-class>
		<body-content>scriptless</body-content>
	</tag>
</taglib>

 

             3、在jsp页面展示实现的功能

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="//simple" prefix="simplefns"%>
<!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>简单标签</title>
</head>
<body>
<simplefns:demo1>
	aaaaaaaa
</simplefns:demo1>
</body>
</html>

 

 

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