Tomcat servlet RequestDispatcher forward覆盖响应代码

Tomcat servlet RequestDispatcher forward覆盖响应代码,tomcat,servlets,spring-mvc,Tomcat,Servlets,Spring Mvc,我在Tomcat中看到一个请求调度器转发出现了一些奇怪的行为。我之所以提到Tomcat,是因为确切的代码不会在Jetty上产生问题,所以它可能与servlet实现有关 Spring对现有的请求/响应进行转发-此时,响应的http状态代码为404;转发后,代码为500 实际逻辑发生在:InternalResourceView.renderMergedOutputModel。Spring代码确实提到转发的资源应该确定内容类型本身,但也没有提到被重写的代码 我在JDK 6.0.26上使用Spring

我在Tomcat中看到一个请求调度器转发出现了一些奇怪的行为。我之所以提到Tomcat,是因为确切的代码不会在Jetty上产生问题,所以它可能与servlet实现有关

Spring对现有的请求/响应进行转发-此时,响应的http状态代码为404;转发后,代码为500

实际逻辑发生在:InternalResourceView.renderMergedOutputModel。Spring代码确实提到转发的资源应该确定内容类型本身,但也没有提到被重写的代码


我在JDK 6.0.26上使用Spring 3.0.5

Tomcat不会无缘无故地这么做。HTTP 500通常意味着Java代码引发了异常。显然,向404的转发本身就失败了,出现了一个例外。具体的异常和stacktrace应该会为您提供问题的答案。如果您已将默认HTTP 500错误页面替换为不显示任何异常详细信息的自定义页面,请在必要时阅读服务器日志。如果您不理解异常和stacktrace,请将其发布在您的问题中,以便我们可以用外行的术语解释,以便您自己确定并解决根本原因。我已检查了日志-没有记录异常。此外,转发工作正常,没有引发任何异常。我在主要信息中提供了更多细节。感谢您的快速响应。您似乎暗示响应的状态为500,但包含转发资源的内容。是这样,还是响应中有错误消息?另外,假设您有默认的tomcat设置,您是否检查了所有日志,包括catalina和localhost日志?是的,检查了所有日志。至于错误,设置如下:我有一个SimpleMappingExceptionResolver将异常映射到错误代码-在ResourceNotFoundException异常上,响应应该有一个404错误代码,并且在一定程度上是这样的。然后,Spring尝试呈现与该错误相关联的jsp,出于某种原因,该进程将正确的404代码重写为500。是的,资源确实是一个错误页面,但是404是一个错误代码,所以它适合。更重要的是,促使我将其归类为Tomcat bug的原因是,它只发生在Tomcat中,而不发生在Jetty中。