JavaWeb笔记之自定义标签

在自定义标签中主要有如下几种典型的标签类型:

1.不带属性和标签的简单标签

<myprefix:SomeTag/>

2.带有属性没有标签体的标签

<myprefix:SomeTag myAttribute ="test"/>

3.带有属性的标签体的标签

<myprefix:SomeTag myAttribute ="test"/>myBody</myprefix:SomeTag>

开发使用一个自定义标签需要三部

1.开发标签处理类

由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广,在JSP 2.0中定义了一个更为简单、便于编写和调用的SimpleTag接口来实现标签的功能。

SimpleTag方法介绍

扫描二维码关注公众号,回复: 3479237 查看本文章

1.1 setJspContext方法

用于把JSP页面的pageContext对象传递给标签处理器对象

1.2 setParent方法

用于把父标签处理器对象传递给当前标签处理器对象

1.3 getParent方法

用于获得当前标签的父标签处理器对象

1.4 setJspBody方法

用于把代表标签体的JspFragment对象传递给标签处理器对象

1.5 doTag方法

用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。在doTag方法中可以抛出javax.servlet.jsp.SkipPageException异常,用于通知WEB容器不再执行JSP页面中位于结束标记后面的内容,这等效于在传统标签的doEndTag方法中返回Tag.SKIP_PAGE常量的情况。SimpleTagSupport类实现了SimpleTag接口

package com.sgf.Test;

import java.io.IOException;
import java.io.StringWriter;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SimpleTagDemo extends SimpleTagSupport{
	StringWriter sw = new StringWriter();
	public void doTag() throws JspException, IOException {
		getJspBody().invoke(sw);
	    getJspContext().getOut().println(sw.toString());
	}
}

2.定义标签的描述文件

描述文件是一个后缀为tld的xml文档

<?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  -->
    <description>JSTL 1.1 core library</description>
	<display-name>JSTL core</display-name>
	<tlib-version>1.0</tlib-version>

	
	<tag>
		<name>hello</name>
		<tag-class>com.sgf.Test.SimpleTagDemo</tag-class>
		<body-content>scriptless</body-content>
	</tag>
</taglib>
一个tag标记对应一个自定义标签 
tld文件中有四种标签体类型 :empty  JSP  scriptless  tagdepentend 

3.在JSP页面中引用自定义标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/mytag.tld" prefix="sgf" %>
 
<!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>
	<sgf:hello>1</sgf:hello>
</body>
</html>

uri属性:指定标签描述文件的位置

prefix属性:指定标签的前缀

猜你喜欢

转载自blog.csdn.net/qq_33028695/article/details/82384473
今日推荐