It's very clear if you glance through the Servlet API.
If you use a ServletContext to get a RequestDispatcher you MUST use a
STRING starting with a "/" which is interpreted as relative to the Web-Application root.
But if you use a Request to get a RequestDispatcher then the STRING you specify in the request.getRequestDispatcher("a STRING") CAN start with either a "/" or choose not do so.
Please note the difference in the above 2 paragraphs. MUST and CAN.
In case you are using a request to get a RequestDispatcher and you start off with a "/" then it is interpreted as relative to the Web-Apllication context just as it is with a ServletContext. But if you do not start with a leading "/" then the path is interpreted as relative to the request.(i.e /web-application/reuestURI/-----)