Spring Boot没有加载静态资源

时间:2016-08-04 14:47:44

标签: java spring spring-mvc spring-boot

有很多关于spring boot没有加载静态资源并且已经全部阅读的问题(差不多)我仍然无法解决这个问题。在这个阶段,我选择不使用弹簧靴,但我仍然想知道问题是什么。我正在使用Eclipse,Java 8和Maven。

我有一个如下所示的应用程序类:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我创建了一个css文件 - src/main/resources/static/style.css 并从jsp中引用它:

<link href="<c:url value='style.css'/>" rel="stylesheet">

页面加载但不加载css。这是错误 - 405方法不允许

我认为思考是正确的但不确定。所有帮助表示赞赏。

根据下面的一些评论,这就是现在的情况。

我的jsp文件在src / main / resources / application.properties中配置如下:

spring.mvc.view.prefix:/WEB-INF/views/
spring.mvc.view.suffix:.jsp

我的Jsp非常简单,位于/WEB-INF/views/home.jsp

<!DOCTYPE html>
<%@ page pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <link href="public/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
    <p>Hello world!</p>
</body>
</html>

我也试过像这样链接我的css文件:

<link href="style.css" rel="stylesheet" type="text/css"/>

我的css文件位于webapp / public / style.css中,也很简单

p {
    color: red;
}

我的jsp加载但不加载css。 我使用各种方法运行我的应用程序,包括:

从命令行 - java -jar contacts.jar

在eclipse中 - mvn spring-boot:run和mvn tomcat7:run-war 也可以在Eclipse中通过右键单击Application.class文件并选择 运行方式 - &gt; Java应用程序。

我正在使用Spring Boot版本1.4.0.RELEASE

7 个答案:

答案 0 :(得分:1)

CSS位置

将诸如css之类的静态资源放在src/main/resources之外,用于应用程序资源(如属性文件)。

我总是将css文件放在src/main/webapp/assets/css文件夹下。

配置

我使用的是Java配置而不是XML,下面的代码片段向您展示了如何配置spring boot以识别和查找css。

@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware{    

    // view resolver and other confugurations ommitted...

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
    }
}

访问css

<link href="<c:url value="/assets/css/style.css" />" rel="stylesheet">

答案 1 :(得分:0)

假设您没有停用 WebMvcAutoConfiguration

public 目录

上创建 webapp 文件夹

在您 JSP 页面

<link href="public/style.css" rel="stylesheet" type="text/css"/>
  

假设 public 文件夹中的 style.css   即 webapp > public > styles.css

Here's a docs describing the how to use static content in much more detail.

答案 2 :(得分:0)

默认情况下,Spring Boot将从名为src / main / resources / static (或/ 公共或仅资源或/ META-INF /资源)。创建项目后,Spring Boot将自动在src / main / resources下提供静态文件夹。因此,我将所有静态资源存储在静态文件夹中 在你的情况下,我会在每个文件夹中放置一个style.css文件,并通过逐个删除它们来开始调试过程,直到......你知道。

Source

enter image description here

答案 3 :(得分:0)

尝试使用带有非GET的http方法的RequestMapping查找控制器,即接受style.css请求。这可以是没有&#34;值&#34;。

的任何请求映射

当我从码头搬到春季靴子时,这发生在我身上。在旧的jetty解决方案中,静态内容是从不同的servlet提供的。

答案 4 :(得分:0)

我努力将我的静态资源连接到我的jsp页面,这是我最终用它来使用Spring boot 2.0。您可以在映射到静态资源(如图像或纯HTML)时查看我的属性以及URL的外观。

接下来,我们需要在 application.properties 中为我们的JSP文件定义模板前缀和后缀。因此,添加:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.servlet.context-path=/pdx

http://localhost:8080/pdx/images/thedocks.jpg 访问src / main / resources / static / images / thedocks.jpg中的静态资源

http://localhost:8080/pdx/ src / main / resources / static / index.html

中加载index.html

http://localhost:8080/pdx/css/home.css src / main / resources / static / css / home.css中加载css类

http://localhost:8080/pdx/h 使用@Controller(&#34; /&#34;)和@GetRequest(“/ h”)注释加载我的家庭控制器。

我的jsp页面加载了像这样的静态图像

<img alt="the docks" src="/pdx/images/thedocks.jpg"/>

答案 5 :(得分:0)

添加您的application.properties文件:

spring.mvc.static-path-pattern=/resources/**

并确保所有静态文件都位于src / main / resources / static / {css,js,其他文件} 目录中。

要获取CSS文件,请像这样使用spring uri --->

<spring:url var="css" value="/resources/css"/>

然后将其链接

<link href="${css}/bootstrap.min.css" rel="stylesheet">

答案 6 :(得分:0)

由于在最初的问题中提到了Eclipse,因此我将其链接为:Java class getResource() with eclipse

当从Eclipse运行spring boot jar时,有时正确的配置将不起作用。 可以通过添加“ main \ resources”文件夹来手动运行配置类路径来解决此问题(“运行配置”->“类路径选项卡”->“用户条目”)