- 출처 : http://www.theserverside.com/news/thread.tss?thread_id=28471 -
The servletRequest's getRequestDispatcher() can take a relative path while
ServletContext's getRequestDispatcher() can not(can only take relative to the
current context's root).
For example
with ServletContext both
-> request.getRequestDispatcher("./jsp/jsppage.jsp") - evaluated relative to the path of the request
-> request.getRequestDispatcher("/jsp/jsppage.jsp") - evaluated relative to the root
are all valid
with ServletContext only
-> context.getRequestDispatcher("/jsp/jsppage.jsp") is valid
but not context.getRequestDispatcher("./jsp/jsppage.jsp").
that is it can not evaluate a path other than context root.
As said in Javadoc servletContext's requestDispatcher must begin with a "/" and
is interpreted as relative to the current context root.
* 나름 내린 결론
ServletRequest.getRequestDispatcher()
- 인수로 상대경로를 취할 수 있다.
- 상대경로를 취할 경우 해당 서블릿에 대한 상대경로가 된다.
- 절대경로를 취할 경우 컨텍스트 루트에 대한 상대경로가 된다.
ServletContext.getRequestDispatcher()
- 인수로 상대경로를 취할 수 없다.
- 절대경로를 취할 경우 컨텍스트 루트에 대한 상대경로가 된다. (request와 동일)
* 참고
- 동일한 컨테이너의 다른 웹어플리케이션의 컨텍스트 얻어오기
=> httpServletRequest.getSession().getServletContext().getContext(컨텍스트경로);