来自 servletcontext 的 RequestDispatcher 与请求

moh*_*our 5 servlets requestdispatcher

这两行代码有什么不同,我们应该什么时候使用它们?

1.

RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);
Run Code Online (Sandbox Code Playgroud)

2.

RequestDispatcher view = getServletContext().getRequestDispatcher(“/result.jsp”);
Run Code Online (Sandbox Code Playgroud)

Abh*_*yak 5

1) RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);

这里,

  • 视图是相对于当前请求的。你必须传递jsp/html的相对路径
  • 用于在同一个 Web 应用程序中链接两个 Servlet。

Java 文档说,

指定的路径名​​可能是相对的,但它不能扩展到当前 servlet 上下文之外。如果路径以“/”开头,则将其解释为相对于当前上下文根。如果 servlet 容器无法返回 RequestDispatcher,则此方法返回 null。

该方法与 ServletContext.getRequestDispatcher(java.lang.String) 的区别在于,该方法可以采用相对路径。

2) RequestDispatcher view = getServletContext().getRequestDispatcher(“/result.jsp”);

这里,

  • view 是相对于 Servlet 上下文的根,你必须传递 jsp/html 的绝对路径
  • 用于将两个 Web 应用程序链接到相同/不同的服务器中。

Java 文档说,

路径名必须以“/”开头,并被解释为相对于当前上下文根。使用 getContext 为外部上下文中的资源获取 RequestDispatcher。如果 ServletContext 无法返回 RequestDispatcher,则此方法返回 null。