扩展页面指令不起作用

时间:2014-09-30 06:47:56

标签: java jsp

您好我正在检查页面指令但是扩展页面指令不起作用。
下面我的jsp页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page extends="javapackage.TestClass" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>Hai
<% out.println(show()); %>
</body>
</html>

我的班级是

package javapackage;

public class TestClass {
  public String show(){
      return "Welcome Prasad";
 }
}

它给我500错误
例外

org.apache.jasper.JasperException: java.lang.ClassCastException: org.apache.jsp.first_jsp cannot be cast to javax.servlet.Servlet
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:177)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause 

  java.lang.ClassCastException: org.apache.jsp.first_jsp cannot be cast to javax.servlet.Servlet
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


即使我尝试使用扩展HttpServlet但没有用的类。所以请任何人帮助我。我正在使用Tomcat 7
谢谢

1 个答案:

答案 0 :(得分:2)

您需要阅读JSP规范,特别是JSP.11.2.4部分,其中列出了您使用extends的超类的许多要求,而且您的问题中的超类都没有满足这些要求。

  

......提供的超类:

     
      
  • 如果协议是HTTP,则实现HttpJspPage,否则实现JspPage。
  •   
  • Servlet接口中的所有方法都被声明为final。
  •   
     

此外,它提供的是JSP页面作者的责任   超类满足:

     
      
  • servlet API的服务方法调用_jspService方法。
  •   
  • init(ServletConfig)方法存储配置,使其可用   getServletConfig,然后调用jspInit。
  •   
  • destroy方法调用jspDestroy。
  •