2016-02-03 2 views
0

J'ai déployé une application Web au localhost:8080/Project avec Project étant le nom du contexte. La webapp redirige correctement l'utilisateur vers l'index.jsp.référence d'un fichier css dans une application Web déployée

Mais le fichier css de cet index.jsp est introuvable (erreur 404).

index.jsp contient cette référence:

<html lang="en"> 
<head> 
    <link href="../css/style.css" rel="stylesheet"> 
</head> 
</html> 

Mon projet a la structure suivante dans le dossier WEB-INF:

WEB-INF/views/index.jsp 
WEB-INF/css/style.css 

J'ai aussi essayé d'appeler directement le fichier css via url localhost:8080/Project/css/style.css mais cela n'a pas fonctionné aussi bien. J'ai déplacé le dossier css de niveau supérieur (au même niveau que WEB-INF) comme suggéré. Le problème persiste toujours. Dois-je exclure les URL commençant par /css dans ce @Controller? Ou peut-être que je suis sur un mauvais chemin ...

@Controller 
@RequestMapping("/") 
public class IndexController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String sayHello(ModelMap model) { 
     return "index"; 
    } 
} 

Répondre

1

Le navigateur chargé localhost:8080/Project puis continue à charger ../css/style.css par rapport à cette URL, donc en essayant de charger localhost:8080/css/style.css qui ne semble pas fonctionner.

Vous ne devez pas placer des ressources Web telles que CSS, JS et des images sous /WEB-INF car elles ne sont pas accessibles depuis cet emplacement. Au lieu d'utiliser quelque chose comme

WEB-INF/views/index.jsp 
css/style.css 

et dans le JSP écrire

<link href="css/style.css" rel="stylesheet"> 
+0

changé le poste orginal avec des informations supplémentaires – Vjeetje

+0

@Vjeetje en cas de printemps, vous devez également configurer la mise en correspondance de votre statique ressources, voir http://stackoverflow.com/questions/8195213/spring-3-mvc-resources-and-tag-mvcresources – wero

1

WEB-INF est un dossier privé qui est inaccessible par URL, mais est accessible par le code servlets Java. Vous devriez mettre votre html, css, js dans le même niveau de dossier que le dossier WEB-INF. Autrement dit, placez-les à côté de WEB-INF, et non à l'intérieur.

donc un dossier webapp typique ressemblera

*Name of webapp* 
    |-js 
    |-index.js 
    |-css 
    |-style.css 
    |-index.html 
    |-WEB-INF 
    |-private files... 

Ensuite, essayez

<link href="css/style.css" rel="stylesheet"> 
+0

Thx pour le conseil :) J'ai ajouté le dossier css un niveau comme vous l'avez suggéré. Le problème persiste toujours. Peut-être que cela a quelque chose à voir avec mon @Controller que j'ai défini? J'ai changé le message original avec des informations supplémentaires. – Vjeetje