一个战争里面的js文件的http url?

时间:2010-10-08 15:13:52

标签: javascript url war

假设WAR布局如下:

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

现在假设WAR的虚拟目录是服务器example.com上的/ blah(即http://example.com/blah)。

bar.js的HTTP网址是什么,会在<script src="">可能提供的index.jsp代码中使用? http://example.com/blah/js/bar.js似乎无法正常工作。

2 个答案:

答案 0 :(得分:3)

您必须从不 JS 放在 WEB-INF 目录中。

正如Servlet规范中所写,无论你在 WEB-INF 目录中放置什么,都不会直接向外部世界提供。只有本地应用程序资源。

因此,如果您希望从外部访问某些 JS 文件,请将其直接放在WAR的ROOT上。像这样:

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

访问 JS 的网址如下:

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

当然,这取决于您在应用程序服务器上设置war部署的方式。

但是将 JSP 文件放在 WEB-INF 目录中,只是从Servlets调用它们(你不能直接访问它们)要么像这样:

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

如果您不希望用户直接从外部访问您的 JSP 文件,这是一种常见做法。

答案 1 :(得分:2)

没有指向此的网址。 WEB-INF内的所有内容都不会暴露给外界。

相反,如果您按如下方式组织WAR布局:

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

然后您可以{J} http://example.com/blah/js/bar.js访问您的Javascript。

P.S。你也无法访问index.jsp,就像你现在设置的那样。