8
votes

Fichier d'accès dans le dossier WebContent d'un servlet

J'essaie de générer un document PDF à l'aide de FOP. Le code de génération PDF est conservé dans un servlet et le XSL est dans un dossier spécifique dans le dossier WebContent.

Comment puis-je accéder à ce fichier XSL en donnant un chemin relatif? Cela ne fonctionne que si je donne le chemin complet de l'objet de fichier.

Je dois générer du contenu XML de manière dynamique. Comment puis-je donner cette XML générée de manière dynamique comme source au lieu d'un objet de fichier?

Veuillez fournir vos suggestions.


0 commentaires

3 Réponses :


19
votes

Pour obtenir le chemin, vous pouvez simplement faire:

String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");         


3 commentaires

Ne l'obtenez pas tout à fait. Je ne sais pas ce qui est s ?


@Newbie s est un objet qui implémente servleConfig . httpServlet étend une classe qui implémente servleConfig . Cela signifie que si votre classe s'étend httpservlet , vous pouvez faire this.getservletContext () .


ça ne marche pas pour moi. Si je vérifie que le fichier existe avec un tel chemin, il reviendra de faux. Regardez ma question: Stackoverflow.com/Questtions/36598562/...



6
votes

Pour une implémentation de conteneurs directe et indépendante, vous pouvez accéder à la ressource avec la méthode suivante GETRESOURCE () à l'intérieur de votre servlet:

/ Démarrer le servlet em> / p>

public InputStream getResource(String resourcePath) {
  ServletContext servletContext = getServletContext();
  InputStream openStream = servletContext.getResourceAsStream( resourcePath );
  return openStream;
}

public void testConsume() {
  String path = "WEB-INF/teste.log";
  InputStream openStream = getResource( path );

  int c = -1;
  byte[] bb = new byte[1024];
  while ( -1 != ( c = openStream.read( bb ) ) ) {
    /* consume stream */
  }
  openStream.close();
}


3 commentaires

Malheureusement, je ne suis pas capable de charger la ressource dans le flux. Je reçois l'exception java.net.malformedurxception I imprimée servleContext et son indiquée comme com.ibm.ws.webcontainer.facade.servletcontextfacade@36c29971 Toutes les idées?


Après avoir utilisé servleContext.geterrealpath (FilePath); sa fonctionnement bien :)


Ici, le code fonctionne bien. J'utilise Tomcat 6. *. Maintenant, je vois que vous utilisez IBM Platform. Peut-être que c'est la différence entre les résultats.



1
votes

J'ai utilisé la méthode suivante pour lire le fichier sous le contenu Web xxx

maintenant tout le contenu du fichier est disponible dans l'objet Reader.


0 commentaires