【发布时间】:2017-05-02 14:50:46
【问题描述】:
使用 spring-boot-starter-web-mvc 进行初始开发。当我在服务器上部署 war 文件时,它不会加载 css 和 js 文件,但是当我使用 spring boot 运行相同的代码时,它是工作正常。下面是加载js和css文件的目录结构和配置。谁能让我知道怎么回事?仅对项目使用基于 java 的配置。在部署项目之前,我已经在doc 中引用了 8.1.1,并使用了相同的 pom 文件配置,如下所示。
配置文件-
public class ViewWebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// configuration for assets/ static files
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource rb = new ResourceBundleMessageSource();
rb.setBasenames(new String[] { "validation" });
return rb;
}
}
pom.xml 文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<log4j.version>2.7</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- Dependency for rendering jsp pages -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
<version>5.5.23</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
<version>5.5.23</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler-jdt</artifactId>
<version>5.5.23</version>
<scope>provided</scope>
</dependency>
<!-- Dependency for rendering jsp pages -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
</dependencies>
使用 spring-tags 加载 js 和 css 如下 -
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<spring:url value="/resources/assets/js/custom.min.js" var="customJS" />
<script src="${customJS}"></script>
<link href="${customFieldAgent}" rel="stylesheet"/>
<spring:url value="/resources/assets/css/customfieldAgent.css" var="customFieldAgent" />
下面是服务器日志-
17:03:10.014 [http-nio-8080-exec-7] 调试 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - 未找到 [/${starrrJS}] 17:03:10.014 [http-nio-8080-exec-7] 的处理程序方法 WARN org.springframework.web.servlet.PageNotFound - 找不到映射 DispatcherServlet 中带有 URI [/ui/$%7BstarrrJS%7D] 的 HTTP 请求 名称“调度员”17:03:10.014 [http-nio-8080-exec-7] 调试 org.springframework.web.servlet.DispatcherServlet - 成功 完成请求 17:03:10.018 [http-nio-8080-exec-4] 调试 org.springframework.web.servlet.DispatcherServlet - DispatcherServlet 名称为“调度程序”的处理 GET 请求 [/ui/$%7BcustomJS%7D] 17:03:10.018 [http-nio-8080-exec-4] 调试 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - 查找路径 /${customJS} 的处理程序方法 17:03:10.019 [http-nio-8080-exec-4] 调试 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - 未找到 [/${customJS}] 17:03:10.019 [http-nio-8080-exec-4] 的处理程序方法 WARN org.springframework.web.servlet.PageNotFound - 找不到映射 DispatcherServlet 中带有 URI [/ui/$%7BcustomJS%7D] 的 HTTP 请求 名称'调度程序'17:03:10.019 [http-nio-8080-exec-4]调试 org.springframework.web.servlet.DispatcherServlet - 成功 完成请求
【问题讨论】:
-
github.com/MFaisalHyder/REST_API 请检查这个项目,看看这是否有帮助,如果没有整理出来,我会发布答案
-
看看你在位置提供(/resources/),而还有另一个目录 /assets/ ,位于实际资源文件夹之上。 registry.addResourceHandler("/resources/**/*").addResourceLocations("/resources/assets/");试试看,让我知道它是否有效
-
不,它不起作用。已更新服务器日志。
-
试过很多方法,用了"c:url",正常的约定还是不行。
-
请看我项目中的目录结构。在 WEB-INF\resources\css, js, img 中移动你的资源文件夹,同时删除额外的头文件夹资产
标签: spring spring-mvc spring-boot