【发布时间】:2015-08-24 15:05:59
【问题描述】:
对于这个网址:
http://localhost:8888/myapp/myservlet/item
在我的 servlet 里面的 doGet 方法中:
System.out.println("req.getServletPath(): " + req.getServletPath());
System.out.println("req.getRequestURL(): " + req.getRequestURL());
System.out.println("req.getRequestURI(): " + req.getRequestURI());
System.out.println("req.getContextPath(): " + req.getContextPath());
System.out.println("req.getPathInfo(): " + req.getPathInfo());
控制台输出:
req.getServletPath():
req.getRequestURL(): http://localhost:8888/myapp/myservlet/item
req.getRequestURI(): /myapp/myservlet/item
req.getContextPath():
req.getPathInfo(): /myapp/myservlet/item
为什么 getContextPath 和 getServletPath 是空的?
如果重要的话,这是部署在码头上的 Eclipse 中的(谷歌)网络项目。
我正在尝试获取 servlet 名称之后的部分 URL,即在这种情况下为 /item。
【问题讨论】:
-
你认为它应该返回
/myapp?为什么? -
Sotirios> 它不应该是空白 - 不是吗?
-
这取决于你如何配置你的容器。
-
您使用的是哪个容器?如果您的应用程序被部署为根,请检查。如果是这样,我就没有上下文了。
-
这从 Eclipse 中部署在 Jetty 上,正如您在 URL 中看到的那样:localhost:8888/myapp/myservlet/item,“myapp”部分是应用程序名称,所以我猜它不是 root。我正在尝试获取“myservlet/”即项目之外的 URL 的最后一部分 - 我如何得到它?
标签: java servlets web-applications