Не работает директива страницы
Привет я проверяю директивы страницы, но расширяет директиву страницы не работает.
Ниже моя страница 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 ответ
Решение
Вам необходимо прочитать спецификацию JSP, в частности раздел JSP.11.2.4, в котором изложен ряд требований для суперкласса, который вы используете с extends, и ни один из которых не удовлетворяется суперклассом в вашем вопросе.
... предоставленный суперкласс:
- Реализует HttpJspPage, если протокол HTTP, или JspPage в противном случае.
- Все методы в интерфейсе сервлета объявлены как финальные.
Кроме того, автор JSP-страницы несет ответственность за соответствие предоставленного суперкласса:
- Метод службы API сервлета вызывает метод _jspService.
- Метод init(ServletConfig) сохраняет конфигурацию, делает ее доступной через getServletConfig, затем вызывает jspInit.
- Метод уничтожения вызывает jspDestroy.