2010-11-12 4 views
14

J'ai utilisé Netbeans pour créer une application Spring MVC 3.0. J'ai un contrôleur simple et une vue JSP. La vue JSP s'affiche correctement, sauf pour une image qui ne s'affiche pas. Ma structure de répertoire ressemble à ceci: alt textOù placer des images/CSS dans l'application printemps-mvc?

Dans ma page home.jsp, l'image qui ne rend pas est référencé comme ceci:

<img src="Images/face.png" /> 

J'ai vérifié que face.png est dans la Répertoire des images. Alors pourquoi n'apparaît-il pas dans le navigateur? Dans Spring MVC, où dois-je placer les fichiers référencés par les vues JSP, comme les images, CSS, JS, etc?

Répondre

0

Je crois qu'il ne peut faire référence qu'à des images/css dans le dossier WEB-INF. Déplacer votre dossier Images vers WEB-INF devrait résoudre votre problème.

+0

Cela n'a pas fonctionné. Même essayer d'accéder directement à l'image (http: // localhost: 8080/myapp/Images/face.png) ne fonctionnait pas. Dois-je configurer spring mvc pour pouvoir accéder aux images? – Sajee

+0

Voir cette question: http: // stackoverflow.com/questions/553749/printemps-mvc-webapp-où-stocker-chemins-à-commun-images. Pourrait aider. –

+0

Non, cela m'a encore plus embrouillé. :) Ce que j'essaie de faire devrait être facile sans avoir recours à des thèmes. Peut-être que j'ai un modèle d'URL qui bloque l'accès à tout sauf aux contrôleurs? – Sajee

3

j'ai pu trouver une réponse viable ici: How to handle static content in Spring MVC?

Le problème était que mon servlet ressort répartiteur mvc interceptait les appels vers des ressources statiques. J'ai donc mappé le servlet par défaut de Tomcat pour gérer les ressources statiques.

3

Tout ce qui se trouve dans le dossier Web-Inf sera marqué comme privé et ne pourra pas être accédé par le navigateur. Vous supposez déplacer le dossier d'image en dehors de Web-Inf et sous webapp.

36

Alter votre fichier web.xml:

<servlet> 
    <servlet-name>spring-servlet</servlet-name> 
    <servlet-class>com.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring-servlet</servlet-name> 
    <url-pattern>/<url-pattern> 
</servlet-mapping> 

et ajouter ci-dessous la configuration après:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.js</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.gif</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.jpg</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.png</url-pattern> 
</servlet-mapping> 

Si vous avez une meilleure solution s'il vous plaît partager avec moi.

+0

ça fonctionne comme un charme. !! man.Merci –

+0

@RaviKhakhkhar Pouvez-vous accepter cette réponse si cela a fonctionné pour vous? – Drahakar

+0

@Drahakar: Je n'ai pas posé cette question. Donc, naturellement, je n'ai pas le droit d'accepter cette réponse. J'ai déjà voté. –

1

Pour une image définie dans le fichier jsp dans le cadre Spring MVC:

Vous pouvez simplement votre image par étapes suivantes:

Étape 1. Placer des images dans le dossier que les ressources

Étape 2. écrire image chemin comme: src = "$ {} pageContext.request.contextPath /resources/images/logo.jpg"

0

Je pense que vous pouvez mettre toutes les données statiques tels que l'image, css, etc. javascripts à côté du WEB- INF, puis appelez le manière normale :)

Questions connexes