为什么从servlet转发到JSP时必须使用正斜杠?

Kra*_*786 6 java jsp

在servlet中使用请求调度程序转发到JSP时,为什么JSP必须用正斜杠表示,如下所示:

    getServletContext().getRequestDispatcher("/foo.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

如果我在没有正斜杠的情况下使用它,我会在Tomcat中获得异常.

但是当我使用请求调度程序重定向到servlet时,我可以省略正斜杠.如果有一个servlet映射到url模式,下面的代码片段工作正常:

getServletContext().getRequestDispatcher("bar").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

我知道这/意味着web-app的根源,但为什么servlet不是必需的,而只是JSP的需要?Servlet也属于特定的Web应用程序.

小智 0

所有 servlet 对象都在容器中的同一位置运行,但 jsp 运行在不同的位置。

部署后的 Servlet 位置 您将在此处找到所有 servlet apache-tomcat-7.0.55\webapps\Test\WEB-INF\classes\com\it\servlet

MainController.class

ABC.类

部署后的 JSP 位置

apache-tomcat-7.0.55\work\Catalina\localhost\Test\org\apache\jsp

apiTester_jsp.class