看板 java 關於我們 聯絡資訊
各位前輩好 小弟架了一個網站:http://localhost:8080/ 我想要抓取host name,也就是 localhost 網路上找到的指令是 InetAddress.getLocalHost().getHostName(); 可是得到的是伺服器的名字,而不是我要的 localhost 目前我只知道可以從HttpServletRequest 中的 getLocalName() 來得到我想要的值 但是我想要在request 進來前,也就是 WebProject 啟動時便得到值 請問我還有什麼方法可以得到 localhost 這個值呢? 在此先感謝各位不吝指點 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.209.67
stukk:可以使用listener or filter. ex:ServletContextListener 07/25 18:27
PsMonkey:通常我會直接寫在 config / web.xml 就算了 XD 07/25 18:36
powerup:所以我只能在listener那邊取得了嗎? 07/25 19:04
powerup:可以在一般的class抓到嗎? 07/25 19:06
powerup:還有我只會從ServletContext抓到contextPath,怎抓host啊 07/25 19:11
powerup:回二樓,因為我的網站會架在不同網域,所以不想寫死在code 07/25 19:13
PsMonkey:就只是改設定檔,不用重新 compile 07/25 21:25
GALINE:try http://goo.gl/jusKh 07/26 10:40
powerup:感謝樓上,我抓到了想要的DNS name,沒想到要繞這麼大圈 07/26 14:34
powerup:所以只能從網卡設定那邊抓取,不能從webProject那邊抓嗎? 07/26 14:38
PsMonkey:感覺用這招,你還是不能在同一台機器跑兩個相同 webapp 07/26 16:02
PsMonkey:純粹腦補,不確定對錯 Orz 07/26 16:02
LaPass:這很有問題吧...... web本身並不會知道到底誰「將會」連進 07/26 16:09
LaPass:來,所以只能從網卡那邊抓自己的對外ip,在反查網址。 07/26 16:11
powerup:可是我這網站是架在哪個網域,跟誰會連進來應該沒關係啊 07/26 17:14
powerup:所以我才想說能不能從servlet那邊抓到值 07/26 17:16
powerup:畢竟用G大的方法,如果在本機端跑,抓到的不是localhost 07/26 17:19
powerup:而是我網卡的DNS值,雖然遠端跑沒問題,但是我本機debug 07/26 17:23
powerup:會很麻煩... 07/26 17:25
GALINE:要看你需要這個的目的是什麼來決定?畢竟 IP 才是真的 07/26 17:38
GALINE:Hostname 是容易惡搞的,不管是改本機 host 檔還是改 http 07/26 17:40
GALINE:header 07/26 17:41
Chikei:所以你是想抓哪一個host name...DNS下的host name還是http 07/26 18:53
Chikei:server服務的host name,前者上面有後者好歹也給軟體名稱吧 07/26 18:55
LaPass:我的意思是說..... WEB不知道使用者會用哪個網域連到妳的 07/26 18:57
LaPass:電腦,力如127.0.0.1 localhost XXX.com 156.66.44.7 等等 07/26 18:59
抱歉,我事情說得不夠清楚 我想要抓一個這 Web server 所在網域的資訊作辨認,才能知道我這網站是架在哪 因為我這網站之後會同時架在不同網域上 如 http://localhost/ 就抓localhost http://www.domain.com/ 就抓 www.domain.com 因為 ip 可能會因搬遷伺服器而不一樣,但是 DNS 不太會變(註冊完就放著) 所以我想以DNS值為主,應該是Chikei前輩說的server服務的host name 以GALINE前輩的方法在DNS的資訊寫在網卡內的機器是沒問題的 因為此時DNS下的host name就等於server服務的host name 雖然在本機跑時,他抓的不是localhost,debug程式時會有些麻煩就是了... 可是我之後架站的伺服器都是向外租的,他們都是虛擬伺服器,這招就沒用了 剛剛試了才發現不行 根據LaPass前輩所說,因為我的web project 和DNS是分開的,所以理論上來說project 本身是無法得知自己所在的網域,只能從request來得知他們是以哪個網域進來的 從而反推自身網域,因此我要嘛就是抓網卡的DNS(但虛擬機器的網卡沒資訊), 不然就是只能用HttpServletRequest 中的getServerName() 或是 getLocalName()了 不知我的理解是否有所錯誤?非常謝謝各位前輩的指點 ※ 編輯: powerup 來自: 220.128.209.67 (07/27 13:15)
LaPass:你舉的 還真的有那個網站 = = 07/27 13:37
powerup:我只是亂說的..... 07/27 13:38
givemepass:還真的有這個網站XDDD 07/27 20:41
if4:18+的...這裡的都是成年人吧? 07/27 21:19
保險起見,還是改掉好了,抱歉修了一下LaPass前輩的推文 ※ 編輯: powerup 來自: 220.128.209.67 (07/28 13:53)