Acesso a arquivos da aplicação

3 respostas
M

Olá Pessoal,

Minha dúvida é a seguinte: estou fazendo uma pequena aplicação web com Servlets/JSP e utilizando o Eclipse como ambiente de desenvolvimento. A minha aplicação deve acessar alguns arquivos .properties que armazenam informações para utilização de um Banco de Dados, porém eu ńão sei onde eu deve colocar esses arquivos dentro da estrutura de diretórios da minha aplicação web. Já tentei colocar dentro do WEB-INF/lib, WEB-INF/classes, mas o método que tenta acesso a esses arquivos sempre lança uma excessão. Tentei colocar o caminho absoluto e funcionou, ou seja, o problema esta na especificação do caminho relativo a minha aplicação.

Bom é isso.
Se alguém puder ajudar eu agradeço.

Até mais

3 Respostas

B

Ola,

Seguinte, o WEB-INF/classes é o root do seu classpath, então se vc colocar algo lá, vc deve ler como root, assim:
Estrutura:

Projeto
  WEB-INF
    classes
      my_properties.properties

this.getClass().getResource("/my_properties.properties");

Saca?

M

Bom

Acho que entendi a parte que o diretório WEB-INF/classes é o root da minha classpath. Isso quer dizer que se tentar acessar um arquivo, passando um caminho relativo, esse vai pegar como raíz o WEB-INF/classes?

E este método Class.getResource() o que ele faz exatamente, retorna o caminho absoluto do que foi passado como parâmetro?

Bem, obrigado por enquanto.

B

Ola,

Exatamente, quando vc passa para este getClass().getResource() do jeito que te mostrei ele considera o root o WEB-INF/classes, e relação ao que o metodo retorna dá uma olhada na documentação, que está no link ae.

No caso, para vc ler um arquivo .properties, vc pode passar o retorno do metodo para o load da classe Properties que ela lê tudo, ex.:
//Considerando o exemplo de leitura anterior
....

Properties p = new Properties();
p.load(this.getClass().getResourceAsStream("/my_properties.properties")); 
//pronto, ele  leu os properties do arquivo
...
Criado 30 de junho de 2008
Ultima resposta 30 de jun. de 2008
Respostas 3
Participantes 2