我需要从以下 URL 单独获取 (http://localhost:9090/dts)
。
那就是我需要删除 (documents/savedoc)
(OR)
只需要获取 - (http://localhost:9090/dts)
http://localhost:9090/dts/documents/savedoc
请问有什么方法可以获取以上信息吗?
我尝试了以下并得到了结果。但仍在努力。
System.out.println("URL****************"+request.getRequestURL().toString());
System.out.println("URI****************"+request.getRequestURI().toString());
System.out.println("ContextPath****************"+request.getContextPath().toString());
URL****************http://localhost:9090/dts/documents/savedoc
URI****************/dts/documents/savedoc
ContextPath****************/dts
谁能帮我解决这个问题?
最佳答案
你说你想得到:
http://localhost:9090/dts
在你的例子中,上面的字符串包括:
- scheme : http
- 服务器 host name : 本地主机
- 服务器 port :9090
- context path : dts
(有关请求路径元素的更多信息,请参阅官方 Oracle Java EE 教程:Getting Information from Requests)
##第一个变体:###
String scheme = request.getScheme();
String serverName = request.getServerName();
int serverPort = request.getServerPort();
String contextPath = request.getContextPath(); // includes leading forward slash
String resultPath = scheme + "://" + serverName + ":" + serverPort + contextPath;
System.out.println("Result path: " + resultPath);
##第二种变体:##
String scheme = request.getScheme();
String host = request.getHeader("Host"); // includes server name and server port
String contextPath = request.getContextPath(); // includes leading forward slash
String resultPath = scheme + "://" + host + contextPath;
System.out.println("Result path: " + resultPath);
两种变体都会给你你想要的:http://localhost:9090/dts
当然还有其他变体,就像其他人已经写过的......
只是在您最初的问题中,您询问了如何获取 http://localhost:9090/dts
,即您希望您的路径包含 include 方案。
如果您仍然不需要方案,快速的方法是:
String resultPath = request.getHeader("Host") + request.getContextPath();
你会得到(在你的情况下):localhost:9090/dts
关于java - 如何从 HttpServletRequest 获取 URL 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065257/