【问题标题】:STS Spring MVC: How to include a JS file in a JSPSTS Spring MVC:如何在 JSP 中包含 JS 文件
【发布时间】:2011-12-18 00:26:36
【问题描述】:

我安装了 SpringSource Tool Suite 2.8.0。 我试图在 JSP 中包含一个 JS 文件,使用 Spring MVC 模板作为起点。 我的 JSP 如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <title>Home</title>
    <script type="text/javascript" src="/a.js"></script>
</head>
<body>
    Hello world!  
</body>
</html>

a.js 位于 src\main\resources 下,如下所示:

window.alert("A");

结果是“Hello world!”在没有警报的情况下打印:-(

我尝试将 JS 文件放在不同的位置,将 src 更改为带/不带“/”,甚至在 web.xml 中添加一个 servlet 映射以使用“*.js”的“默认”servlet。 似乎没有任何效果。

我做错了什么?

【问题讨论】:

标签: javascript spring-mvc sts-springsourcetoolsuite


【解决方案1】:

js 文件是否包含在您的 .war 文件中?我通常将我的 js 和 css 放在 src/main/webapp 中。类似 src/main/webapp/js 和 src/main/webapp/css。

其次,您可以使用 c:url 适当地引用它,这将负责将应用程序上下文放在那里等等。

<script type="text/javascript" src="<c:url value="/a.js" />" />

您可以使用 firebug 或 chrome 的开发者工具来查看您是否获得了 a.js 的 404 并查看它实际请求的路径。

【讨论】:

  • 谢谢!我结合使用将文件移动到 src/main/webapp、使用 c:url 并在 web.xml 中添加 servlet 映射以使用“*.js”的“默认”servlet。
【解决方案2】:

我建议将这些 js 文件放在 webapp 文件夹下。 (我通常把它们放在 webapp/resources/js 下)

为了使这条路径可以访问,我使用了 mvc:resources 标签:

此标签允许在特定 URL 之后请求静态资源 由 ResourceHttpRequestHandler 从任何 资源位置列表。这提供了一种方便的服务方式 来自 Web 应用程序根目录以外位置的静态资源, 包括类路径上的位置。缓存周期属性可能是 用于设置远期到期标头(1 年是 推荐Page Speed和YSlow等优化工具)所以 客户将更有效地利用它们。处理程序 还正确评估 Last-Modified 标头(如果存在),以便 将适当返回 304 状态码,避免 已经被缓存的资源的不必要开销 客户。例如,使用 URL 模式服务资源请求 /resources/** 来自网络中的公共资源目录 应用程序根目录,标签将按如下方式使用:

<mvc:resources mapping="/resources/**" location="/public-resources/"/>

来源:Spring Reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 2016-04-29
    • 1970-01-01
    相关资源
    最近更新 更多