2008-11-15 63 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