Développer une application Struts 2 I Expliquez-moi dans un problème suivant. J'ai besoin de lire un fichier texte déployé dans Web Server avec mon application. Comment puis-je y accéder à la connaissance de son chemin relatif? En d'autres termes, comment puis-je trouver un chemin absolu si je connais un chemin relatif à l'intérieur du répertoire déployé. Lorsque j'avais un problème similaire avec des servlets, j'avais l'habitude d'utiliser cela.getContextPath () (ou quelque chose de similaire) qui a renvoyé un chemin absolu vers le dossier du serveur Web.
Edit:
Merci les gars de la réponse. Pour moi, a travaillé ceci: p> Pourriez-vous expliquer pourquoi j'ai fonctionné parce que je fais des premiers pas en Java. P> P>
4 Réponses :
ici p>
Vous semblez savoir quoi faire de là. P> servletageContext.getservletContext () code> p>
Yeap. Le problème que si j'essaie de le lire dans une constante, il retournera null. Cela semble une décision de conception incorrecte.
S'il est placé dans la classe de classe WebApp, il suffit d'utiliser:
String path=GetPointsOfInterestAction.class.getResource("../../../resources/visitor_attractions.txt")
Si le fichier est sur la classe de classe (ce qui n'est pas clair, mais ce serait une bonne idée), je suggérerais d'utiliser la classe utilitaire org.apache.struts2.util.classLoaderautils code>
. De sa documentation Java: P>
Cette classe est extrêmement utile pour charger des ressources et des classes de manière tolérante de défaut qui fonctionne à travers différents serveurs d'applications. p> blockQuote>
Payer une attention particulière au
ClassloaderUtils.GeResourceastream (String ResourceName, Classe CallingClass) >
Méthode statique qui est une méthode de commodité pour charger un ressource comme un flux. Comme documenté, l'algorithme utilisé pour trouver la ressource est donné dansgettressource () code>
: p>Cette méthode essaiera de charger le ressource utilisant les méthodes suivantes (dans l'ordre): p>
- de
thread.CurrentThread (). GetContextClassloader () Code> Li>
- à partir de
classloaderautil.class.getclassloader () code> li>
- à partir du
appelingclass.getclassloader () code> li> ul> blockQuote>