2012-09-20 40 views
1

我是Tomcat/Java的初學者;我有一個簡單的Web應用程序,我希望根據應用程序是在本地開發還是在現場部署,在web.xml中顯示不同的<welcome-file>Tomcat:本地和現場安裝的不同歡迎文件

現在我有:

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

地方發展,我想在web.xml<welcome-file>index-dev.html發展和index-live.html已部署實時應用。原因是我想加載不同的*.css*.js,具體取決於我是本地居民還是居住者。

我可以通過哪種方式實現此設置?

回答

1

作爲一個選項:使一個jsp文件成爲一個歡迎頁面。

在那個jsp文件中分析當前的客戶端位置(本地計算機與否),並轉發到相關頁面。

附加編輯:

你的JSP有一個預定義request對象。

使用它來獲取客戶端的IP,這樣的:

<% 
    String remoteIp = request.getRemoteAddr(); 
%> 

與本地主機地址,可以通過以下方式獲得比較:

<% 
    InetAddress address = InetAddress.getLocalHost(); 
    String localhostIp = address.getHostAddress(); 
%> 

並使用jsp:forward轉發到相關頁面。

<% 
    // getting jsp (servlet) client ip 
    String remoteIp = request.getRemoteAddr(); 

    // getting local ip 
    InetAddress address = InetAddress.getLocalHost(); 
    String localhostIp = address.getHostAddress(); 

    // checking and forwarding 
    if(localhostIp.equals(remoteIp)){ 
%> 
    <jsp:forward page="localhost.html"/> 
<%}else{%> 
    <jsp:forward page="remote.html"/> 
<%}%> 

附加編輯:

確保localhostIp只包含IP地址,否則使用String方法來獲取裏面的IP地址串。

+0

謝謝,任何有用的鏈接/代碼示例爲Tomcat/Java初學者? –

+1

在我的本地機器上,'localhostIp'是'127.0.1.1',地址是'my-machine-127.0.1.1'。我最終使用'request.getRequestURL()',如果它啓動''http:// localhost:8080 /'那麼它是本地的。 –

+0

謝謝,我更新了我的帖子。 – 2012-09-20 13:40:10

1

創建一個頁面頁面(將包括在所有頁面中,包括歡迎頁面)。寫一個<c:if>做一個簡單的檢查你。我不認爲servlet規範支持基於請求機器IP地址的不同歡迎頁面。理想情況下,任何網絡應用程序假設是服務於從哪裏訪問相同的頁面

1

活應該總是有一個Apache的HTTPD誰代理重定向到tomcat。

這有多個優點:

  • 如果Tomcat是下來,你可以定義一個「請耐心等待/晚回來」的信息。HTML
  • 使用的AWStats可以分析流量
  • 您可以定義現場JS/CSS-directorys排出的tomcat

問候

+0

+ 1ed;但我在Tomcat之前沒有Apache(甚至沒有在生產環境中使用它,它的Tomcat7不是早期版本) –