Servlet, problema com Paths

7 respostas
Jedi_FeniX

Tenho uma servlet que abre um arquivo e gostaria de deixar o path relativo. Atualmente eu abro o arquivo assim: nomeDaAplicação/pasta/arquivo.txt.
Gostaria de saber se tem como tirar o “nomeDaAplicação” deixar o path desta maneira, “pasta/arquivo.txt” ? Porque se algum dia mudar o nome da aplicação terá que mudar o código.

7 Respostas

lmprates

Você poderia deixar o nome e caminho do arquivo dinâmicos, ou seja, colocar eles eu um xml ou properties, essa seria a melhor opção na minha opnião.

Para ler sem colocar o o nome da aplicação tente /pasta/arquivo.txt e coloque a pasta dentro da pasta WEB-INF, se não me engano já fiz algo parecido.

Jedi_FeniX

A pasta que eu quero acessar já está dentro de WEB-INF e já tentei colocar desta maneira também, “pasta/arquivo” e não rodou.
O arquivo de configuração já existe e estou querendo mudar esta parte, acho que isso ficaria melhor no código direto, sem precisar mudar…

lcegatti

Tenta

request.getContextPath()+"/pasta/seuArquivo.txt";

Ele retorna o contexto de sua aplicação, nesse caso fica independente, se mudar o nome da aplicação não terá problemas … :thumbup:

[]'s

Jedi_FeniX

Desculpa galera, esqueci de informar que a servlet chama outro objeto, que é este quem vai abrir o arquivo, então, não tem como eu usar este método dentro da outra classe, porque ela não é um Servlet.

lmprates

pasta/arquivo.txt não funcionou, mas você tentou com “/” na frente: “/pasta/arquivo.txt” ?

Caso não funcione, uma alternativa seria colocar o nome da aplicação nos parâmetros de inicialização da aplicação e depois recuperá-lo assim :

getServletConfig().getInitParameter("nomeaplicacao");

Claro, depende de qual framework você está utilizando.

lmprates

É só passar um argumento a mais para esta outra classe, com o nome da aplicação.

lcegatti

Não tem como vc pegar o arquivo da sua Servlet e passar um objeto File para o método da outra classe ???

[]'s

Criado 23 de julho de 2008
Ultima resposta 23 de jul. de 2008
Respostas 7
Participantes 3