自定义标签-众高手帮我看下,这个问题出在哪,该如何解决?急!
最近开始学习“自定义标签”,但在最后运行的时候出现了异常,代码如下:
test.jsp:
<%@ page contentType= "text/html; charset=GBK " %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ">
<!DOCTYPE taglib PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ">
<%@ taglib uri= "/WEB-INF/mytag.tld " prefix= "mytag "%>
<html>
<head>
<title> My JSP 'Test.jsp ' starting page </title>
</head>
<body>
This is my JSP page. <br>
Date : <mytag:demo parameter= "date " /> <br>
File : <mytag:demo parameter= "filename " />
</body>
</html>
-------------------------------------------
DemoTag.java:
package jsp;
import java.util.Date;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class DemoTag extends TagSupport {
public int doStartTag() throws JspException {
try {
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
JspWriter out = pageContext.getOut();
if (parameter.compareToIgnoreCase( "filename ") == 0)
out.print(request.getServletPath());
else
out.print(new Date());
} catch (java.io.IOException e) {
throw new JspTagException(e.getMessage());
}
return SKIP_BODY;
}
private String parameter = "date ";
public void setParameter(String parameter) {
this.parameter = parameter;
}
public String getParameter() {
return parameter;
}
}
-----------------------------------------
web.xml:
<?xml version= "1.0 " encoding= "UTF-8 "?>
<web-app 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-app_2_4.xsd " version= "2.4 ">
<jsp-config>
<taglib>
<taglib-uri> /WEB-INF/mytag.tld </taglib-uri>
<taglib-location> /WEB-INF/mytag.tld </taglib-location>
</taglib>
</jsp-config>
<servlet>
<description> Added by JBuilder to compile JSPs with debug info </description>
<servlet-name> debugjsp </servlet-name>
<servlet-class> org.apache.jasper.servlet.JspServlet </servlet-class>
<init-param>
<param-name> classdebuginfo </param-name>
<param-value> true </param-value>
</init-param>
<load-on-startup> 3 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name> debugjsp </servlet-name>
<url-pattern> *.jsp </url-pattern>
</servlet-mapping>
</web-app>
---------------------------------------------------
mytag.tld:
<?xml version= "1.0 " encoding= "ISO-8859-1 "?>
<taglib>
<tlib-version> 1.0 </tlib-version>
<jsp-version> 1.2 </jsp-version>
<tag>
<name> demo </name>
<tag-class> jsp.DemoTag </tag-class>
<body-content> empty </body-content>
<attribute>
<name> parameter </name>
<required> false </required>
<rtexprvalue> true </rtexprvalue>
</attribute>
</tag>
</taglib>
-------------------------------------------
出现如下错误:
2007-7-1 16:08:21 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet debugjsp threw exception
org.apache.jasper.JasperException: /test.jsp(12,11) Unable to load tag handler class "jsp.DemoTag " for tag "mytag:demo "
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:196)
at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1318)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1564)
at org.apache.jasper.compiler.Parser.parse(Parser.java:126)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
请问该如何解决?谢谢!在线等······
[解决办法]
classes文件下应该有个jsp文件夹,jsp文件夹里有一个DemoTag.class才对
应为你的完整类名是jsp.DemoTag
我的异常网推荐解决方案:org.apache.jasper.JasperException: Unable to compile class,http://www.myexception.cn/j2ee/2308.html