2013-04-30 135 views
1

我目前發送域名GA:最優雅的方式來獲得域名加www在JSP

_gaq.push(['_setDomainName', '${esapi:encodeForJavaScript(request.serverName)}']);

此輸出:www.somedomain.com

什麼是JSP中最優雅的解決方案刪除www.,只剩下somedomain.com

+0

重複:[獲取域名從給定的網址](http://stackoverflow.com/questions/9607903/get-domain-name-from-given-url)。 – skuntsel 2013-04-30 16:06:28

+0

我已經投票結束了,我相信我的問題是重複的 – Neil 2013-05-01 08:49:50

+0

關於提取servlet中的值,大部分是的,這就是爲什麼我提出了初步評論。儘管如此,你的問題在使用JSTL/EL的過程中並不重複**。看看我的答案找出答案。 – skuntsel 2013-05-01 08:53:42

回答

0

隨着請求,進行HttpServletRequest您可以通過調用request.getRequestURI()在結合使用與Get domain name from given url答案直接訪問URI。

此外,請務必查看HttpServletRequest上的javadoc以瞭解其他有趣的方法,例如getServerName


至於如何可以讓你在JSP中需要什麼,而不是在servlet的/小腳本的問題,你需要使用JSTL fn:replace功能是這樣的:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 

${fn:replace(request.serverName, 'www.','')} 
+0

請注意像Nginx這樣的反向代理。通常他們不會觸摸服務器名稱,但他們絕對會更改原始IP和協議。你將不得不用特殊的'X-header'解決這個問題。 – 2013-04-30 19:38:07

3
URI uri = new URI(url); 
    String domain = uri.getHost(); 
    return domain.startsWith("www.") ? domain.substring(4) : domain; 
+0

順便說一下,'url'沒有公開的可見性。而且,事實上,沒有'url' proberty。你引用的方法是'HttpServletRequest#getRequestURL'。 – skuntsel 2013-04-30 16:12:41

+0

謝謝skuntsel。我有這樣的說法,但不確定。只是想給OP一個提醒。還原爲url – 2013-04-30 16:15:20