0

我有一个使用 Tomcat 在 Eclipse 中开发的动态 Web 应用程序。我的 Web 应用程序文件夹是 WebContent,它具有以下结构:

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>

它们都在 WebContent 的同一个根目录中。但是,当我在 Eclipse 中启动 servlet 并尝试form.html在浏览器中打开时。send.js不执行。send.js但是,如果我直接将所有内容复制到标签form.html中并将它们放入<script>...</script>标签中,它将正确执行 JavaScript 代码。我不想将所有 JS 代码都放在 HTML 文件中,所以我更喜欢将 send.js 文件与 HTML 文件分开。那么如何让JS文件被执行呢?

此外,我使用 Jersey 作为 RESTful 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>

为什么 Jersey 的 Servlet 容器send.js在 web 根目录 (WebContent) 中找不到 JavaScript 文件 ()?

4

1 回答 1

1

Jersey 只处理 RESTful 方法。泽西岛不处理提供其他网络资源。这就是http://localhost:8080/myapp/rest/send.js导致 404“未找到”的原因。

您将需要定义另一个<servlet><servlet-mapping>在您的web.xml用于处理其他 HTML、CSS、JavaScript、图像等资源。我工作的一个应用程序使用 Faces Servlet 不仅为 JSF/Facelet 页面提供服务,而且我认为它也是为 JS、CSS 等提供服务的应用程序。

然后,要加载的正确 URLsend.js将如下所示http://localhost:8080/myapp/send.js

于 2013-07-04T02:18:28.857 回答