2008-11-15 81 views
1

我有一個在WebSphere Application Server 6.0上運行的JavaEE 1.4 Web應用程序。在web.xml,有用於攔截所有服務器請求一個servlet:禁用JSP擴展處理

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

,直到我試圖請求與*.jsp結束的東西也能正常工作。在這種情況下,服務器試圖找到JSP與該名稱失敗,出現錯誤:

 
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) 

我需要有這樣的要求由servlet處理,但似乎服務器使用一些JSPExtensionProcessor處理與.jsp結束的所有路徑。有什麼方法可以改變這種行爲嗎?

回答

2

是的,您需要將您的servlet映射到* .jsp以獲取* .jsp支持重定向到您的servlet。

<servlet-mapping> 
     <servlet-name>name</servlet-name> 
     <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

但是,讓jsps直接訪問通常是個壞主意。將它們放在WEB-INF的某個目錄中,然後將適當的url(.do,.action等)映射到一個servlet,然後在內部重定向到該JSP是更好的做法。

因此,不用鍵入thisUrl.jsp,用戶可以鍵入thisUrl.do或thisUrl.action,然後它將被servlet命中以重定向到thisUrl.jsp。

+0

完美的作品,謝謝。 – Das 2008-11-15 23:06:19