我在Tomcat中提供了一个Spring MVC应用程序。当用户输入未找到的页面时,它将显示我在web.xml
中设置的默认404页面<error-page>
<error-code>404</error-code>
<location>/errors/404/</location>
</error-page>
问题在于,如果用户去了 http://mydomain/bad/url
它被重定向到 http://mydomain/errors/404/
这很烦人,因为如果用户键入错误的网址,很难看出错误是什么并纠正错误。
404错误后,我希望保留原始网址,但会显示错误页面。 (即前进,而不是重定向)。这是我对大多数Web服务器如何工作的印象。这可能吗?
答案 0 :(得分:4)
我不太明白为什么这样做会有效,但是......
我发现如果您设置状态代码并且响应为空(或者如果您尝试转发到错误页面),Tomcat将重定向到错误页面:
((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_FOUND);
但是如果你要求Tomcat发送页面,它就会转发并将URL保留为原始状态,正如我所寻找的那样。
((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_FOUND);
((HttpServletResponse) response).sendError(HttpServletResponse.SC_NOT_FOUND);