Passage servlet -> JSP, et mappage web.xml [Problème] - Java - Programmation
Marsh Posté le 28-09-2003 à 20:01:59
Marsh Posté le 28-09-2003 à 21:57:38
premier truc à tester : est ce que ca marche si tu mets tes jsp dans le rep WEB-INF ? il me semble que c'est possible mais j'en suis vraiment pas sûr ...
2e solution qui marche à coup sûr :
tu créés un rep (/jsp/ par exemple) dans lequel tu mets tes jsp. Tu écris un filtre (javax.servlet.ServletFilter je crois) que tu mappe sur le rep jsp (/jsp/*). Ce filtre vérifira l'existence de l'attribut "javax.servlet.forward.request_uri". Si il n'existe pas, la requête vers la JSP est directe => tu retourne un 404 ou un accessdenied (je sais plus le code). Si il est présent, ca signifie que la requête a été dispatchée => le filtre fait l'execution normale ...
3e solution :
tu mets un serveur web (apache par exemple) devant et c'est lui qui interdit l'accès au répertoire /jsp
Marsh Posté le 29-09-2003 à 09:32:33
benou a écrit : Si il n'existe pas, la requête vers la JSP est directe => tu retourne un 404 ou un accessdenied (je sais plus le code). |
403
Marsh Posté le 29-09-2003 à 11:19:10
mettre les jsp dans le web-inf, ça marche.
Marsh Posté le 29-09-2003 à 12:02:20
Merci pour ces réponses
Je vais essayer de partir sur les filtres, ça se sera l'occasion d'essayer qq chose de nouveau (j'ai cru en voir dans les examples de sources).
Pour la 3ème solution, je n'avais pas pensé à utiliser le mod_rewrite d'Apache, shame on me
Marsh Posté le 28-09-2003 à 16:40:46
Bonjour, pour les besoins d'un serveur perso (Tomcat5 sous Linux) je me retrouve confronté à un problème.
Pour planter le décor, j'ai une application Java qui fonctionne de la manière suivante : une servlet récuppère toutes les requêtes (car mappée en /foo/* dans le web.xml). Après quelques traitements sans histoires par d'autres servlets, je voudrais passer la main à une JSP chargée de cracher le code XHTML au client.
La difficulté est que je voudrais interdire l'accès direct aux pages JSP depuis l'extérieur. J'ai commencé par placer les JSP dans un dossier {webapp}/foo/JSP, mais visiblement à cause du mappage /foo/* -> EntryServlet du web.xml, un
retombe (à cause du mappage du web.xml) sur la servlet EntryServlet. Pour info j'utilise ce mappage car je voudrais attaquer l'application avec des requêtes ayant des URI du type : /foo/logs/2003/09/28/fe0/txErrors
Si je place les JSP dans un dossier non mappé par le web.xml tous se passe bien, mais alors les JSP sont accessibles directement depuis l'extérieur
En bref, je veux empêcher mes JSP d'être accessibles depuis un appel direct de l'extérieur, tout en les ayant accessibles depuis une servlet (avec les méthodes forward ou include).