Jas*_*per 5 java servlets web-applications
对于此 URL:
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());
Run Code Online (Sandbox Code Playgroud)
控制台输出:
req.getServletPath():
req.getRequestURL(): http://localhost:8888/myapp/myservlet/item
req.getRequestURI(): /myapp/myservlet/item
req.getContextPath():
req.getPathInfo(): /myapp/myservlet/item
Run Code Online (Sandbox Code Playgroud)
为什么 getContextPath 和 getServletPath 是空的?
如果重要的话,这是一个部署在码头上的 eclipse 中的(谷歌)网络项目。
在这种情况下,我试图获取位于 servlet 名称之后的 URL 的一部分,即 /item。
Agi*_*Pro 10
我发现来自HttpServletRequest Path Decoding 的这个图形很有用:
看起来问题是应用程序部署在根上,然后servlet 有一个包含应用程序名称的路径。附加 web.xml 文件以验证这一点。
小智 3
关于上下文路径 - 该路径是加载到容器的应用程序的“子路径”。由于您的 contextPath 为空,因此您的应用程序在容器中配置为没有 contextPath 的默认应用程序。这是完全正确的 - 在大多数情况下,您实际上并不需要任何上下文路径。但您应该准备好使用它。
关于 getServletPath - 我不确定...但看起来您的应用程序管理您的 servlet,而 getServletPath 方法询问容器(而容器不知道有关您的 servlet 的任何信息)。要控制容器管理的内容和应用程序管理的内容,您可以查看 web.xml 文件并读取所有<servlet>
和<servlet-mapping>
元素
归档时间: |
|
查看次数: |
3267 次 |
最近记录: |