Comment puis-je servir html statique de printemps de démarrage?
J'ai couru le spring-boot-échantillon-web-static projet de ici, fait de cette modification de la pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
Et ajouté cette classe pour servir une double page index2.html de la même static
emplacement de dossier:
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class Rester {
@RequestMapping(value = "/rand", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
private RandomObj jsonEndpoint() {
return new RandomObj();
}
@RequestMapping(value = "/tw")
public String somePg() {
return "index2";
}
}
Le json url fonctionne bien, mais quand j'essaie d'accéder à localhost:8080/tw j'obtiens une page blanche, et cette erreur dans la console:
2017-02-22 15:37:22.076 ERROR 21494 --- [nio-8080-exec-9] o.s.boot.web.support.ErrorPageFilter : Cannot forward to error page for request [/tw] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false
Je fais quelque chose de mal?
vous n'avez pas vraiment besoin de tomcat dépendance, printemps starter web & thymeleaf devrait le faire.
OriginalL'auteur osmingo | 2017-02-22
Vous devez vous connecter pour publier un commentaire.
Fichiers statiques doivent être servis à partir de ressources, pas de contrôleur.
réf:
https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot
https://spring.io/guides/gs/serving-web-content/
vérifier mon deuxième réf lien, ou si tu ne veux pas gérer les paramètres: stackoverflow.com/a/27279742/3862022
J'ai du ajouter de printemps-amorçage-starter-thymeleaf et seulement consulter les fichiers dans le répertoire des modèles, je pense que je l'ai eu, merci
merci! J'ai créé les dossiers
resources/static
, mettre unindex.html
fichier et ça fonctionne, tout simplement!Seul le travail en IDE, si la mise en liberté dans le jar ne fonctionne
OriginalL'auteur csenga
Au Printemps de démarrage,
/META-INF/resources/
,/resources/
,static/
etpublic/
répertoires sont disponibles pour servir les contenus statiques.De sorte que vous pouvez créer un
static/
oupublic/
répertoire sousresources/
répertoire et de mettre votre contenu statique. Et ils seront accessibles par:http://localhost:8080/your-file.ext
. (en supposant que leserver.port
est 8080)Vous pouvez personnaliser ces répertoires à l'aide de
spring.resources.static-locations
dans leapplication.properties
.Par exemple:
Maintenant, vous pouvez utiliser
custom/
dossier sousresources/
pour servir les fichiers statiques.OriginalL'auteur Hamid Mohayeji
Je suis en utilisant
:: Spring Boot :: (v2.0.4.
LIBÉRATION
) with Spring Framework 5
Contenu Statique
Par défaut, Spring Boot sert du contenu statique à partir d'un répertoire nommé /static (ou /public ou /ressources ou /META-INF/ressources) dans le classpath ou à partir de la racine de la ServletContext. Il utilise le ResourceHttpRequestHandler de Spring MVC, de sorte que vous pouvez modifier ce comportement en ajoutant votre propre
WebMvcConfigurer
et en remplaçant laaddResourceHandlers
méthode.Par défaut, les ressources sont mappés sur
/**
et situé sur/static
répertoire.Mais vous pouvez personnaliser la statique zones par programmation à l'intérieur de notre contexte web de configuration de la classe.
Au Printemps de chaque demande de passer par la DispatcherServlet. Pour éviter les demande de dossier par DispatcherServlet(Avant contolleur) nous configurer MVC Le contenu statique.
Comme
@STEEL
dit statique ressources ne doivent pas passer par le Contrôleur.Thymleaf
est un ViewResolver qui prend le nom de la vue formulaire de contrôleur et ajouteprefix
etsuffix
de Vue de la Couche.OriginalL'auteur Yash
Vous pouvez rapidement servir du contenu statique en JAVA Spring-boot Application via
thymeleaf
(ref: source)Je suppose que vous avez déjà ajouté le Printemps de Démarrage plugin
apply plugin: 'org.springframework.boot'
et de la nécessairebuildscript
Puis aller de l'avant et AJOUTER thymeleaf à votre
build.gradle
==>Permet de supposer que vous avez ajouté home.html à
src/main/resources
Pour servir de ce fichier, vous aurez besoin de créer un contrôleur.
C'est tout ! Maintenant, redémarrez votre gradle serveur.
./gradlew bootRun
OriginalL'auteur STEEL
vous pouvez voir la
spring boot official
exemple dans lespring boot
projet, nomméspring-boot-sample-web-static
.Tout d'abord, vous avez besoin
extends SpringBootServletInitializer
;Deuxièmement, vous avez besoin
override
de la configuration de la méthode dans le débutApplication
classeOriginalL'auteur user3172755