2011-08-09 45 views
0

我們有一個在本地運行的web應用程序,所以在許多jsp的我有參考http://localhost:8080/MyApp/index.html。我們現在想要創建一個部署,但似乎不方便瀏覽多種不同語言的文件(html,jsp,xml等),並手動將本地URL改爲實際的部署URL - 比如192.168.0.4:8080/MyApp /index.html。如何抽象部署Tomcat URL?

人們在這裏做什麼?理想情況下,我希望可以選擇使用這兩個URL,以便我可以維護本地版本的Web應用程序以在我的機器上運行,並且還可以在我的網絡上運行已部署的機器。一個想法是在SVN中使用分支/標籤作爲部署,並僅在該分支中更改URL。這可能適用於dev +部署服務器,但是有沒有更通用的方法來抽象webapp中使用的URL?

任何想法,將不勝感激!

回答

0

我用這個解決方案:

${pageContext.request.contextPath}/some/path/index.html 

BalusC鏈接到另一個職位,建議這一點,但並沒有在他的答案,所以我加入我自己的。

+0

這不是你在具體問題中所要求的。 – BalusC

+0

這不是?對不起,我很樂意給你信用(I + 1'd),但我認爲這正是我所問的?使用$ {pageContext.request.contextPath}來抽象上下文... –

1

不要對域名和環境路徑進行硬編碼。

動態解析它們。這些信息可以從HttpServletRequest獲得。例如。

String base = request.getRequestURL().toString().replace(request.getRequestURI().substring(1), request.getContextPath()); 
// ... 

使用它像如下

<a href="${base}/index.html"> 

或者使用HTML標籤<base>。有關提示,另請參閱Browser can't access/find relative resources like CSS, images and links when calling a Servlet which forwards to a JSP

+0

太好了,謝謝。對於需要相同URL的獨立服務器應用程序(不是Tomcat),Java代碼中您會推薦什麼?環境變量? –

0

當您在同一個應用程序中鏈接到另一個資源時,通常不需要在Web應用程序中引用完整的URL(包括協議,主機,端口,甚至是上下文根)。相反,您應該可以使用相對URL。例如,您應該能夠引用「index.html」,而不是引用「http:// localhost:8080/MyApp/index.html」。