2009-07-10 7 views

risposta

83

Utilizzare il metodo getResourceAsStream() sull'oggetto ServletContext, ad es.

servletContext.getResourceAsStream("/WEB-INF/myfile"); 

Come si ottiene un riferimento al ServletContext dipende dalla vostra applicazione ... vuoi farlo da un servlet o JSP da un?

MODIFICATO: se ci si trova all'interno di un oggetto servlet, chiamare getServletContext(). Se ti trovi in ​​JSP, utilizza la variabile predefinita application.

+11

Se ci si trova all'interno di Servlet, è possibile utilizzare direttamente getServletContext(). :) –

+1

Ah sì, buon punto. – skaffman

+1

È inoltre possibile raggiungere il servletContext da request-> session-> servletContext. Nel caso, tutto ciò che hai è un oggetto richiesta. –

5

Ecco come funziona per me senza l'utilizzo di Servlet.

Diciamo che sto cercando di accedere web.xml nel progetto/WebContent/WEB-INF/web.xml

  1. Nel progetto proprietà Source-scheda Aggiungi cartella di origine puntando al contenitore principale per WEB cartella -INF (nel mio caso WebContent)

  2. Ora usiamo class loader:

    InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml") 
    
0

Il problema con cui ho avuto accesso al file sqlite db che ho creato nel mio server java (jersey) era dovuto esclusivamente al percorso. Alcuni documenti dicono che l'url jdbc connect dovrebbe essere simile a "jdbc: sqlite: //path-to-file/sample.db". Ho pensato che la doppia barra fosse parte di un percorso in stile protocollo htt e si sarebbe mappata correttamente una volta implementata, ma in realtà è un percorso assoluto o relativo. Quindi, quando ho inserito il file nella radice della cartella WebContent (progetto tomcat), un uri come questo ha funzionato "jdbc: sqlite: sample.db".

L'unica cosa che mi stava lanciando era che quando stavo scavalcando il debugger, ho ricevuto un messaggio che diceva "apertura db: ... autorizzazione negata". Ho pensato che fosse una questione di permessi di file system o forse di permessi utente SQL. Dopo aver scoperto che SQLite non ha il concetto di ruoli/permessi come MySQL, ecc, alla fine ho cambiato i permessi dei file prima di arrivare a quella che credo fosse la soluzione corretta, ma penso che fosse solo un cattivo messaggio (es. permesso negato, invece di File non trovato).

Spero che questo aiuti qualcuno.

+0

Aggiornamento rapido. Questo ha funzionato in Eclipse, ma non è riuscito a una distribuzione effettiva nella mia istanza Tomcat.Questo è ciò che ha funzionato in entrambi i posti: –

+0

Siamo spiacenti, non ha aggiunto le modifiche in tempo. Questo ha funzionato sia in Eclipse che quando è stato distribuito nell'istanza di tomcat: Contesto ServletContext di ; DBConnection = DriverManager.getConnection ("jdbc: sqlite:" + context.getRealPath ("sample.db")); –

Problemi correlati