2010-06-29 6 views
3

J'utilise Tomcat. Je voudrais mettre le fichier de configuration dans WEB-INF au lieu du chemin de la classe racine par défaut qui est WEB-INF/classes. Actuellement, je mets le config.xml dans WEB-INF et utiliser les éléments suivants pour l'adressage relatif localiser:Comment accéder au fichier dans WEB-INF dans JSP?

InputStream input = Thread.currentThread() 
    .getContextClassLoader() 
    .getResourceAsStream("..//config.xml"); 

Est-ce la bonne façon de faire? Ou dois-je d'abord utiliser le getServletContext().getRealPath("config.xml")? Mais je ne sais pas comment obtenir le getServletContext() dans un .java. (J'ai essayé de new HttpServlet pour obtenir getServletContext(), mais comme il est une classe abstraite, ne peut pas être instanciés ... Comment puis-je obtenir le getServletContext()?)

Répondre

6

La méthode getRealPath() est pas garanti, par exemple Si votre application Web n'est pas développée à partir d'un fichier war, il n'y a pas de 'chemin réel' sur le système de fichiers vers un fichier dans le fichier war.

Puisque vous dites que vous utilisez un ServletContextListener, vous pouvez obtenir le ServletContext de la ServletContextEvent:

sce.getServletContext().getResourceAsStream("/WEB-INF/config.xml"); 
2

Vous pouvez utiliser getServletConfig() méthode renvoie une instance de ServletConfig.

ServletContext sc=getServletConfig().getServletContext(); 

EDIT:

public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{ 
    ServletContext sc=getServletContext(); 
    ... 
} 
+1

Merci pour votre réponse. J'ai essayé d'utiliser getServletConfig() dans le fichier .java mais il se plaint "La méthode getServletConfig() est indéfinie pour ...". (Actuellement, ma classe .java implémente ServeletContextListener.) Que dois-je configurer d'autre pour utiliser getServletConfig()? Merci. – Ken

+1

Son dans ServletContextEvent.getServletContext() –

Questions connexes