ServletRequest.getRequestDispatcher()和ServletContext.getRequestDispather()区别


 RequestDispatcher接口

    RequestDispatcher对象由Servlet容器创建,用于封装一个由路径所标识的服务器资源。利用RequestDispatcher对象,可以把请求发给其他的Servlet或jsp页面。


得到RequestDispatcher对象的三种方法:

    一是利用ServletRequest接口中的getRequestDispatcher(String  path)方法

   另外两种是利用ServletContext接口中的getNamedDispatcher(String name)

    和getRequestDispatcher(String path)

     

     ServletRequest和ServletContext接口getRequestDispatcher(String path)

     区别:ServletContext.getRequestDispatcher(String path)方法的参数必须以斜杠(/)开始,被解释为相对于当前上下文根(context root)的路径。例如:/myservlet是合法的路径,而../myservlet是不合法的路径。而ServletRequest.getRequestDispatcher(String path)方法的参数不但可以使相对于上下文根的路径,而且可以是相对于当前Servlet的路径。如/myservlet和myservlet都是合法的路径。如果路径以斜杠(/)开始,则被解释为相对于当前上下文根的路径;如果没有以斜杠(/)开始,则被解释为相对于当前Servlet的路径。ServletContext接口中的getNamedDispatcher()方法则是以在部署描述符中给出的Servlet(或jsp)的名字作为参数。