一、自定义一个标签
1、定义Person类,他继承SimpleTagSupport
package com.sunrex.demo07;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class Person extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("hello, world!11!");
}
}
2、定义WEB-INF/person.tld文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.3</tlib-version> <jsp-version>1.2</jsp-version> <short-name>person</short-name> <uri>http://www.sunrex.com/person</uri> <tag> <!-- 定义标签名 --> <name>name</name> <!-- 定义标签处理类 --> <tag-class>com.sunrex.demo07.Person</tag-class> <!-- 定义标签体为空 --> <body-content>empty</body-content> </tag> </taglib>
3、在jsp页面中使用标签
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!-- 引入标签 -->
<%@ taglib prefix="person" uri="http://www.sunrex.com/person" %>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<!-- 使用标签 -->
<person:name/>
</body>
</html>
4、输出的结果是:hello, world!11!
二、定义带属性的标签
1、定义Person类
package com.sunrex.demo07;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class Person extends SimpleTagSupport {
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("<br>属性username的值为=" + this.getUsername());
if(this.password == null || this.password.length()<1) {
getJspContext().getOut().write("<br>属性password没有值");
} else {
getJspContext().getOut().write("<br>password属性的值为:" + this.getPassword());
}
}
}
2、定义tld标签
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.3</tlib-version> <jsp-version>1.2</jsp-version> <short-name>person</short-name> <uri>http://www.sunrex.com/person</uri> <tag> <!-- 定义标签名 --> <name>name</name> <!-- 定义标签处理类 --> <tag-class>com.sunrex.demo07.Person</tag-class> <!-- 定义标签体为空 --> <body-content>empty</body-content> <attribute><!-- 定义标签属性 --> <name>username</name> <required>true</required><!-- 必须属性 --> </attribute> <attribute> <name>password</name> <required>false</required><!-- 不是必须属性 --> </attribute> </tag> </taglib>
3、在jsp页面的调用
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!-- 引入标签 -->
<%@ taglib prefix="person" uri="http://www.sunrex.com/person" %>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<!-- 使用标签 -->
<person:name username="jhlishero"/>
<person:name username="东南西北风" password="jhl"/>
</body>
</html>
三、定义循环输出的标签:如iterator
待完善