2013-07-03 23 views
0

我有一個使用Tomcat在Eclipse中開發的動態Web應用程序。我的web應用程序文件夾的WebContent其具有如下結構:JavaScript文件無法在Eclipse Web應用程序中加載和執行

WebContent 
    |_____WEB-INF 
    |  |__ web.xml 
    |___form.html 
    | 
    |___send.js 

的form.html文件引用的JavaScript文件send.js如下:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
<script src="send.js"></script> 

它們都在相同的根目錄網頁內容。但是,當我在Eclipse中啓動servlet並嘗試在瀏覽器中打開form.html時。 send.js未執行。但是,如果我將send.js中的所有內容都直接複製到form.html並將它們放入<script>...</script>標記中,它將正確執行JavaScript代碼。我不想將所有的JS代碼放在HTML文件中,所以我更願意將send.js文件與HTML文件分開。那麼如何讓JS文件被執行?

而且我使用的是新澤西州的REST風格的Web服務和我的web.xml servlet映射如下:

<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.example</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

爲什麼不能新澤西州的Servlet容器找到網站根目錄的JavaScript文件(send.js)目錄(WebContent)?

+0

你說'send.js'沒有執行。它是否被加載?使用瀏覽器的開發人員工具,查看瀏覽器請求send.js時的響應情況。 – dsh

+0

我使用瀏覽器的工具調試它。 JS文件'send.js'甚至沒有加載。 – tonga

+0

那就是問題所在。瀏覽器請求它嗎?它請求什麼網址? URL中的路徑是否正確?服務器的迴應是什麼?是404,500,302還是其他? – dsh

回答

1

Jersey只處理RESTful方法。澤西島不處理服務其他網絡資源。這就是爲什麼http://localhost:8080/myapp/rest/send.js導致404「未找到」。

您需要在您的web.xml中定義另一個<servlet><servlet-mapping>以處理其他HTML,CSS,JavaScript,圖像等資源。我的工作的應用程序使用Servlet的面孔爲服務不僅是JSF /頁的facelet而且,我認爲,它是一個服務於JS,CSS等

然後,正確的URL加載send.js會看像http://localhost:8080/myapp/send.js

+0

謝謝dsh。我發現了另一個與我的問題相關的鏈接:http://stackoverflow.com/q/12422660/1649466。我需要從''在web.xml中改變'',並添加'WebPageContentRegex'包括非REST靜態資源,如'JS | CSS | images'文件。 – tonga

+1

看起來像另一種方法。就我個人而言,我保持URL不同(例如,REST的'/ api/*'和其他資源的單獨路徑)。 – dsh

+0

是的,我認爲這是爲REST資源和非REST資源提供兩個單獨文件夾的更好方法。但似乎我仍然需要在web.xml中將''更改爲'',以便訪問靜態非REST資源。 – tonga

相關問題