以下是我的应用程序的文件夹结构,
我在 webapp 下创建了一个资源文件夹,该文件夹包含 CSS 和 JS
在servlet-context文件中,我已将资源映射到resources / inspiremetheme,如下所示,
<mvc:resources mapping="/resources/**" location="/resources/inspiremetheme/" />
我已经在JSP页面中包含了如下,
<head>
<script type="text/javascript" src="/resources/js/jquery-1.11.1.js"></script>
<script type="text/javascript" src="/resources/js/inspireme.js"></script>
<link type="text/css" rel="stylesheet" href="<c:url value="resources/css/global.css"/>" />
</head>
这里的问题是我无法加载我的JS文件,因为正确加载了CSS文件。 我无法理解我错过了什么。
更新 - 1: 解压后的文件结构如下,
Inspireme | |------ META-INF | |------resources --> inspiremetheme --> css and js folders | |------ WEB-INF --> classes, jsp, lib, web.xml
答案 0 :(得分:4)
您将<c:url value=".."/>
混淆为脚本代码..
<c:url value="/resources/js/jquery-1.11.1.js" var="myUrl" />
<script type="text/javascript" src="${myUrl}"/><!-- comment --></script>
还在中添加注释:这将阻止jspx解析器最小化标记。
如果解析器最小化您的标记,您将得到结果:
<script type="text/javascript" src="/WEBAPP/resources/js/jquery-1.11.1.js"/>
而不是
<script type="text/javascript" src="/WEBAPP/resources/js/jquery-1.11.1.js"></script>
这可能导致某些浏览器无法正常工作
答案 1 :(得分:1)
如果您决定使用 Java config 而不是 xml ,则可以采用以下解决方案。
@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/jsp/", ".xml");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/inspiremetheme/css/**", "/inspiremetheme/js/**")
.addResourceLocations("classpath:/inspiremetheme/css/", "classpath:/inspiremetheme/js/");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}