文件有:
thirdtag.jsp 在E:\Tomcat 5.0\webapps\j2ee-jsp
taglib.tld   在E:\Tomcat 5.0\webapps\j2ee-jsp\WEB-INF
web.xml      在E:\Tomcat 5.0\webapps\j2ee-jsp\WEB-INF
ourtags.greetbyname包 在E:\Tomcat 5.0\webapps\j2ee-jsp\WEB-INF\classes\/////////////////////////////////////////////////////////////////////////////////////////
[thirdtag.jsp]
<html>
<%@ taglib uri="taglib" prefix="simple" %>
Excuse me.
<simple:hello firstname="tools" />
</html>
/////////////////////////////////////////////////////////////////////////////////////////
[taglib.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">
<!-- a tag library descripotr -->
<taglib>
 <tlibversion>1.0 </tlibversion>
 <jspversion>1.1</jspversion>
 <shortname>simple</shortname>
 <uri></uri>
 <info>A simple tag library for the j2ee bible examples</info>
 <tag>
 <name>hello</name>
 <tagclass>ourtags.greetbyname</tagclass>
 <info>greets user by attribute value.</info>
 <attribute>
 <name>firstname</name>
 <required>true</required>
 <rtexprvalue>true</rtexprvalue>
 </attribute>
 </tag>
</taglib>
////////////////////////////////////////////////////////////////////////////////////////
[ourtags.greetbyname包]
package ourtags;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class greetbyname extends TagSupport
{private String firstname;
public int doStartTag()
{try{
JspWriter out=pageContext.getOut();
out.print("hello"+firstname);
}
catch(IOException e){}
return(SKIP_BODY);
}
public String setFirstname(String firstname)
{this.firstname=firstname;
 return "succeed";
}
public String getFirstname()
{return firstname;
}
}
/////////////////////////////////////////////////////////////////////////////////////////
执行http://localhost:8080/j2ee-jsp/thirdtag.jsp
出现问题:
org.apache.jasper.JasperException: /thirdtag.jsp(4,0) Unable to find setter method for attribute: firstname
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
org.apache.jasper.compiler.Generator$GenerateVisitor.evaluateAttribute(Generator.java:2674)
org.apache.jasper.compiler.Generator$GenerateVisitor.generateSetters(Generator.java:2822)
org.apache.jasper.compiler.Generator$GenerateVisitor.generateCustomStart(Generator.java:2156)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1667)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3269)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
/////////////////////////////////////////////////////////////////////////////////////////
我的问题:
setFirstname和getFirstname这样写是否正切呢?(请高手帮忙)