次のようなサンプル web.xml があります。
<servlet>
<servlet-name>Authorize</servlet-name>
<jsp-file>/WEB-INF/jsp/facebook/authorize.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>postAuthorize</servlet-name>
<jsp-file>/WEB-INF/jsp/facebook/post_authorize.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>referrerLink</servlet-name>
<jsp-file>/WEB-INF/jsp/facebook/refer.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>checkin</servlet-name>
<jsp-file>/WEB-INF/jsp/facebook/checkin.jsp</jsp-file>
</servlet>
アクセスする/checkins/facebook/refer
と (checkins はコンテキスト パスです)、次のスタック トレースが表示されます。
javax.servlet.ServletException: No servlet class has been specified for servlet referrerLink
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:662)
私は WEB-INF と共に jsp ディレクトリを持っています。