java类
package com.nn.taglib;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class ListTagLib extends TagSupport{
private static final long serialVersionUID = 1L;
//jsp里面获取来的值
private String name;
//存放一次遍历的值
private String var;
//ID和name
private String property;
private String bgcolor;
@Override
public int doAfterBody() throws JspException {
return super.doAfterBody();
}
@Override
public int doEndTag() throws JspException {
return super.doEndTag();
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
//获取name的值,这个值将会定位在结果集中的某个字段
Map<String,List<String>> map = new HashMap<String,List<String>>();
List<String> list1 = new ArrayList<String>();
list1.add("1");
list1.add("2");
list1.add("3");
List<String> list2 = new ArrayList<String>();
list2.add("a");
list2.add("b");
list2.add("c");
map.put("data", list1);
map.put("char", list2);
List<String> result = map.get(name);
StringBuffer sb = new StringBuffer();
sb.append("<table");
if(bgcolor!=null){
sb.append(" bgcolor=\"");
sb.append(bgcolor);
sb.append("\" ");
}
sb.append(">");
for(String s : result){
sb.append("<tr>");
sb.append("<td>");
sb.append(s);
sb.append("</td>");
sb.append("</tr>");
}
sb.append("</table>");
try {
out.print(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_BODY_INCLUDE;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVar() {
return var;
}
public void setVar(String var) {
this.var = var;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String getBgcolor() {
return bgcolor;
}
public void setBgcolor(String bgcolor) {
this.bgcolor = bgcolor;
}
}
tld文件
<?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.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname></shortname>
<uri>http://www.xiaoluo.com</uri>
<tag>
<name>set</name>
<tagclass>com.nn.taglib.ListTagLib</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>bgcolor</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
jsp测试文件
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://www.xiaoluo.com" prefix="cc" %>
<html>
<head>
<title>标记练习</title>
</head>
<body>
<%
request.setAttribute("text","tt");
pageContext.setAttribute("text","bb");
%>
<cc:set name="char" property="test" var="tt" bgcolor="red"/>
</body>
</html>