In meinem aktuellen Spring-Boot-Projekt haben meine Ansichten folgende Zeile:
<link href="signin.css" rel="stylesheet"/>
um auf eine statische CSS-Datei zu verweisen. Wenn ich das Projekt ausführe und auf eine der Ansichten zugreife, die auf diese Datei verweisen, wird der Fehler 404 nicht gefunden oder 403 nicht autorisiert angezeigt, je nachdem, wo ich die Datei im Projekt abgelegt habe.
Ich versuche das bisher:
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)
Was ist der richtige Ort, um diese Art von Dateien zu speichern?
quelle
@EnableWebMvc
in Ihrer Anwendung verwendet haben, da dadurch die automatische Konfiguration von Spring MVC durch Spring Boot deaktiviert wird.@EnableWebMvc
eher als ein verwendenWebMvcConfigurerAdapter
?Abgesehen davon, dass Sie es irgendwo darunter platzieren
src/main/resources/static
und nicht verwenden@EnableWebMvc
, müssen Sie den Zugriff auf Ihren Ordnerjs
oder Ihrencss
Ordner autorisieren, insbesondere wenn Siespring-boot-security
in Ihrem Klassenpfad sind. Sie werden so etwas hinzufügen:@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(); } }
Dann in Ihrem HTML:
<link rel="stylesheet" href="/css/bootstrap.min.css"> <script src="/js/bootstrap.min.js"></script>
quelle
Sie können Thymeleaf http://www.thymeleaf.org/ verwenden.
Beispiel
<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>
Denken Sie daran, xmlns und xmlns: th in Ihr HTML-Tag einzufügen.
Überprüfen Sie Ihre application.properties:
spring.resources.add-mappings=true
Wenn dieser Schlüssel auf false gesetzt ist, lädt die Spring Boot-App keine Ressourcen.
quelle
Durch Deaktivieren konnte
@EnableWebMvc
ich das Problem beheben.quelle
Ich benutze Spring-Boot 2.0.2
Ich behalte weiterhin
@EnableWebMvc
Anmerkungen in meinerwebConfig.java
und überschreibeaddResourceHandlers()
Methode, um dem Browser zu helfen, CSS- und Javascript-Dateien über eine http-Anfrage zu erreichen.Dies ist die Struktur des Webanwendungsverzeichnisses
.
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>
hoffe es hilft dir
quelle
registry.addResourceHandler("/WEB-INF/**").addResourceLocations("classpath:/WEB-INF/");
Ich habe festgestellt, dass ich mit /css/signin.css darauf zugreifen kann, wenn ich meine signin.css unter src / main / resources / META-INF / resources / static / css / signin.css ablege
Ich weiß nicht warum.
quelle
In meinem Fall, um Dateien in CSS- und JS-Ordnern wie folgt zu referenzieren:
<script src="js/bootstrap.min.js"></script> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="css/carousel.css" rel="stylesheet">
Ich musste die Ordner in den Webapp-Ordner legen. Ich habe die folgende Ordnerstruktur:
Meine App
-src -main -java -resources -static -templates -webapp -resources -WEB-INF
Ich meine, wenn ich die Ordner css und js im Ressourcenordner (unter main) abgelegt hätte, wäre es gewesen:
<link href="../resources/css/carousel.css" rel="stylesheet"> <link href="../resources/css/bootstrap.min.css" rel="stylesheet"> <script src="../resources/js/bootstrap.min.js"></script>
Wenn ich sie in einen statischen Ordner (unter Ressourcen) lege, funktioniert es nicht.
quelle
Ich benutze Spring-Boot mit Thymeleaf http://www.thymeleaf.org/
Dies ist die Verzeichnisstruktur wie @ Andy Wilkinson Response
Beispiel
<link rel="stylesheet" href="../static/css/w3.css" th:href="@{/css/w3.css}">
quelle
Als ich benutzte:
src/main/resources/static/css.
Meine Ansichten haben diese Zeile:
<link rel="stylesheet" href="/css/signin.css" />
quelle
Verwenden Sie @EnableWebMvc nicht, wenn Sie Spring Boot verwenden und die Federsicherheit überprüfen.
quelle