Java Web-Application:为什么getContextPath为空?

时间:2015-06-09 16:44:35

标签: java servlets web-applications

对于此网址:
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。

2 个答案:

答案 0 :(得分:3)

关于上下文路径 - 此路径是"子路径"对于加载到容器的应用程序由于您的contextPath为空,因此您的应用程序在容器中配置为默认应用程序而不使用contextPath。这是完全正确的 - 在大多数情况下,你并不需要任何上下文路径。但你应该准备好使用它了。

关于getServletPath - 我不确定......但看起来你的应用管理你的servlet,而getServletPath方法要求容器(容器不知道你的servlet的任何信息)。要控制容器管理的内容以及应用程序的内容,您可以查看web.xml文件并阅读所有$.get("test.php", function(values){ var jsonValues = $.parseJSON(values); $("showValue1").html(jsonValues.value1); }); <servlet>元素

答案 1 :(得分:1)

我发现HttpServletRequest Path Decoding中的这张图片很有用:

enter image description here

看起来问题是应用程序部署在根目录上,然后servlet有一个包含应用程序名称的路径。附加web.xml文件以验证这一点。