[펌글] ServletRequest의 getRequestDispatcher()와 ServletContext의 getRequestDispatcher()의 다른 점.

By | 4월 4, 2012

- 출처 : 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(컨텍스트경로);

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments