如何在Tomcat上的Web应用程序中提供静态文件

我在eclipse中有这个基于servlet的web应用程序项目,并想要附加一些html标签,如

文件夹结构是:

  • C:/apache-tomcat-7.0.53/
  • 我的工作区位于D:/../../ workplace / CpdApplication / src / cpd / MyServlet.java
  • cpd包含:MyServlet.java,Chart.js和其他文件。
  • CpdApplication /的WebContent / META-INF / web.xml文件

我有一些路径问题,我无法解决它们,我一遍又一遍地搜索,仍然无法工作,我得到了一个404(未找到)的http://localhost:8080/CpdApplication/Chart.js

问题是当我想追加 ,Tomcat无法解析Chart.js静态文件。

我有一些路径问题,我无法解决它们,我一遍又一遍地搜索,仍然没有工作,我得到了404(未找到)… / CpdApplication / Chart.js

实际上,在编写您告诉浏览器创建自己的,单独的HTTP请求以获取JavaScript文件。 为此工作:

  • servlet容器需要能够提供静态文件
  • 为此,您需要在web.xml中使用servlet映射提供静态文件 (即默认的 servlet)。

这应该做:

  default /js/*  

然后将Chart.js放在以下文件夹中: WebContent/js/它应该可以工作。

编辑 :当然,您需要更新HTML中的标记。 此外,请确保重新部署Web应用程序以更新servlet容器上的web.xml(Tomcat I presume)。

在我看来,Chart.js与您的servlet源存储在同一个文件夹中。

通常你应该有这样的结构(我已经简化了):

 /css/your-css.css /js/your-script.js /src/your-package/YourServlet.java 

无论何时运行应用程序,编译器都会创建一组文件,这些文件将被复制到Web容器中。 复制的文件不包含您的src文件夹,而是包含您构建(编译)的类的副本。 所有其他文件(有一些我们现在不应该关心的例外)必须在src文件夹之外才能被复制。

尝试将JS移动到src目录之外的js目录中。 然后,像这样链接:

  

必须有一个函数来自动获取您的上下文路径,我认为是

 ServletContext.getContextPath() 

你可以在这里阅读它。

这应该成功。

正如@Andy回答的那样,您需要将所有资源(JS,CSS,图像等)设置在应用程序的文件夹中,然后使用/folder/to/your/resource/.访问它们/folder/to/your/resource/. 。 以下是如何操作的示例:

  • 在名称为res的 Web应用程序的根文件夹(通常名为webWebContent )内创建一个文件夹。
  • res里面,创建一个名为js的文件夹,将所有JavaScript文件放在那里。 您可以创建一个css文件夹来处理所有CSS样式表, img for images和on。
  • 在您看来,这意味着您的JSP,您应该通过上下文路径访问您的资源。

这是您的应用程序文件夹的外观:

 - WebContent - res - js Chart.js 

在你的JSP中:

  

既然您正在从Servlet创建视图内容(顺便拍摄一下),请使用request#getContextPath()来附加它:

 "script src=\"" + request#getContextPath() + "/res/js/Chart.js\">"; 

这对我有用。 由于冲原ハーベスト

的welcome.jsp

         

文件层次结构树

在此处输入图像描述

在web.xml

  default /resources/*