我正在嘗試從ExternalContext的web應用程序的根URL,但無法瞭解使用哪種方法?如何從ExternalContext獲取webapp的絕對URL?
13
A
回答
13
您可以從FacesContext
得到ExternalContext
,並從外部環境抽取request
然後
String file = request.getRequestURI();
if (request.getQueryString() != null) {
file += '?' + request.getQueryString();
}
URL reconstructedURL = new URL(request.getScheme(),
request.getServerName(),
request.getServerPort(),
file);
reconstructedURL.toString();
2
讓我重新短語Jigar的回答有點:
final ExternalContext ectx = context.getExternalContext();
String url = ectx.getRequestScheme()
+ "://" + ectx.getRequestServerName()
+ ":" + ectx.getRequestServerPort()
+ "/" + ectx.getRequestContextPath();
16
一個更簡潔的方法是:
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String url = request.getRequestURL().toString();
String baseURL = url.substring(0, url.length() - request.getRequestURI().length()) + request.getContextPath() + "/";
那麼你不需要用省略端口撥弄時,方案是http
和端口是80
等。
7
這是我發現的最簡單的方法,它不涉及URL各個部分的神祕字符串處理。它似乎適用於所有情況,包括不同的協議和端口。
String getAbsoluteApplicationUrl() throws URISyntaxException {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
URI uri = new URI(request.getRequestURL().toString());
newUri = new URI(uri.getScheme(), null,
uri.getHost(),
uri.getPort(),
request.getContextPath().toString(),null, null);
return newUri.toString();
}
3
我有一個類似BalusC的:
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
String requestURL = request.getRequestURL().toString();
String url = requestURL.substring(0, requestURL.lastIndexOf("/"));
相關問題
- 1. 如何從絕對URL獲取SPListItem?
- 2. 如何從django視圖中獲取絕對url的相對url?
- 3. 如何從java中的相對url獲取絕對url
- 4. 如何在python中獲取絕對url
- 5. 如何在Bash中獲取絕對URL
- 6. Django獲取絕對URL
- 7. 從Firefox中的相對URL獲取絕對URL?
- 8. 如何在Delphi中從絕對路徑獲取文件的URL?
- 9. 如何從父實例遞歸獲取絕對URL?
- 10. 如何從Django QuerySet獲取絕對圖像URL列表?
- 11. 如何從絕對文件夾路徑獲取URL?
- 12. 如何從xpath獲取絕對網址?
- 13. 如何獲取絕對URL而不是相對的?
- 14. 獲取java中url的絕對路徑
- 15. 獲取Azure資源的絕對URL
- 16. 獲取XMLHttpRequest請求的絕對URL?
- 17. 如何在使用Nokogiri提取鏈接時獲取絕對URL?
- 18. 在Velocity模板中獲取webapp的絕對上下文路徑
- 19. 從絕對Uri獲取流
- 20. 如何在JSF中獲得絕對url?
- 21. 如何從完整的URL獲取圖像url的最後一位,即從絕對路徑到相對路徑?
- 22. Wicket:相對於絕對URL或獲取基址的URL
- 23. 導軌 - 如何獲取資產的絕對URL在css.erb
- 24. 如何在Rails 3.1中獲取資源的絕對URL?
- 25. JavaScript:如何獲取絕對的基本URL?
- 26. 我應該如何獲取CsQuery中的絕對URL?
- 27. 從相對路徑(重構方法)獲取絕對URL
- 28. 使用grails獲取絕對資源url
- 29. jQuery - 從包含「../」的URL字符串獲取絕對路徑
- 30. 如何在ASP.NET MVC中獲取我的webapp的基URL?
在這種情況下,我們也失去了「上下文路徑」 – yegor256
對不起,你的問題並沒有掩蓋它。只需添加'+ request.getContextPath()'。我會更新答案。 – BalusC
我認爲,這裏'request.getRequestURI()。substring(0)','.substring(0)'不是必需的。是否需要一些非常特殊的情況? – Tiny