2010-10-08 6 views
2

On suppose une mise en page WAR comme ceci:URL http pour le fichier js à l'intérieur d'une guerre?

 
foo.war 
-->/WEB-INF 
    -->/classes (..) 
    -->/js 
     -->bar.js 
    -->index.jsp 
    -->web.xml 

Supposons maintenant répertoire virtuel de la guerre est/bla sur le serveur example.com (à savoir http://example.com/blah).

Quelle est l'URL HTTP de bar.js, celle qui serait utilisée dans une balise <script src=""> pouvant être utilisée par index.jsp? http://example.com/blah/js/bar.js ne semble pas fonctionner.

Répondre

2

Il n'y a pas d'URL qui pointe vers cela. Tout dans WEB-INF n'est pas exposé au monde extérieur.

Au contraire, si vous avez organisé la mise en page WAR comme ceci:

foo.war 
-->/WEB-INF 
    -->/classes (..) 
    -->web.xml 
-->/js 
    -->bar.js 
-->index.jsp 

Ensuite, vous pouvez accéder à votre Javascript comme http://example.com/blah/js/bar.js.

P.S. Vous ne pourrez pas non plus accéder à index.jsp, comme vous l'avez fait pour le moment.

+0

Merci. J'ai dû mal interprété un lien sur l'emballage en utilisant maven-war-plugin. – Steven

3

Vous devez JAMAIS mettre un JS dans WEB-INF.

Comme indiqué dans les spécifications de servlet, tout ce que vous mettez dans le répertoire WEB-INF ne sera jamais directement accessible au monde extérieur. Seules les ressources d'application locales s'y rendent.

Donc, si vous voulez un fichier JS accessible de l'extérieur, placez-le directement sur WAR ROOT. Quelque chose comme ceci:

foo.war 
-->/js/ 
    -->bar.js 
-->/WEB-INF 
    -->internal resources here 

L'URL pour accéder JS sera quelque chose comme:

http://YOUR_IP:8080/foo/js/bar.js 

Bien sûr, peut varier en fonction de la façon dont vous configurez votre déploiement de guerre sur votre serveur d'applications.

Vous ne cependant mis JSP fichiers dans WEB-INF, pour les appeler de servlets (vous ne pouvez pas y accéder directement non plus) avec quelque chose comme:

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("WEB-INF/index.jsp"); 

Cette est une pratique courante si vous ne voulez pas que les gens accèdent directement à vos fichiers JSP de l'extérieur.

+0

Merci. J'ai dû mal interprété un lien sur l'emballage en utilisant maven-war-plugin. – Steven

Questions connexes