如何在请求调度程序转发后获取原始页面url/uri

Mic*_*sov 3 java tomcat java-ee

我有一个Error404Servlet,在web.xml中配置为404的错误页面:

   <servlet>
      <servlet-name>Error404</servlet-name>
      <servlet-class>com.foo.bar.Error404Servlet</servlet-class>
   </servlet>

   <error-page>
      <error-code>404</error-code>
      <location>/error404</location>
   </error-page>
Run Code Online (Sandbox Code Playgroud)

在这个servlet中,我必须记录导致404的原始URL,但是request.getRequestURI()总是返回"/ error404"

我怎样才能获得原始网址?我知道的非常难看的方法是创建过滤器,将原始URL放入请求属性.

rsp*_*rsp 11

从请求中,您可以在发生错误时检索容器设置的属性:

request.getAttribute("javax.servlet.error.request_uri");
Run Code Online (Sandbox Code Playgroud)

其他可以提供有用信息的属性;

javax.servlet.error.status_code
javax.servlet.error.exception_type
javax.servlet.error.message
javax.servlet.error.exception
Run Code Online (Sandbox Code Playgroud)

另请参见此servlet 2.3功能文章.