2013-03-26 2 views
1

Я написал простое веб-приложение непосредственно в каталоге webapp Tomcat и получил доступ к файлу hello.jsp через URL-адрес localhost. Теперь я хочу сделать привязку url к классу сервлета, который был скомпилирован на предыдущем шаге. Мой код web.xml выглядит следующим образом:url-mapping для скомпилированного jsp (сервлета) не работает

Я хочу, чтобы иметь возможность указывать на url, заканчивающийся на «/ hi», и иметь скомпилированный jsp-запуск. Любая помощь будет оценена по достоинству.

<welcome-file-list> 
    <welcome-file>hello.jsp</welcome-file> 
</welcome-file-list> 

<servlet> 
    <servlet-name>hi</servlet-name> 
     <servlet-class>org.apache.jsp.hello_jsp</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>hi</servlet-name> 
    <url-pattern>/hi</url-pattern> 
</servlet-mapping> 

В настоящее время, когда я пытаюсь достигнуть его от моего указанного URL-шаблон, я получаю эту трассировку стека:

type Exception report 

message Error instantiating servlet class org.apache.jsp.hello_jsp 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Error instantiating servlet class org.apache.jsp.hello_jsp 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    java.lang.Thread.run(Thread.java:722) 
root cause 

java.lang.ClassNotFoundException: org.apache.jsp.hello_jsp 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    java.lang.Thread.run(Thread.java:722) 
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.35 logs. 

ответ

2

Это действительно не так. Вы должны использовать <jsp-file> вместо <servlet-class>. В конце концов, вы там в исходном коде просто JSP-файл, а не класс сервлета.

<servlet> 
    <servlet-name>hi</servlet-name> 
    <jsp-file>/hello.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
    <servlet-name>hi</servlet-name> 
    <url-pattern>/hi</url-pattern> 
</servlet-mapping> 
Смежные вопросы