在我目前的spring-boot项目中,我的观点有这一行:
<link href="signin.css" rel="stylesheet"/>
引用静态css文件。当我运行项目并访问引用此文件的其中一个视图时,我得到404未找到错误或403未经授权的错误,这取决于我将文件放在项目中的位置。
我到目前为止尝试了这个:
src/main/resources/static/css (with this, I use css/signin.css instead of signin.css)
src/main/resources/templates/static/css (with this, I use css/signin.css instead of signin.css)
src/src/main/resources/templates/acesso (same folder of the html file)
存储此类文件的正确位置是什么?
答案 0 :(得分:45)
src/main/resources/static
下面的任何地方都适合静态内容,例如CSS,JavaScript和图片。静态目录由/
提供。例如,src/main/resources/static/signin.css
将从/signin.css
投放,而src/main/resources/static/css/signin.css
将从/css/signin.css
投放。
src/main/resources/templates
文件夹适用于视图模板,这些模板将由模板引擎(如Thymeleaf,Freemarker或Velocity等)转换为HTML。您不应将静态内容放在此目录中。
另外请确保您没有在应用程序中使用@EnableWebMvc
,因为这将禁用Spring Boot的Spring MVC自动配置。
答案 1 :(得分:4)
停用@EnableWebMvc
帮助我解决问题。
答案 2 :(得分:4)
您可以使用Thymeleaf http://www.thymeleaf.org/
实施例
SELECT EXISTS (
SELECT 1 FROM
(SELECT data_id,
backend_status status,
lag(backend_status) OVER w status_1,
lag(backend_status, 2) OVER w status_2
FROM alert_001
WHERE when_captured > current_timestamp - INTERVAL '1 hour'
WINDOW w AS (ORDER BY when_captured)
) last_three
WHERE status <> 200
AND status_1 <> 200
AND status_2 <> 200
);
请记住在html标记中添加xmlns和xmlns:
检查您的application.properties:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<link rel="stylesheet" th:href="@{/css/signin.css}"/>
</head>
<body>
</body>
</html>
如果该密钥设置为false,则spring boot app将不会加载任何资源。
答案 3 :(得分:3)
除了将其置于src/main/resources/static
下方而不使用@EnableWebMvc
之外,您还需要授权访问js
或css
文件夹,特别是如果您有您在类路径中spring-boot-security
。您将添加以下内容:
@Configuration
@EnableWebSecurity
public class MainSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home", "/js/**", "/css/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}
然后在你的HTML中:
<link rel="stylesheet" href="/css/bootstrap.min.css">
<script src="/js/bootstrap.min.js"></script>
答案 4 :(得分:2)
我将Thymeleaf http://www.thymeleaf.org/与Spring-Boot一起使用
这是目录的结构,例如@ {Andy Wilkinson响应
示例
<link rel="stylesheet" href="../static/css/w3.css" th:href="@{/css/w3.css}">
答案 5 :(得分:1)
我发现如果我将signin.css放在src / main / resources / META-INF / resources / static / css / signin.css下,那么我可以使用/css/signin.css访问它
不确定为什么。
答案 6 :(得分:1)
我使用Spring-Boot 2.0.2
我仍然在@EnableWebMvc
中保留webConfig.java
注释并覆盖addResourceHandlers()
方法,以帮助浏览器通过http请求访问css和javascript文件。
这是webapp目录的结构
<强> webConfig.java 强>
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "example.com")
public class WebConfig implements WebMvcConfigurer {
// =======================================
// = Bean Config =
// =======================================
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
// =======================================
// = Override Methods =
// =======================================
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pdfs/**")
.addResourceLocations("/WEB-INF/pdfs/");
registry.addResourceHandler("/css/**")
.addResourceLocations("/WEB-INF/css/");
registry.addResourceHandler("/js/**")
.addResourceLocations("/WEB-INF/js/");
}
}
index.jsp head tag:
<head>
<title>Title</title>
<!-- Custom styles for this template -->
<link href="css/cover.css" rel="stylesheet">
</head>
希望它可以帮到你。
答案 7 :(得分:0)
在我的情况下,引用css和js文件夹中的文件,如下所示:
for (Part part : req.raw().getParts()) {
try (InputStream stream = part.getInputStream()) {
String filename = part.getSubmittedFileName();
// save the input stream to the filesystem, and the filename to a database
}
}
我必须将文件夹放在webapp文件夹中。 我有以下文件夹结构:
MYAPP
<script src="js/bootstrap.min.js"></script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/carousel.css" rel="stylesheet">
我的意思是,如果我将css和js文件夹放在资源文件夹中(在main下),那就是:
-src
-main
-java
-resources
-static
-templates
-webapp
-resources
-WEB-INF
如果我将它们放在静态文件夹中(在资源下)它不起作用。
答案 8 :(得分:0)
当我使用时:
src/main/resources/static/css.
我的观点有这一行:
<link rel="stylesheet" href="/css/signin.css" />
答案 9 :(得分:0)
如果使用Spring Boot并检查Spring安全性,请不要使用@EnableWebMvc。
答案 10 :(得分:0)
将所需文件放在 spring boot 中的静态文件夹中。然后就可以直接访问jsp里面需要的文件了。
希望它对我有用。