对于此网址:
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。
答案 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中的这张图片很有用:
看起来问题是应用程序部署在根目录上,然后servlet有一个包含应用程序名称的路径。附加web.xml文件以验证这一点。