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)的名字作为参数。