【发布时间】:2015-07-12 19:47:13
【问题描述】:
当在 servlet 中使用请求调度程序转发到 JSP 时,为什么必须用正斜杠表示 JSP,如下所示:
getServletContext().getRequestDispatcher("/foo.jsp").forward(request, response);
如果我在没有正斜杠的情况下使用它,我会在 Tomcat 中遇到异常。
但是当我使用请求调度程序重定向到 servlet 时,我可以省略正斜杠。如果有一个映射到 url 模式的 servlet,则下面的代码片段可以正常工作-:
getServletContext().getRequestDispatcher("bar").forward(request, response);
我知道/ 表示网络应用程序的根,但为什么 servlet 不需要它,而仅 JSP 需要它? Servlet 也属于特定的网络应用程序。
【问题讨论】:
-
斜杠表示根目录,jsp不需要
-
你能分享你不需要 / 的 servlet 映射吗?
-
这可能是因为,您的 JSP 在根文件夹中,而您的 servlet url 与当前 servlet url 相关,例如
path/currentUrl->path/bar -
@JohnAment
@WebServlet("/bar")这是我用的。当我不在 JSP 中使用斜线时,我得到了一个 Tomcat 异常。