2013-06-22 92 views
1

對不起新手問題,但我正在用Spring MVC構建一個Web應用程序。我建立了一個註冊功能,可以在成功註冊後向用戶發送電子郵件。該電子郵件包含確認用戶電子郵件地址的鏈接。這是所有工作正常,但在電子郵件中的鏈接URL被硬編碼爲:Spring MVC - 在郵件中插入鏈接

"http://localhost:8080/webApp/confirmEmail" 

我擔心的是,當我最終部署我的應用程序的電子郵件中的鏈接仍將指向localhost的

我已經試過getContextPath(),但是這隻返回「/ webApp」,所以沒有多大用處,因爲我需要在URL中插入完整的URL。解決這個問題的最佳方法是什麼?

NB - 我不使用模板工具來建立我的控制器內這樣做的電子郵件(如

String body = "<html><body>...</body></html>" 

回答

0

你可以使用從HttpServletRequestgetRequestURL()網址一旦你的。 URL然後獲取serverURL(協議,dns和端口號,如果有的話)並在構建電子郵件內容時使用它。

+0

Thanks Niranjan。我已經玩過getRequestURL(),它返回http:// localhost:8080 /webApp/registerSubmit.html,我想分割這個字符串來獲取http:// localhost:8080/webApp /和然後附加「confirmEmail」。這是另一種選擇嗎?如果/當我更改控制器方法的名稱時,我猜測它並不完全安全。 關於serverURL - 你能否提供更多信息?我不明白getRequestURL()和serverURL之間的連接。 –

+0

@SimonTilbury'getRequestURL()'返回最終用戶訪問您當前請求資源(Page,Servlet等)的URL。通過這種方式,在構建'confirmEmail' URL時,您不必對'hostname'進行硬編碼。順便說一句,你可以在相應方法的'@ RequestMapping'中提供'/ confirmEmail'路徑。 – Niranjan

+0

非常感謝。現在就開始工作。似乎有點黑客,但得到它的工作 –