一尘不染

请求调度员转发后如何获取原始页面的url / uri

tomcat

我有一个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>

在此servlet中,我必须记录导致404的原始url,但request.getRequestURI()始终返回“ / error404”

我如何获得原始网址?我知道的丑陋方法是创建将原始url放入request属性的过滤器。


阅读 241

收藏
2020-06-16

共1个答案

一尘不染

如果发生错误,可以从请求中检索由容器设置的属性:

request.getAttribute("javax.servlet.error.request_uri");

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

javax.servlet.error.status_code
javax.servlet.error.exception_type
javax.servlet.error.message
javax.servlet.error.exception

另请参阅此Servlet
2.3功能文章

2020-06-16