Deaktivieren JSP Erweiterung Verarbeitung
Frage
Ich habe eine JavaEE 1.4 Web-Anwendung, die auf WebSphere Application Server 6.0. In web.xml
gibt es ein Servlet konfiguriert, dass alle Server-Anfragen abfangen:
<servlet-mapping>
<servlet-name>name</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Das funktioniert gut, bis ich versuche, etwas mit *.jsp
Endung zu beantragen. In diesem Fall versuchen Server JSP mit diesem Namen zu finden und schlagen mit dem Fehler:
java.io.FileNotFoundException: JSPG0036E: Failed to find resource /cfvct/search_criteria.jsp at com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor.findWrapper(JSPExtensionProcessor.java:279) at com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor.handleRequest(JSPExtensionProcessor.java:261) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3226) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:253) at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:229) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1970) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:120) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:434) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:373) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:253) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminaters(NewConnectionInitialReadCallback.java:207) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:109) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952) at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1475)
Ich brauche diese Anforderung durch das Servlet verarbeitet haben, aber scheint Server einige JSPExtensionProcessor
nutzt alle Wege enden mit .jsp
zu verarbeiten. Gibt es eine Möglichkeit, dieses Verhalten zu ändern?
Lösung
Ja, müssen Sie Ihr Servlet * .jsp, um zur Karte zu erhalten * .jsp Unterstützung für Servlets weitergeleitet.
<servlet-mapping>
<servlet-name>name</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
Es ist in der Regel eine schlechte Idee jsps zugänglich direkt zu haben, aber. sie in WEB-INF in einem Verzeichnis platzieren, dann eine entsprechende URL-Zuordnung (.do, .Action, usw.) an ein Servlet, die dann intern zu dieser JSP leitet die bessere Praxis.
Also statt thisUrl.jsp einzugeben, würde der Benutzer eingeben thisUrl.do oder thisUrl.action, und es wäre dann vom Servlet getroffen zu werden, um thisUrl.jsp zu umleiten.