3 Stimmen

Wie greife ich in JSP auf die Datei in WEB-INF zu?

Ich verwende Tomcat. Ich würde die Konfigurationsdatei gerne in WEB-INF anstelle des Standardpfads der Root-Klasse, der lautet WEB-INF/classes . Derzeit habe ich die config.xml en WEB-INF und verwenden Sie die folgende relative Adressierung, um sie zu finden:

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

Ist dies die richtige Vorgehensweise?

Oder soll ich die getServletContext().getRealPath("config.xml") zuerst? Aber ich weiß nicht, wie ich die getServletContext() in einem .java . (Ich habe versucht, die new HttpServlet zur Erlangung getServletContext() aber da es sich um eine abstrakte Klasse handelt, kann sie nicht instanziert werden... wie kann ich die getServletContext() ?)

6voto

krock Punkte 27758

Die Methode getRealPath() ist nicht garantiert, dass es funktioniert, z.B. wenn Ihre Webapp nicht aus einer War-Datei erweitert wird, gibt es keinen "echten Pfad" im Dateisystem zu einer Datei innerhalb der War-Datei.

Da Sie sagen, Sie verwenden eine ServletContextListener können Sie den ServletContext aus der Datei ServletContextEvent :

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

2voto

KV Prajapati Punkte 91877

Sie können verwenden getServletConfig() Methode eine Instanz von ServletConfig zurück.

ServletContext sc=getServletConfig().getServletContext();

EDIT:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X