Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [JAVA - JSP - JSTL] Utilizzo file di properties non erogabili tramite url

    Ciao a tutti.

    Avrei la necessità di leggere da file di properties alcune proprietà.
    Ho provato a leggerle cosi come si fa in applicazioni stand-alone, ma mi dice che non trova il file, ovvero:

    Properties properties = new Properties();
    FileInputStream is = new FileInputStream("file.properties");
    properties.load(is);
    is.close();

    non trova il file indicato, nemmeno se lo metto in tutte le dir del contesto.
    Ho provato ad accedere al file tramite url, http://nome_hostorta/contesto/nome_file. In questo modo viene correttamente visualizzato.

    Quello che voglio ottenere io, è leggere determinate entry da file di properties e che tale file non sia pubblicato all'esterno, ovvero non vorrei che sia possibile leggerne il contenuto inserendone l'url.

    Avete quanlche info o dritta che potrebbe essermi utile?

    Grazie mille!

  2. #2
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    metti il file di proprieta' dentro la cartella WEB-INF (o una sua sottocartella) del tuo application server (o servlet container), in questo modo non e' accessibile attraverso nessun url..
    Invece il modo che usi per caricare il file mi sembra corretto, probabilmente devi solo specificare la posizione completa del file nel file system. Eventualmente vedi se riesci in qualche modo a specificare un percorso relativo al context della tua applicazione, che mi sembra un po' piu' carino

  3. #3
    Ciao,

    come ti è stato (giustamente) segnalato mettilo sotto WEB-INF/ della tua webapp; per leggerlo:

    Codice PHP:
    Properties p = new Properties();
    p.loadcontext.getResourceAsStream("/WEB-INF/file.properties") ); 
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  4. #4
    grazie mille ad entrambi!
    provo e vi faccio sapere !!!

    grazie ancora per la risosta!
    Ciao.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    16
    codice:
    Properties properties = new Properties();
    FileInputStream is = new FileInputStream("file.properties");  properties.load(is);
    is.close();
    Con questa sintassi accedi al File System, ma senza specificare il path per raggiungere il file.
    Invece con getResourceAsStream() il server restituisce un URL relativo al contesto e dovrebbe funzionare.

    Un'altra soluzione è:
    codice:
    String path = getServletContext().getRealPath("/");
    String nomeFile = path + "/WEB-INF/file.properties";
    FileInputStream is = new FileInputStream(nomeFile);
    Un'altra ancora valida però solo con Tomcat:
    codice:
    String base = System.getProperties("catalina.base");
    String nomeFile = base + "/webapps/contesto/WEB-INF/file.properties";
    FileInputStream is = new FileInputStream(nomeFile);

  6. #6
    sconsiglio di usare i suggerimenti che fanno uso di path assoluti. Infatti alcuni Servlet Container (compreso tomcat) possono usare WAR non esplosi. In questi casi non c'è garanzia che usare il path assoluto funzioni, mentre la soluzione che fa uso di context.getResourceAsStream sì...

    ciao
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    16
    In linea di massima sono d'accordo con ivenuti.
    Ci sono casi però in cui bisogna scendere a compromessi.
    Con getResourceAsStream() si può solo leggere un file che esiste nel nostro contesto.
    Se invece il file dobbiamo scriverlo e non esiste qual'è la
    soluzione migliore ???

  8. #8
    secondo me, in quel caso, è meglio appoggiarlo fuori dal contesto dell'applicazione (e in tal caso usare i path assoluti non è un problema: il problema nasce dall'uso congiunto di contesto e path assoluti).

    p.s ovviamente meglio, quando si usano i path assoluti, metterlo in qualche parte configurabile (o DB oppure web.xml)

    ciao
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  9. #9
    vi ringrazio perchè sono riuscito a riprodurre entrambe le situazioni. il tutto è ancora una bozza, non so ancora quale soluzione seglierò, ma sono propenso a non utilizzare path assoluti.

    Grazie ancora, ciao!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.