我在eclipse中有这个基于servlet的web应用程序项目,想要附加一些html标签,如<script src="Chart.js">
。
文件夹结构为:
我有一些路径问题,我无法解决它们,我一遍又一遍地搜索,仍然没有工作,我明白了
http://localhost:8080/CpdApplication/Chart.js
的404(未找到)。
问题是当我想追加<script src='Chart.js'></script>
时,Tomcat无法解析Chart.js
静态文件。
答案 0 :(得分:15)
我有一些路径问题,我无法解决它们,我搜遍了 再一次,仍然没有工作,我得到一个404(未找到) ... / CpdApplication / chart.js之
确实,在编写<script src="/Chart.js"/>
时,您正在告诉浏览器创建自己的,单独的HTTP请求以获取JavaScript文件。为此:
这应该做:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
</servlet-mapping>
然后将Chart.js
放在以下文件夹中:WebContent/js/
它应该有效。
编辑:当然,您需要更新HTML中的<script>
标记。此外,请确保重新部署Web应用程序以更新servlet容器上的web.xml(我假设是Tomcat)。
答案 1 :(得分:2)
这对我有用。谢谢沖原ハーベスト
<强>的welcome.jsp 强>
<?php
$price_excl_tax = $product->get_price_excluding_tax();
echo $price_excl_tax > 0 || ! empty( $price_excl_tax ) ? woocommerce_price( $price_excl_tax ) . __(' netto') : '';
?>
文件层次结构树
<强> Web.xml中强>
<head>
<script src="resources/js/jsx/browser.min.js"></script>
<script src="resources/js/react/react.min.js"></script>
<script src="resources/js/react/react-dom.min.js"></script>
<script src="resources/js/main.js"></script>
<link rel="stylesheet" type="text/css" href="resources/css/style.css">
</head>
答案 2 :(得分:1)
在我看来,Chart.js与servlet源存储在同一个文件夹中。
通常你应该有这样的结构(我简化了它):
/css/your-css.css
/js/your-script.js
/src/your-package/YourServlet.java
每当您运行应用程序时,编译器都会创建一组文件,这些文件将被复制到您的Web容器中。复制的文件不包含 src 文件夹,而是包含已构建(已编译)类的副本。所有其他文件(我们现在不应该关注的一些例外情况)必须在 src 文件夹之外才能被复制。
尝试将JS移动到src目录之外的js目录中。然后,将其链接为:
<script src='/Your-Context-Path/js/Chart.js'>
必须有一个函数来自动获取上下文路径,我认为它是
ServletContext.getContextPath()
您可以阅读here。
那应该成功。
答案 3 :(得分:1)
@Andy回复说,您需要在应用程序的文件夹中设置所有资源(JS,CSS,图像等),然后使用<context_path>/folder/to/your/resource/<resource_name>.<ext>
访问它们。以下是如何操作的示例:
这是您的应用程序文件夹的外观:
- WebContent
- res
- js
Chart.js
在你的JSP中:
<script src="${request.contextPath}/res/js/Chart.js"></script>
由于您正在从Servlet创建视图内容(顺便拍摄一下脚),请使用request#getContextPath()
附加它:
"script src=\"" + request#getContextPath() + "/res/js/Chart.js\"></script>";
答案 4 :(得分:0)
@ VH-NZZ正确地说,但是如果您使用的是Spring 4x或更高版本,则需要在ResourceHandlerRegistry中添加静态资源。您可以在“ AppConfig”(您的应用程序配置文件)中执行此操作,如下所示:
@Configuration
@EnableWebMvc
@EnableScheduling
@ComponentScan(basePackages = "com.packagename")
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/build/**").addResourceLocations("/build/");
registry.addResourceHandler("/dist/**").addResourceLocations("/dist/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
registry.addResourceHandler("/images/**").addResourceLocations("/images/");
}
再次正确地说,您不应将Java文件和静态内容放在同一位置。这些应该始终在单独的位置可用。您可以将静态内容直接放在webapp文件夹下。