2017-10-13 2 views
0

Je suis un débutant à l'architecture de démarrage de printemps. Il dit que pour laisser les pages d'index trouver des ressources statiques comme js, nous devons le garder sous "src/main/resources/static".Ajouter Ressources statiques dans le coffre à ressorts

Structure du répertoire:

.html: src/main/webapp/WEB-INF/jsp/

fichiers js: src/main/resources// statiques js/

Ceci est mon page d'index:

<html ng-app="RollbackApp"> 

<head> 
    <title>My Rollback View</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.js"></script> 
    <script type="text/javascript" src = "js/app.js"></script> 
</head> 

<body> 
<div ng-controller="rollbackController"><p> 
    <button ng-click="rollback()">RollBack</button> 
</p></div> 

</body> 
</html> 

Actuellement, la page d'index ne peut pas charger mon "app.js"

Ma Mvc classe de configuration est la suivante:

package com.manoj; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

/** 
* Created by manojma on 10/13/2017. 
*/ 
@Configuration 
@EnableWebMvc 
public class ApplicationWebMvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Override 
    public void addResourceHandlers(final ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/static/"); 
    } 

    @Bean 
    public InternalResourceViewResolver viewResolver() { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/jsp/"); 
     resolver.setSuffix(".html"); 
     return resolver; 
    } 

} 

Je suis incapable de trouver la raison, pourquoi il ne parvient pas à trouver mes fichiers js.

S'il vous plaît aidez-moi avec ceci. !!

+0

non apparentés, mais pourquoi voulez-vous créer votre propre 'ApplicationWebMvcConfig' si boot Spring a déjà un? Si vous souhaitez personnaliser le préfixe/suffixe pour ces JSP, vous pouvez utiliser les propriétés 'spring.mvc.view.prefix' et' spring.mvc.view.suffix'. Et encore plus discutable est la raison pour laquelle vous utilisez des JSPs lorsque vous n'utilisez aucun élément lié à JSP et que vous avez même nommé le suffixe '* .html'. – g00glen00b

+0

L'ajout de spring.mvc.view.prefix dans application.properties ne résout pas mon problème. Alors j'ai cherché autour et trouvé cette solution et cela fonctionne parfaitement pour moi .. Mais le problème est qu'il n'est pas capable de trouver des fichiers js .. Y at-il une méthode dans WebMvcConfigurerAdapter pour ajouter des ressources comme des fichiers js. –

+0

En ce qui concerne la question de "Pourquoi j'utilise Jsps", il est nécessaire d'utiliser spring boot et je trouve un moyen de l'utiliser avec angularjs car la vue de l'application est rendue en utilisant angularjs –

Répondre

1

Le problème est que votre gestionnaire de ressources n'est pas configuré correctement. Vous avez défini /resources/static/ comme emplacement de ressource. Cependant, étant donné que src/main/resources est mis entièrement sur votre chemin de classe, vous devriez laisser la partie /resources. De plus, vous devriez mentionner que vous cherchez sur votre chemin de classe, donc vous devriez probablement utiliser classpath:/static/.

@Override 
public void addResourceHandlers(final ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations("/static/"); 
} 

En plus de cela, vous avez défini le gestionnaire de ressources pour transmettre les demandes à partir de /resources/**. Cela signifie que si vous demandez relativement js/app.js, cela ne fonctionnera pas, car il ne déclenchera pas le gestionnaire de ressources. Vous devez utiliser resources/js/app.js:

<script type="text/javascript" src="resources/js/app.js"></script> 

Cependant, si votre objectif est de simplement servir statiquement des pages HTML, il est beaucoup plus facile de mettre juste les pages HTML dans le dossier src/main/resources/static ainsi. Spring boot sert déjà le index.html par défaut comme the welcome page mais can be customized.

+0

Mettre les ressources dans un dossier statique a fait l'affaire !!! ... Merci. –

0

vous devez être prudent de passer outre la configuration par défaut

je me débattais avec mes ressources statiques reliant à mes pages jsp et ce que je finalement l'habitude de le faire fonctionner avec démarrage Spring 2.0. Vous pouvez voir mes propriétés et aussi à quoi ressemblent les URL lors du mappage vers des ressources statiques telles que des images ou du HTML pur.

Ensuite, nous devons définir le préfixe de template et le suffixe pour nos fichiers JSP dans application.properties. Ainsi ajouter: (le chemin de contexte 'PDX' est facultative et vous pouvez choisir un nom correspondant à votre demande)

spring.mvc.view.prefix=/WEB-INF/jsp/ 
spring.mvc.view.suffix=.jsp 
server.servlet.context-path=/pdx 

http://localhost:8080/pdx/images/thedocks.jpg accès aux ressources statiques dans src/main/resources/statique/images/thedocks.jpg

http://localhost:8080/pdx/ charge le fichier index.html dans s rc/main/resources/static/index.html

http://localhost:8080/pdx/css/home.css charges classe en s css rc/main/resources/statique/css/home.css

http://localhost:8080/pdx/h charge mon contrôleur de la maison avec @Controller ("/") et @GetRequest («/h ") annotations.

ma page jsp charge l'image statique comme celui-ci

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