spring Sping Boot 未加载静态资源

watbbzwu  于 11个月前  发布在  Spring
关注(0)|答案(8)|浏览(152)

有很多关于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">


405 Error 405 Error 405 Error 405 Error
我认为是正确的,但不确定。感谢所有帮助。

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

我的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 tomcat 7:run-war在eclipse内部也可以右键单击Application.class文件并选择Run As -> Java Application。
我正在使用Sping Boot 版本1.4.0.RELEASE

9q78igpj

9q78igpj1#

CSS Location

把你的静态资源比如css放在src/main/resources之外,src/main/resources用于应用程序资源比如属性文件。
我总是把css文件放在src/main/webapp/assets/css文件夹下。

配置

我使用的是Java config而不是XML,下面的代码片段展示了如何配置Sping 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">

pkln4tw6

pkln4tw62#

  • 如果缺少此依赖项,请将其添加到pom.xml文件 *
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

字符串

bwntbbo3

bwntbbo33#

假设您没有禁用**WebMvcAutoConfiguration**
在**webapp目录下创建public文件夹
在您的
JSP**页面上

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

字符串
假设您在public文件夹中样式化.css,即**webapp > public > styles.css**
这里有一个文档描述了如何更详细地使用静态内容。

bzzcjhmw

bzzcjhmw4#

默认情况下,Sping Boot 将从名为src/main/resources/static(或/public或只是/resources或/META-INF/resources)的目录中提供静态内容。当您的项目创建时,Sping Boot 将自动提供src/main/resources下的static文件夹。因此,我将所有静态资源存储在static文件夹中。
在你的情况下,我会把一个style.css文件放在这些文件夹中的每一个文件夹中,然后通过逐个删除它们来开始调试过程,直到.
Source
x1c 0d1x的数据

az31mfrm

az31mfrm5#

试着寻找一个控制器,它的RequestMapping带有一个不是GET的http方法,也就是接受你的style.css请求。这可以是任何没有“value”的请求Map。
当我从jetty迁移到spring Boot 时,就发生了这种情况。在旧的jetty解决方案中,静态内容是从不同的servlet提供的。

o2g1uqev

o2g1uqev6#

我努力将我的静态资源连接到我的jsp页面,这是我最终用来让它与Sping Boot 2. 0一起工作的东西。你可以看到我的属性,也可以看到Map到静态资源(如图像或纯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(“/”)和@GetRequest(“/h”)注解的家庭控制器。

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

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

kwvwclae

kwvwclae7#

在您的application.properties文件中添加:

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

字符串
并确保所有静态文件都位于src/main/resources/static/{css,js,other files} 目录中。
要获取CSS文件,请像这样使用spring uri->

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


然后将其链接为

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

e5nqia27

e5nqia278#

由于Eclipse在最初的问题中被提及,因此我链接到这个问题:Java class getResource() with eclipse
有时,当从eclipse运行spring Boot jar时,正确的配置将无法工作。这可以通过添加“main\resources”文件夹来手动运行配置classpath来解决(“运行配置”->“Classpath选项卡”->“用户条目”)

相关问题