创建stuTag 类extends TagSupport :
package tag;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class stuTag extends TagSupport {
private static final long serialVersionUID = 1L;
private ArrayList<Student> stues = new ArrayList<Student>();
private String sex;
public stuTag(){
stues.add(new Student("aaa","女"));
stues.add(new Student("bbb","男"));
stues.add(new Student("ccc","女"));
stues.add(new Student("ddd","男"));
stues.add(new Student("eee","男"));
stues.add(new Student("fff","女"));
stues.add(new Student("ggg","男"));
stues.add(new Student("hhh","女"));
stues.add(new Student("iii","男"));
}
public int doEndTag() throws JspException {
return this.SKIP_BODY;//不要对体求值
}
public int doStartTag() throws JspException {
ServletResponse response = pageContext.getResponse();
try{
PrintWriter out = response.getWriter();
for(int i=0;i<stues.size();i++){
Student stu = stues.get(i);
if(sex!=null){
if(sex.equals(stu.getSex())){
out.println((i+1)+":"+stu.getName()+stu.getSex()+"<br>");
}
}else{
out.println((i+1)+":"+stu.getName()+stu.getSex()+"<br>");
}
}
}catch(Exception e){
e.printStackTrace();
}
return this.EVAL_PAGE;//要继续读下面的jsp标签
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
class Student{
private String name;
private String sex;
public Student(String name,String sex){
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
创建tld标签说明文件(放在web-inf下面):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>bean</shortname>
<uri>stu</uri>
<tag>
<name>stuAll</name>
<tagclass>tag.stuTag</tagclass>
<attribute>
<name>sex</name>
<required>false</required> <!-- 属性值是否必须 -->
<rtexprvalue>true</rtexprvalue> <!-- 是否允许属性值是表达式 -->
</attribute>
</tag>
</taglib>
最后是调用页面:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="stu" prefix="stu"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>page</title>
</head>
<body>
<stu:stuAll sex="男"></stu:stuAll>
</body>
</html>
显示结果:
2:bbb男
4:ddd男
5:eee男
7:ggg男
9:iii男