web.xml 404重定向到servlet,如何获取原始URI?

Eri*_*rce 11 web.xml servlets http-status-code-404

我正在通过web.xml中的以下内容将404错误重定向到servlet.

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

我想记录请求尝试去的地方,但我没有从引用者标题中获取它:request.getHeader("referer")

如果我只是点击任何旧的随机不存在的页面,那么显示'null'.

而request.getRequestURL()/ request.getRequestURI()都只显示最终的登陆servlet信息(即,/ notFound).

有没有办法获得所请求的"坏"页面网址?

Bal*_*usC 21

是的,它可以作为具有名称的请求属性,该属性javax.servlet.forward.request_uri由键控RequestDispatcher#FORWARD_REQUEST_URI.错误页面位置即通过简单RequestDispatcher#forward()调用调用.

所以,你可以在servlet中得到如下:

String originalUri = request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
Run Code Online (Sandbox Code Playgroud)

或在EL中:

<p>Original URI: ${requestScope['javax.servlet.forward.request_uri']}</p>
Run Code Online (Sandbox Code Playgroud)