如何在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,图像等)设置在应用程序的文件夹中,然后使用
访问它们
。 以下是如何操作的示例:
- 在名称为res的 Web应用程序的根文件夹(通常名为web或WebContent )内创建一个文件夹。
- 在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/*