将 404 错误重定向到 Servlet 而不是 JSP 页面?

Redirect 404 Errors to Servlet instead of JSP Page?

所以我看到了多个关于如何通过在 web.xml 中添加以下内容将 404 错误请求重定向到自定义 JSP 页面的线程:

<error-page>
    <error-code>404</error-code>
    <location>/404page.jsp</location>
</error-page>

此方法的问题在于 URL 在此结构中显示以下页面:

www.mydomain.com/404page.jsp

.jsp 部分让我很沮丧,因为所有其他页面都是通过 Servlet 映射的,因此 .jsp在他们里面是不可见的。

如何将用户重定向到 Servlet 而不是 404page.jsp JSP 页面?这样 URL 就是:

www.mydomain.com/404

这可能吗?如果不是,隐藏 URL 的 .jsp 部分的方法是什么?

您可以创建一个 404Handler Servlet 并像下面那样映射它

<servlet-mapping>
        <servlet-name>404Handler</servlet-name>
        <url-pattern>/404</url-pattern>
</servlet-mapping>
<error-page>
    <error-code>404</error-code>
    <location>/404</location>
</error-page>