有很多关于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
答案 0 :(得分:1)
将诸如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/");
}
}
<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文件,并通过逐个删除它们来开始调试过程,直到......你知道。
答案 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.htmlhttp://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”文件夹来手动运行配置类路径来解决此问题(“运行配置”->“类路径选项卡”->“用户条目”)