2010-10-08 44 views

回答

2

沒有指向這個的URL。 WEB-INF內的所有內容均未向外界公開。

相反,如果你組織了WAR佈局是這樣的:

foo.war 
-->/WEB-INF 
    -->/classes (..) 
    -->web.xml 
-->/js 
    -->bar.js 
-->index.jsp 

然後,你可以訪問你的JavaScript作爲http://example.com/blah/js/bar.js

P.S.您將無法訪問index.jsp,這是您現在設置的方式。

+0

謝謝。我一定誤解了有關使用maven-war-plugin進行打包的鏈接。 – Steven 2010-10-08 15:20:11

3

您必須NEVERJSWEB-INF目錄

正如Servlet規範中所寫的,無論你放在目錄中,WEB-INF都不會直接提供給外部世界。只有本地應用程序資源去那裏。

所以如果你想要一些JS文件可以從外部訪問,直接放在WAR的ROOT。事情是這樣的:

foo.war 
-->/js/ 
    -->bar.js 
-->/WEB-INF 
    -->internal resources here 

的URL訪問JS將是這樣的:

http://YOUR_IP:8080/foo/js/bar.js 

當然,這可能取決於你如何設置你的應用服務器上部署的戰爭。

但是把JSP文件內WEB-INF目錄,只有從Servlet的的東西,如調用它們(你不能直接訪問它們要麼):

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("WEB-INF/index.jsp"); 

這如果您不希望人們直接從外部訪問您的JSP文件,那麼這是常見的做法。

+0

謝謝。我一定誤解了有關使用maven-war-plugin進行打包的鏈接。 – Steven 2010-10-08 15:20:36